tako-cli 0.3.10 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -276,7 +276,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
276
276
|
<%s {...props} />
|
|
277
277
|
React keys must be passed directly to JSX without using spread:
|
|
278
278
|
let props = %s;
|
|
279
|
-
<%s key={someKey} {...props} />`,WA,bA,hB,bA),kA[bA+WA]=!0)}if(bA=null,DA!==void 0&&(C(DA),bA=""+DA),H(NA)&&(C(NA.key),bA=""+NA.key),"key"in NA){DA={};for(var TB in NA)TB!=="key"&&(DA[TB]=NA[TB])}else DA=NA;return bA&&M(DA,typeof f==="function"?f.displayName||f.name||"Unknown":f),u(f,bA,DA,F(),hA,GB)}function k(f){W(f)?f._store&&(f._store.validated=1):typeof f==="object"&&f!==null&&f.$$typeof===GA&&(f._payload.status==="fulfilled"?W(f._payload.value)&&f._payload.value._store&&(f._payload.value._store.validated=1):f._store&&(f._store.validated=1))}function W(f){return typeof f==="object"&&f!==null&&f.$$typeof===z}var z=Symbol.for("react.transitional.element"),$=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),v=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),r=Symbol.for("react.context"),FA=Symbol.for("react.forward_ref"),MA=Symbol.for("react.suspense"),wA=Symbol.for("react.suspense_list"),ZA=Symbol.for("react.memo"),GA=Symbol.for("react.lazy"),s=Symbol.for("react.activity"),XA=Symbol.for("react.client.reference"),qA=CD.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,JA=Object.prototype.hasOwnProperty,KA=Array.isArray,BB=console.createTask?console.createTask:function(){return null};CD={react_stack_bottom_frame:function(f){return f()}};var IA,_A={},OA=CD.react_stack_bottom_frame.bind(CD,N)(),rA=BB(g(N)),kA={};Dv.Fragment=O,Dv.jsxDEV=function(f,NA,DA,WA){var hA=1e4>qA.recentlyCreatedOwnerStacks++;return X(f,NA,DA,WA,hA?Error("react-stack-top-frame"):OA,hA?BB(g(f)):rA)}})()});function Fv({message:B,defaultValue:I,onResult:C}){let[g,F]=hW.useState(I);return QQ((N,H)=>{if(H.leftArrow||H.rightArrow||N==="h"||N==="l"){F((M)=>!M);return}if(N==="y"||N==="Y"){C(!0);return}if(N==="n"||N==="N"){C(!1);return}if(H.return){C(g);return}if(H.escape){C(!1);return}}),lI.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[lI.jsxDEV(h,{gap:1,children:[lI.jsxDEV(R,{color:"yellow",bold:!0,children:"?"},void 0,!1,void 0,this),lI.jsxDEV(R,{bold:!0,children:B},void 0,!1,void 0,this)]},void 0,!0,void 0,this),lI.jsxDEV(h,{marginTop:1,gap:3,children:[lI.jsxDEV(h,{gap:1,children:lI.jsxDEV(R,{color:g?"green":void 0,bold:g,inverse:g,children:g?" Yes ":" Yes "},void 0,!1,void 0,this)},void 0,!1,void 0,this),lI.jsxDEV(h,{gap:1,children:lI.jsxDEV(R,{color:!g?"red":void 0,bold:!g,inverse:!g,children:!g?" No ":" No "},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),lI.jsxDEV(h,{marginTop:1,children:lI.jsxDEV(R,{dimColor:!0,children:"\u2190\u2192 \u5207\u6362 y/n \u5FEB\u6377\u9009\u62E9 Enter \u786E\u8BA4 Esc \u53D6\u6D88"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function bW(B){return new Promise((I)=>{let C=null;C=ED(lI.jsxDEV(Fv,{message:B.message,defaultValue:B.defaultValue??!0,onResult:(g)=>{C?.clear(),C?.unmount(),C=null,I(g)}},void 0,!1,void 0,this))})}var hW,lI;var fW=c(async()=>{await RI();hW=YA(FB(),1),lI=YA(_B(),1)});var lW={};F0(lW,{showRegionInfo:()=>kH,getNpmRegistry:()=>aI,getMirrors:()=>dW,getLatestBunVersion:()=>cW,getBunMirrorDownloadUrl:()=>qH,getBunInstallCommand:()=>XH,detectRegion:()=>tC,MIRRORS:()=>O1});import{readFileSync as wv,writeFileSync as Gv,mkdirSync as Nv}from"fs";import{join as xW}from"path";import{homedir as pW}from"os";function Jv(){let B=process.env.TAKO_REGION?.trim().toLowerCase();if(B==="cn"||B==="china")return"cn";if(B==="global"||B==="intl"||B==="international")return"global";return null}function Mv(){try{let B=wv(iW,"utf-8"),I=JSON.parse(B);if(I.region!=="cn"&&I.region!=="global")return null;if(typeof I.detectedAt!=="number")return null;if(Date.now()-I.detectedAt>Hv)return null;return I.region}catch{return null}}function jW(B){try{Nv(xW(pW(),".tako"),{recursive:!0}),Gv(iW,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function Uv(){try{let I=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(I)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(I))return"cn"}}catch{}let B=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(B.startsWith("zh_cn")||B.startsWith("zh-cn"))return"cn";return null}async function Lv(){if(d3)return d3;return d3=(async()=>{let I=[uv,Kv,Rv,Wv].map((C)=>C().then((g)=>g?g:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((g,F)=>setTimeout(()=>F(Error("net-timeout")),1200))])}catch{return"cn"}})(),d3}async function tC(){if($2)return $2;let B=Jv();if(B)return $2=B,B;let I=Mv();if(I)return $2=I,I;let C=Uv();if(C)return $2=C,jW(C),C;let g=await Lv();return $2=g,jW(g),g}async function uv(){try{let B=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Kv(){try{let B=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).country==="CN"?"cn":"global"}catch{return null}}async function Rv(){try{let B=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Wv(){let B=[async()=>{let I=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.json(),g=C?.data?.location;if(Array.isArray(g)&&g[0]==="\u4E2D\u56FD")return"cn";let F=C?.data?.country_code;return F==="CN"?"cn":F?"global":null},async()=>{let I=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.text();try{let g=JSON.parse(C.trim());if(g.proCode&&/^\d{6}$/.test(g.proCode))return"cn"}catch{}return null},async()=>{let I=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!I.ok)return null;let C=(await I.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(C))return"cn";return null}];try{return await Promise.any(B.map((I)=>I().then((C)=>C??Promise.reject())))}catch{return null}}async function dW(){let B=await tC();return O1[B]}async function aI(){return(await dW()).npm}function XH(){return"curl -fsSL https://bun.sh/install | bash"}async function cW(){let B=O1.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let g=(await I.json()).map((F)=>F.name.replace(/\/$/,"")).filter((F)=>/^bun-v\d+\.\d+\.\d+$/.test(F)).sort((F,N)=>{let H=F.replace("bun-v","").split(".").map(Number),M=N.replace("bun-v","").split(".").map(Number);for(let U=0;U<3;U++)if(H[U]!==M[U])return M[U]-H[U];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function qH(){let B=O1.cn.bunBinary,I=await cW(),g={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",F=process.arch==="arm64"?"aarch64":"x64",N=`bun-${g}-${F}`;return`${B}/${I}/${N}.zip`}async function kH(){let B=await tC(),I=O1[B];if(B==="cn")nA.info(`${jA("region.usingChinaMirror")} npm: ${I.npm}`);else nA.info(jA("region.usingGlobalMirror"))}var $2=null,d3=null,iW,Hv=2592000000,O1;var y2=c(()=>{kQ();eE();iW=xW(pW(),".tako","region.json"),O1={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Yv=class{constructor(B){this.baseUrl=B.baseUrl,this.headers={"Content-Type":"application/json",...B.defaultHeaders},this.maxRetries=B.maxRetries??3,this.initialRetryDelay=B.initialRetryDelay??500}async resolveHeaders(){let B={};for(let[I,C]of Object.entries(this.headers)){let g=await C;g!==null&&(B[I]=g)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,g){try{let F=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(F.status===401)return null;if(F.status!==200&&F.status!==202)throw Error(`HTTP error! status: ${F.status}`);let N=await F.text();return N?JSON.parse(N):null}catch(F){if(g<this.maxRetries){let N=this.initialRetryDelay*2**g;return await new Promise((H)=>setTimeout(H,N)),this.post(B,I,C,g+1)}return console.error("Max retries reached:",F),null}}async fetch(B,I,C={}){let g=`${this.baseUrl}${B}`;return this.post(g,I,C,0)}},aW=class{constructor(B){this.groups=[],this.queue=[],this.options=B;let I={"openpanel-client-id":B.clientId};B.clientSecret&&(I["openpanel-client-secret"]=B.clientSecret),I["openpanel-sdk-name"]=B.sdk||"node",I["openpanel-sdk-version"]=B.sdkVersion||"1.3.1",this.api=new Yv({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(B){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||B.type==="replay"&&!this.sessionId)}addQueue(B){B.type==="track"&&(B.payload.properties={...B.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(B)}async send(B){if(this.options.filter&&!this.options.filter(B))return Promise.resolve();if(this.shouldQueue(B))return this.addQueue(B),Promise.resolve();let I=await this.api.fetch("/track",B,{keepalive:B.type!=="replay"});this.deviceId=I?.deviceId;let C=!!this.sessionId;return this.sessionId=I?.sessionId,!C&&this.sessionId&&this.flush(),I}setGlobalProperties(B){this.global={...this.global,...B}}track(B,I){this.log("track event",B,I);let{groups:C,profileId:g,...F}=I??{},N=[...new Set([...this.groups,...C??[]])];return this.send({type:"track",payload:{name:B,profileId:g??this.profileId,groups:N.length>0?N:void 0,properties:{...this.global??{},...F}}})}identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),B.profileId&&Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}upsertGroup(B){return this.log("upsert group",B),this.send({type:"group",payload:B})}setGroup(B){return this.log("set group",B),this.groups.includes(B)||(this.groups=[...this.groups,B]),this.send({type:"assign_group",payload:{groupIds:[B],profileId:this.profileId}})}setGroups(B){return this.log("set groups",B),this.groups=[...new Set([...this.groups,...B])],this.send({type:"assign_group",payload:{groupIds:B,profileId:this.profileId}})}alias(B){}increment(B){return this.send({type:"increment",payload:B})}decrement(B){return this.send({type:"decrement",payload:B})}revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}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(B){if(B.type==="replay")return B.payload;if(B.type==="track"){let I="groups"in B.payload?B.payload.groups??[]:[],C=[...new Set([...this.groups,...I])];return{...B.payload,profileId:B.payload.profileId??this.profileId,groups:C.length>0?C:void 0}}return B.type==="identify"||B.type==="increment"||B.type==="decrement"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.type==="assign_group"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.payload}flush(){let B=[];for(let I of this.queue){if(this.shouldQueue(I)){B.push(I);continue}let C=this.buildFlushPayload(I);this.send({...I,payload:C})}this.queue=B}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var oW=()=>{};function nW(){if(!T2)T2=new aW({clientId:Zv,clientSecret:Xv,apiUrl:qv});return T2}function rW(B,I,C){let g=nW().track(B,{profileId:I,...C}).catch(()=>{});c3.push(g)}function sW(B,I){let{email:C,...g}=I,F=nW().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});c3.push(F)}async function tW(){if(await Promise.allSettled(c3),c3.length=0,T2){try{T2.flush()}catch{}T2=null}}var Zv="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",Xv="sec_1e0ea34016bc3a5f8ef5",qv="https://op.shiroha.tech/api",T2=null,c3;var eW=c(()=>{oW();c3=[]});function AY(){return{cli_version:kv,platform:process.platform,arch:process.arch,locale:G0(),node_version:process.version}}function BY(B){return Bun.hash(B).toString(16).slice(0,8)}var kv="0.3.10";var zH=c(()=>{kQ()});async function QY(){if(v2!==null)return v2;try{return v2=(await AB()).telemetryEnabled!==!1,v2}catch{return v2=!1,!1}}async function IY(){try{let B=await AB();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,g=C?I.find((F)=>F.id===C):I[0];if(g){if(g.apiId)return g.apiId;if(g.email)return g.email;return g.id}return"anonymous"}catch{return"anonymous"}}async function h0(){if(OH)return;try{if(!await QY())return;let B=await AB(),I=await IY();if(I==="anonymous")return;let g=(B.providers??[]).find((N)=>N.email)?.email,F=await tC();sW(I,{...g?{email:g}:{},region:F,locale:G0(),first_seen_version:zv,platform:process.platform,arch:process.arch}),OH=!0}catch{}}function PQ(B,I){Ov(B,I).catch(()=>{})}async function Ov(B,I){try{if(!await QY())return;let C=await IY();rW(B,C,{...AY(),...I})}catch{}}async function S1(){await tW()}function EC(){v2=null,OH=!1}var zv="0.3.10",OH=!1,v2=null;var uE=c(()=>{eW();sB();y2();kQ();zH();zH()});function Tv(B,I){let C=[];if(I.phase)C.push(I.phase);if(I.pkgCount>0)C.push(`\u5DF2\u5904\u7406 ${I.pkgCount} \u4E2A\u5305`);return C.push(`${I.elapsedSec}s`),`${B} \xB7 ${C.join(" \xB7 ")}`}async function l3(B,I,C){let g=Date.now(),F={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},N=[],H=()=>{F.elapsedSec=Math.floor((Date.now()-g)/1000),C(Tv(I,F))};H();let M=setInterval(H,1000),U=(X)=>{if(!X)return;if(N.push(X),Sv.test(X))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(EY.test(X)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let k=X.match(EY);if(k)F.pkgCount=parseInt(k[1],10)}else if($v.test(X))F.phase="\u5199\u5165 lockfile";else if(yv.test(X))F.phase="\u5B8C\u6210";H()},u=async(X)=>{if(!X)return;let k=X.getReader(),W=new TextDecoder,z="";try{while(!0){let{done:$,value:O}=await k.read();if($)break;z+=W.decode(O,{stream:!0}).replace(/\r/g,"");let v=z.split(`
|
|
279
|
+
<%s key={someKey} {...props} />`,WA,bA,hB,bA),kA[bA+WA]=!0)}if(bA=null,DA!==void 0&&(C(DA),bA=""+DA),H(NA)&&(C(NA.key),bA=""+NA.key),"key"in NA){DA={};for(var TB in NA)TB!=="key"&&(DA[TB]=NA[TB])}else DA=NA;return bA&&M(DA,typeof f==="function"?f.displayName||f.name||"Unknown":f),u(f,bA,DA,F(),hA,GB)}function k(f){W(f)?f._store&&(f._store.validated=1):typeof f==="object"&&f!==null&&f.$$typeof===GA&&(f._payload.status==="fulfilled"?W(f._payload.value)&&f._payload.value._store&&(f._payload.value._store.validated=1):f._store&&(f._store.validated=1))}function W(f){return typeof f==="object"&&f!==null&&f.$$typeof===z}var z=Symbol.for("react.transitional.element"),$=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),v=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),r=Symbol.for("react.context"),FA=Symbol.for("react.forward_ref"),MA=Symbol.for("react.suspense"),wA=Symbol.for("react.suspense_list"),ZA=Symbol.for("react.memo"),GA=Symbol.for("react.lazy"),s=Symbol.for("react.activity"),XA=Symbol.for("react.client.reference"),qA=CD.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,JA=Object.prototype.hasOwnProperty,KA=Array.isArray,BB=console.createTask?console.createTask:function(){return null};CD={react_stack_bottom_frame:function(f){return f()}};var IA,_A={},OA=CD.react_stack_bottom_frame.bind(CD,N)(),rA=BB(g(N)),kA={};Dv.Fragment=O,Dv.jsxDEV=function(f,NA,DA,WA){var hA=1e4>qA.recentlyCreatedOwnerStacks++;return X(f,NA,DA,WA,hA?Error("react-stack-top-frame"):OA,hA?BB(g(f)):rA)}})()});function Fv({message:B,defaultValue:I,onResult:C}){let[g,F]=hW.useState(I);return QQ((N,H)=>{if(H.leftArrow||H.rightArrow||N==="h"||N==="l"){F((M)=>!M);return}if(N==="y"||N==="Y"){C(!0);return}if(N==="n"||N==="N"){C(!1);return}if(H.return){C(g);return}if(H.escape){C(!1);return}}),lI.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[lI.jsxDEV(h,{gap:1,children:[lI.jsxDEV(R,{color:"yellow",bold:!0,children:"?"},void 0,!1,void 0,this),lI.jsxDEV(R,{bold:!0,children:B},void 0,!1,void 0,this)]},void 0,!0,void 0,this),lI.jsxDEV(h,{marginTop:1,gap:3,children:[lI.jsxDEV(h,{gap:1,children:lI.jsxDEV(R,{color:g?"green":void 0,bold:g,inverse:g,children:g?" Yes ":" Yes "},void 0,!1,void 0,this)},void 0,!1,void 0,this),lI.jsxDEV(h,{gap:1,children:lI.jsxDEV(R,{color:!g?"red":void 0,bold:!g,inverse:!g,children:!g?" No ":" No "},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),lI.jsxDEV(h,{marginTop:1,children:lI.jsxDEV(R,{dimColor:!0,children:"\u2190\u2192 \u5207\u6362 y/n \u5FEB\u6377\u9009\u62E9 Enter \u786E\u8BA4 Esc \u53D6\u6D88"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function bW(B){return new Promise((I)=>{let C=null;C=ED(lI.jsxDEV(Fv,{message:B.message,defaultValue:B.defaultValue??!0,onResult:(g)=>{C?.clear(),C?.unmount(),C=null,I(g)}},void 0,!1,void 0,this))})}var hW,lI;var fW=c(async()=>{await RI();hW=YA(FB(),1),lI=YA(_B(),1)});var lW={};F0(lW,{showRegionInfo:()=>kH,getNpmRegistry:()=>aI,getMirrors:()=>dW,getLatestBunVersion:()=>cW,getBunMirrorDownloadUrl:()=>qH,getBunInstallCommand:()=>XH,detectRegion:()=>tC,MIRRORS:()=>O1});import{readFileSync as wv,writeFileSync as Gv,mkdirSync as Nv}from"fs";import{join as xW}from"path";import{homedir as pW}from"os";function Jv(){let B=process.env.TAKO_REGION?.trim().toLowerCase();if(B==="cn"||B==="china")return"cn";if(B==="global"||B==="intl"||B==="international")return"global";return null}function Mv(){try{let B=wv(iW,"utf-8"),I=JSON.parse(B);if(I.region!=="cn"&&I.region!=="global")return null;if(typeof I.detectedAt!=="number")return null;if(Date.now()-I.detectedAt>Hv)return null;return I.region}catch{return null}}function jW(B){try{Nv(xW(pW(),".tako"),{recursive:!0}),Gv(iW,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function Uv(){try{let I=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(I)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(I))return"cn"}}catch{}let B=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(B.startsWith("zh_cn")||B.startsWith("zh-cn"))return"cn";return null}async function Lv(){if(d3)return d3;return d3=(async()=>{let I=[uv,Kv,Rv,Wv].map((C)=>C().then((g)=>g?g:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((g,F)=>setTimeout(()=>F(Error("net-timeout")),1200))])}catch{return"cn"}})(),d3}async function tC(){if($2)return $2;let B=Jv();if(B)return $2=B,B;let I=Mv();if(I)return $2=I,I;let C=Uv();if(C)return $2=C,jW(C),C;let g=await Lv();return $2=g,jW(g),g}async function uv(){try{let B=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Kv(){try{let B=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).country==="CN"?"cn":"global"}catch{return null}}async function Rv(){try{let B=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!B.ok)return null;return(await B.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Wv(){let B=[async()=>{let I=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.json(),g=C?.data?.location;if(Array.isArray(g)&&g[0]==="\u4E2D\u56FD")return"cn";let F=C?.data?.country_code;return F==="CN"?"cn":F?"global":null},async()=>{let I=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.text();try{let g=JSON.parse(C.trim());if(g.proCode&&/^\d{6}$/.test(g.proCode))return"cn"}catch{}return null},async()=>{let I=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!I.ok)return null;let C=(await I.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(C))return"cn";return null}];try{return await Promise.any(B.map((I)=>I().then((C)=>C??Promise.reject())))}catch{return null}}async function dW(){let B=await tC();return O1[B]}async function aI(){return(await dW()).npm}function XH(){return"curl -fsSL https://bun.sh/install | bash"}async function cW(){let B=O1.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let g=(await I.json()).map((F)=>F.name.replace(/\/$/,"")).filter((F)=>/^bun-v\d+\.\d+\.\d+$/.test(F)).sort((F,N)=>{let H=F.replace("bun-v","").split(".").map(Number),M=N.replace("bun-v","").split(".").map(Number);for(let U=0;U<3;U++)if(H[U]!==M[U])return M[U]-H[U];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function qH(){let B=O1.cn.bunBinary,I=await cW(),g={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",F=process.arch==="arm64"?"aarch64":"x64",N=`bun-${g}-${F}`;return`${B}/${I}/${N}.zip`}async function kH(){let B=await tC(),I=O1[B];if(B==="cn")nA.info(`${jA("region.usingChinaMirror")} npm: ${I.npm}`);else nA.info(jA("region.usingGlobalMirror"))}var $2=null,d3=null,iW,Hv=2592000000,O1;var y2=c(()=>{kQ();eE();iW=xW(pW(),".tako","region.json"),O1={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Yv=class{constructor(B){this.baseUrl=B.baseUrl,this.headers={"Content-Type":"application/json",...B.defaultHeaders},this.maxRetries=B.maxRetries??3,this.initialRetryDelay=B.initialRetryDelay??500}async resolveHeaders(){let B={};for(let[I,C]of Object.entries(this.headers)){let g=await C;g!==null&&(B[I]=g)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,g){try{let F=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(F.status===401)return null;if(F.status!==200&&F.status!==202)throw Error(`HTTP error! status: ${F.status}`);let N=await F.text();return N?JSON.parse(N):null}catch(F){if(g<this.maxRetries){let N=this.initialRetryDelay*2**g;return await new Promise((H)=>setTimeout(H,N)),this.post(B,I,C,g+1)}return console.error("Max retries reached:",F),null}}async fetch(B,I,C={}){let g=`${this.baseUrl}${B}`;return this.post(g,I,C,0)}},aW=class{constructor(B){this.groups=[],this.queue=[],this.options=B;let I={"openpanel-client-id":B.clientId};B.clientSecret&&(I["openpanel-client-secret"]=B.clientSecret),I["openpanel-sdk-name"]=B.sdk||"node",I["openpanel-sdk-version"]=B.sdkVersion||"1.3.1",this.api=new Yv({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(B){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||B.type==="replay"&&!this.sessionId)}addQueue(B){B.type==="track"&&(B.payload.properties={...B.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(B)}async send(B){if(this.options.filter&&!this.options.filter(B))return Promise.resolve();if(this.shouldQueue(B))return this.addQueue(B),Promise.resolve();let I=await this.api.fetch("/track",B,{keepalive:B.type!=="replay"});this.deviceId=I?.deviceId;let C=!!this.sessionId;return this.sessionId=I?.sessionId,!C&&this.sessionId&&this.flush(),I}setGlobalProperties(B){this.global={...this.global,...B}}track(B,I){this.log("track event",B,I);let{groups:C,profileId:g,...F}=I??{},N=[...new Set([...this.groups,...C??[]])];return this.send({type:"track",payload:{name:B,profileId:g??this.profileId,groups:N.length>0?N:void 0,properties:{...this.global??{},...F}}})}identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),B.profileId&&Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}upsertGroup(B){return this.log("upsert group",B),this.send({type:"group",payload:B})}setGroup(B){return this.log("set group",B),this.groups.includes(B)||(this.groups=[...this.groups,B]),this.send({type:"assign_group",payload:{groupIds:[B],profileId:this.profileId}})}setGroups(B){return this.log("set groups",B),this.groups=[...new Set([...this.groups,...B])],this.send({type:"assign_group",payload:{groupIds:B,profileId:this.profileId}})}alias(B){}increment(B){return this.send({type:"increment",payload:B})}decrement(B){return this.send({type:"decrement",payload:B})}revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}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(B){if(B.type==="replay")return B.payload;if(B.type==="track"){let I="groups"in B.payload?B.payload.groups??[]:[],C=[...new Set([...this.groups,...I])];return{...B.payload,profileId:B.payload.profileId??this.profileId,groups:C.length>0?C:void 0}}return B.type==="identify"||B.type==="increment"||B.type==="decrement"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.type==="assign_group"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.payload}flush(){let B=[];for(let I of this.queue){if(this.shouldQueue(I)){B.push(I);continue}let C=this.buildFlushPayload(I);this.send({...I,payload:C})}this.queue=B}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var oW=()=>{};function nW(){if(!T2)T2=new aW({clientId:Zv,clientSecret:Xv,apiUrl:qv});return T2}function rW(B,I,C){let g=nW().track(B,{profileId:I,...C}).catch(()=>{});c3.push(g)}function sW(B,I){let{email:C,...g}=I,F=nW().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});c3.push(F)}async function tW(){if(await Promise.allSettled(c3),c3.length=0,T2){try{T2.flush()}catch{}T2=null}}var Zv="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",Xv="sec_1e0ea34016bc3a5f8ef5",qv="https://op.shiroha.tech/api",T2=null,c3;var eW=c(()=>{oW();c3=[]});function AY(){return{cli_version:kv,platform:process.platform,arch:process.arch,locale:G0(),node_version:process.version}}function BY(B){return Bun.hash(B).toString(16).slice(0,8)}var kv="0.3.12";var zH=c(()=>{kQ()});async function QY(){if(v2!==null)return v2;try{return v2=(await AB()).telemetryEnabled!==!1,v2}catch{return v2=!1,!1}}async function IY(){try{let B=await AB();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,g=C?I.find((F)=>F.id===C):I[0];if(g){if(g.apiId)return g.apiId;if(g.email)return g.email;return g.id}return"anonymous"}catch{return"anonymous"}}async function h0(){if(OH)return;try{if(!await QY())return;let B=await AB(),I=await IY();if(I==="anonymous")return;let g=(B.providers??[]).find((N)=>N.email)?.email,F=await tC();sW(I,{...g?{email:g}:{},region:F,locale:G0(),first_seen_version:zv,platform:process.platform,arch:process.arch}),OH=!0}catch{}}function PQ(B,I){Ov(B,I).catch(()=>{})}async function Ov(B,I){try{if(!await QY())return;let C=await IY();rW(B,C,{...AY(),...I})}catch{}}async function S1(){await tW()}function EC(){v2=null,OH=!1}var zv="0.3.12",OH=!1,v2=null;var uE=c(()=>{eW();sB();y2();kQ();zH();zH()});function Tv(B,I){let C=[];if(I.phase)C.push(I.phase);if(I.pkgCount>0)C.push(`\u5DF2\u5904\u7406 ${I.pkgCount} \u4E2A\u5305`);return C.push(`${I.elapsedSec}s`),`${B} \xB7 ${C.join(" \xB7 ")}`}async function l3(B,I,C){let g=Date.now(),F={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},N=[],H=()=>{F.elapsedSec=Math.floor((Date.now()-g)/1000),C(Tv(I,F))};H();let M=setInterval(H,1000),U=(X)=>{if(!X)return;if(N.push(X),Sv.test(X))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(EY.test(X)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let k=X.match(EY);if(k)F.pkgCount=parseInt(k[1],10)}else if($v.test(X))F.phase="\u5199\u5165 lockfile";else if(yv.test(X))F.phase="\u5B8C\u6210";H()},u=async(X)=>{if(!X)return;let k=X.getReader(),W=new TextDecoder,z="";try{while(!0){let{done:$,value:O}=await k.read();if($)break;z+=W.decode(O,{stream:!0}).replace(/\r/g,"");let v=z.split(`
|
|
280
280
|
`);z=v.pop()??"";for(let d of v)U(d)}if(z)U(z)}finally{k.releaseLock()}};try{await Promise.all([u(B.stderr),u(B.stdout)])}finally{clearInterval(M)}return N.join(`
|
|
281
281
|
`)}var Sv,EY,$v,yv;var SH=c(()=>{Sv=/^Resolving dependencies/,EY=/^Resolved, downloaded and extracted \[(\d+)\]/,$v=/^Saved lockfile/,yv=/^(\d+) packages? installed/});import{join as mQ}from"path";function vv(B){return B.startsWith(GE)}function CY(B){return{...process.env,BUN_CONFIG_REGISTRY:B,BUN_INSTALL_CACHE_DIR:CN}}async function _v(){try{if(!await Bun.file(iQ).exists())return null;let I=Bun.spawn([iQ,"--version"],{stdout:"pipe",stderr:"pipe"});if(await I.exited,I.exitCode!==0)return null;return(await new Response(I.stdout).text()).trim()}catch{return null}}async function gY(){return await _v()!==null}async function Vv(){if(process.platform==="win32")return!0;try{let I=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await I.exited,I.exitCode===0)return!0}catch{}nA.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let B=["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 I of B)try{let C=Bun.spawn(["bash","-c",`sudo ${I} 2>/dev/null || ${I}`],{stdout:"pipe",stderr:"pipe"});if(await C.exited,C.exitCode===0)return!0}catch{}return!1}async function Pv(B){let I=await import("fs/promises"),{join:C}=await import("path"),g=process.platform==="win32",F=g?"bun.exe":"bun",N=await qH();nA.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${N}`);let H=await fetch(N);if(!H.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${H.status}`);let M=C(B,"bun-download.zip");await Bun.write(M,H);let U=C(B,"bin");if(await I.mkdir(U,{recursive:!0}),g){let X=`Expand-Archive -Path "${M}" -DestinationPath "${B}" -Force`,k=Bun.spawn(["powershell","-Command",X],{stdout:"pipe",stderr:"pipe"});if(await k.exited,k.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let X=Bun.spawn(["unzip","-oq",M,"-d",B],{stdout:"pipe",stderr:"pipe"});if(await X.exited,X.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let u=await I.readdir(B);for(let X of u){let k=C(B,X);if((await I.stat(k)).isDirectory()&&X.startsWith("bun-")){let z=C(k,F);try{if(await I.access(z),await I.rename(z,C(U,F)),!g)await I.chmod(C(U,F),493);await I.rm(k,{recursive:!0,force:!0});break}catch{}}}return await I.rm(M,{force:!0}),!0}async function mv(){let B=pg();if(!await Vv())return nA.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await kH(),B.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(GE,{recursive:!0}),await tC()==="cn")await Pv(GE);else if(process.platform==="win32"){let g=`$env:BUN_INSTALL="${GE}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",g],{stdout:"inherit",stderr:"inherit"}).exited!==0)return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let g=`BUN_INSTALL="${GE}" ${XH()}`;if(await Bun.spawn(["bash","-c",g],{stdout:"inherit",stderr:"inherit"}).exited!==0)return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return gD=iQ,B.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),nA.info(`\u5B89\u88C5\u4F4D\u7F6E: ${GE}`),!0}catch(I){return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function hv(){if(await gY())return gD=iQ,!0;return nA.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),nA.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await mv()}async function KE(){if(gD){if(!vv(gD))gD=iQ;return gD}if(await gY())return gD=iQ,iQ;return iQ}async function VH(B){try{let I=await aI(),C=await fetch(`${I}/${B}/latest`);if(!C.ok)return null;return(await C.json()).version}catch{return null}}async function bv(B){return(await AB()).installedClients[B.id]?.version||null}async function fv(B,I){let C=mQ(B,"node_modules",I,"package.json");try{return await Bun.file(C).exists()}catch{return!1}}async function DY(B){let I=sE(B.id);return fv(I,B.package)}async function FY(B){let I=await bv(B);if(!I)return!0;let C=await VH(B.package);if(!C)return!1;return I!==C}function wY(B){let{platform:I,arch:C}=process,g=`${I}-${C}`;for(let[F,N]of Object.entries(B))if(F.endsWith(g))return{pkg:F,version:N};return null}async function GY(B,I,C,g){let F=mQ(I,"node_modules",B.package,"package.json");try{let N=Bun.file(F);if(!await N.exists())return;let M=(await N.json()).optionalDependencies;if(!M||typeof M!=="object")return;let U=wY(M);if(!U)return;let X=process.platform==="win32"?`${B.command}.exe`:B.command,k=mQ(I,"node_modules",U.pkg,X),W=Bun.file(k);if(await W.exists()&&W.size>1024)return;nA.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${U.pkg}...`);for(let z of[U.version,"latest"]){let $=Bun.spawn([C,"add",`${U.pkg}@${z}`],{cwd:I,stdout:"pipe",stderr:"pipe",env:CY(g)});if(await $.exited,$.exitCode===0)break;if(z==="latest"){let O=await new Response($.stderr).text();nA.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${O.slice(0,200)}`)}}}catch(N){nA.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${N instanceof Error?N.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function TH(B,I){let C=await import("fs/promises"),g=mQ(I,"node_modules",B.package,"package.json");try{let F=Bun.file(g);if(!await F.exists())return!1;let N=await F.json(),H=N.optionalDependencies;if(!H)return!0;let M=wY(H);if(!M)return nA.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let U=N.bin,u=typeof U==="string"?U:U?.[B.command];if(!u)return!1;let X=mQ(I,"node_modules",B.package,u),k=process.platform==="win32",W=k?`${B.command}.exe`:B.command,z=mQ(I,"node_modules",M.pkg,W),$=Bun.file(z);if(await $.exists()&&$.size>1024){if(await Bun.write(X,$),!k)await C.chmod(X,493);return!0}let O=mQ(I,"node_modules",B.package,"install.cjs");if(await Bun.file(O).exists()){nA.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let d=await KE(),l=Bun.spawn([d,O],{cwd:mQ(I,"node_modules",B.package),stdout:"pipe",stderr:"pipe"});if(await l.exited,l.exitCode!==0){let FA=await new Response(l.stderr).text();nA.warn(`postinstall \u5931\u8D25: ${FA.slice(0,200)}`)}let r=Bun.file(X);if(await r.exists()&&r.size>1024){if(!k)await C.chmod(X,493);return!0}}nA.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let v=await aI();for(let d of[M.version,"latest"])try{let l=await fetch(`${v}/${M.pkg}/${d}`);if(!l.ok)continue;let FA=(await l.json()).dist?.tarball;if(!FA)continue;let MA=mQ(uQ,".tmp-extract-"+Date.now());await C.mkdir(MA,{recursive:!0});let wA=mQ(MA,"pkg.tgz"),ZA=Bun.spawn(["curl","-fsSL","-o",wA,FA],{stdout:"pipe",stderr:"pipe"});if(await ZA.exited,ZA.exitCode!==0){let KA=await new Response(ZA.stderr).text();nA.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${KA.slice(0,200)}`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{});continue}let GA=Bun.file(wA).size;if(GA<1024){nA.warn(`\u4E0B\u8F7D\u6587\u4EF6\u5F02\u5E38 (${GA} bytes, url: ${FA.slice(0,100)})`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{});continue}let s=Bun.spawn(["tar","xzf",wA,"-C",MA,`package/${W}`],{stdout:"pipe",stderr:"pipe"});await s.exited;let XA=mQ(MA,"package",W),qA=Bun.file(XA);if(await qA.exists()&&qA.size>1024){if(await Bun.write(X,qA),!k)await C.chmod(X,493);return await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{}),!0}let JA=await new Response(s.stderr).text();nA.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${GA} bytes, exit=${s.exitCode}): ${JA.slice(0,200)}`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{})}catch(l){nA.warn(`\u4E0B\u8F7D\u5931\u8D25: ${l instanceof Error?l.message:"\u672A\u77E5\u9519\u8BEF"}`)}if(v!=="https://registry.npmjs.org")try{let d=`https://registry.npmjs.org/${M.pkg}/-/${M.pkg.split("/").pop()}-${M.version}.tgz`;nA.info("\u6B63\u5728\u4ECE npmjs.org \u76F4\u8FDE\u4E0B\u8F7D...");let l=mQ(uQ,".tmp-extract-"+Date.now());await C.mkdir(l,{recursive:!0});let r=mQ(l,"pkg.tgz"),FA=Bun.spawn(["curl","-fsSL","-o",r,d],{stdout:"pipe",stderr:"pipe"});if(await FA.exited,FA.exitCode===0&&Bun.file(r).size>1024){await Bun.spawn(["tar","xzf",r,"-C",l,`package/${W}`],{stdout:"pipe",stderr:"pipe"}).exited;let wA=Bun.file(mQ(l,"package",W));if(await wA.exists()&&wA.size>1024){if(await Bun.write(X,wA),!k)await C.chmod(X,493);return await C.rm(l,{recursive:!0,force:!0}).catch(()=>{}),!0}}await C.rm(l,{recursive:!0,force:!0}).catch(()=>{})}catch{}return!1}catch(F){return nA.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${F instanceof Error?F.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function vH(B,I=!1){let C=pg(),g=sE(B.id);try{if(!await hv())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 F=await DY(B),N=I||await FY(B);if(F&&!N)return{success:!0};let H=F?"\u66F4\u65B0":"\u5B89\u88C5",M=`\u6B63\u5728${H} ${B.name}`;C.start(M);let U=await import("fs/promises");await U.mkdir(g,{recursive:!0});let u=mQ(g,"package.json");if(!await Bun.file(u).exists())await Bun.write(u,JSON.stringify({name:`tako-${B.id}`,private:!0,dependencies:{}},null,2));let k=await KE(),W=await aI(),z=await tC();if(nA.info(`\u7F51\u7EDC\u73AF\u5883: ${z==="cn"?"\u56FD\u5185\uFF08npmmirror\uFF09":"\u6D77\u5916"} | registry: ${W}`),F){let r=mQ(g,"bun.lock");await U.rm(r,{force:!0}).catch(()=>{})}let $=Bun.spawn([k,"add",`${B.package}@latest`],{cwd:g,stdout:"pipe",stderr:"pipe",env:CY(W)}),O=await l3($,M,(r)=>C.update(r));if(await $.exited!==0){if(C.stop(`${H} ${B.name} \u5931\u8D25`),!F)await U.rm(u,{force:!0}).catch(()=>{});return{success:!1,error:O||"\u672A\u77E5\u9519\u8BEF"}}await GY(B,g,k,W),await TH(B,g);let d=await VH(B.package),l=(await AB()).installedClients[B.id]?.version;if(d){let r=await AB();if(r.installedClients[B.id]={version:d,installedAt:new Date().toISOString()},await fg(r),F&&l)PQ("client_updated",{client_id:B.id,from_version:l,to_version:d});else PQ("client_installed",{client_id:B.id,client_version:d})}return C.stop(`${B.name} ${H}\u5B8C\u6210`),{success:!0}}catch(F){return C.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:F instanceof Error?F.message:"\u672A\u77E5\u9519\u8BEF"}}}async function $H(B){try{let I=Bun.file(B);if(!await I.exists())return!0;if(I.size<100)return!0;let g=new Uint8Array(await I.slice(0,4).arrayBuffer());if(g[0]===127&&g[1]===69&&g[2]===76&&g[3]===70)return!1;if(g[0]===254||g[0]===207||g[0]===206||g[0]===202)return!1;if(g[0]===77&&g[1]===90)return!1;return!0}catch{return!0}}async function yH(B){if(B.runtime!=="native")return;let I=sE(B.id),C=mQ(I,"node_modules",B.package,"package.json");try{let g=Bun.file(C);if(!await g.exists())return;let N=(await g.json()).bin;if(!N)return;let H=typeof N==="string"?N:N[B.command];if(!H)return;let M=mQ(I,"node_modules",B.package,H);if(!await $H(M))return;nA.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let U=await KE(),u=await aI();if(await GY(B,I,U,u),!await TH(B,I)||await $H(M)){if(nA.warn("\u539F\u751F\u4E8C\u8FDB\u5236\u4FEE\u590D\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u65B0\u5B89\u88C5..."),await(await import("fs/promises")).rm(I,{recursive:!0,force:!0}),(await vH(B)).success)if(await TH(B,I),await $H(M))nA.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else nA.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else nA.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function NY(B){if(!await DY(B)){let g=await vH(B);if(g.success)await yH(B);return g}if(await yH(B),await FY(B)){let g=await VH(B.package),F=(await AB()).installedClients[B.id]?.version||"\u672A\u77E5",N=g?`${F} \u2192 ${g}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";if(nA.info(`${B.name} \u53D1\u73B0\u66F4\u65B0: ${N}`),await jv(B.id))return nA.info("\u4ECA\u65E5\u5DF2\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};if(!await bW({message:`\u662F\u5426\u66F4\u65B0 ${B.name}\uFF1F`,defaultValue:!1}))return await xv(B.id),nA.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let M=await vH(B,!0);if(M.success)await yH(B);return M}return{success:!0}}async function jv(B){try{let I=Bun.file(_H);if(!await I.exists())return!1;let g=(await I.json())[B];if(!g)return!1;let F=new Date().toISOString().slice(0,10);return g===F}catch{return!1}}async function xv(B){try{let I={},C=Bun.file(_H);if(await C.exists())try{I=await C.json()}catch{}I[B]=new Date().toISOString().slice(0,10),await Bun.write(_H,JSON.stringify(I))}catch{}}var gD=null,_H;var $1=c(async()=>{eE();kI();sB();y2();uE();SH();await fW();_H=mQ(uQ,".update-dismissed.json")});function fH(B,I,C){if(I<=0)return;return{usedPct:Math.min(100,Math.max(0,Math.round(B/I*100))),costUsed:B,costLimit:I,...C?{windowMinutes:C}:{}}}function lv(B,I){if(!Number.isFinite(B)||B<0)return;return{usedPct:0,costUsed:B,...I?{windowMinutes:I}:{}}}async function av(B){try{let I=await fetch(`${rQ}/apiStats/api/user-quota`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B}),signal:AbortSignal.timeout(5000)});if(!I.ok)return null;let C=await I.json();if(!C.plan||!C.usage)return null;return{provider:"tako",status:"ok",primary:fH(C.usage.windowCost??0,C.plan.window_cost_limit??0,C.plan.window_minutes),daily:fH(C.usage.dailyCost??0,C.plan.daily_cost_limit??0),secondary:fH(C.usage.weeklyCost??0,C.plan.weekly_cost_limit??0),fetchedAt:Date.now()}}catch{return null}}async function DD(B){let I=Date.now(),C={provider:"tako",status:"error",fetchedAt:I};if(!B)return{...C,hint:"\u7F3A\u5C11 apiId\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Tako Key",error:"missing_api_id"};let g=await av(B);if(g)return g;try{let F=await fetch(`${rQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B}),signal:AbortSignal.timeout(5000)});if(!F.ok)return{...C,hint:"Tako \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${F.status}`};let N=await F.json(),H=N?.data;if(!N?.success||!H)return{...C,hint:"Tako \u7528\u91CF\u6570\u636E\u683C\u5F0F\u5F02\u5E38",error:"bad_payload"};let M=H.limits?.currentDailyCost??H.usage?.total?.cost??0;return{provider:"tako",status:"ok",daily:lv(M),fetchedAt:I}}catch(F){return{...C,hint:"Tako \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(F.message??F)}}}async function RY(B){let I=await jg();return DD(I)}var jH=c(()=>{sB()});function xH(B){if(!B||typeof B.utilization!=="number")return;return{usedPct:Math.min(100,Math.max(0,Math.round(B.utilization))),resetsAt:B.resets_at??void 0}}function ov(B){return B.authData?.credentials?.claudeAiOauth?.accessToken}async function WY(B){let I=Date.now(),C={provider:"claude-subscription",status:"error",fetchedAt:I},g=ov(B);if(!g)return{...C,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 F=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${g}`,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(5000)});if(F.status===401)return{...C,hint:"Claude OAuth \u5DF2\u8FC7\u671F\uFF1A\u6309 p \u2192 \u9009\u4E2D\u8D26\u53F7 \u2192 d \u2192 \u91CD\u65B0\u767B\u5F55",error:"unauthorized"};if(!F.ok)return{...C,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${F.status}`};let N=await F.json(),H=xH(N.seven_day_opus),M=xH(N.five_hour);if(M)M.windowMinutes=300;let U=xH(N.seven_day);if(U)U.windowMinutes=10080;return{provider:"claude-subscription",status:"ok",primary:M,secondary:U,...H?{modelLimits:{opus:H}}:{},fetchedAt:I}}catch(F){return{...C,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(F.message??F)}}}function YY(B){if(!B||typeof B.used_percent!=="number")return;let I={usedPct:Math.min(100,Math.max(0,Math.round(B.used_percent)))};if(typeof B.reset_at==="number")I.resetsAt=new Date(B.reset_at*1000).toISOString();if(typeof B.limit_window_seconds==="number")I.windowMinutes=Math.round(B.limit_window_seconds/60);return I}function nv(B){let I=B.authData?.tokens;return{accessToken:I?.access_token,accountId:I?.account_id}}async function rv(B,I){if(await Bun.spawn(["which","codex"],{stdout:"pipe",stderr:"pipe"}).exited!==0)return null;let g=await import("fs/promises"),{mkdtemp:F}=g,{tmpdir:N}=await import("os"),{join:H}=await import("path"),M=await F(H(N(),"tako-codex-"));try{let U={auth_mode:"chatgpt",tokens:{access_token:B,...I?{account_id:I}:{}}};await g.writeFile(H(M,"auth.json"),JSON.stringify(U));let u=[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(`
|
|
282
282
|
`)+`
|
|
@@ -775,14 +775,14 @@ ${H}`:N||H}function MN(B,{maxDepth:I=1000,numbersAsFloat:C=!1}={}){if(pF(B)!=="o
|
|
|
775
775
|
`),{args:["--setting-sources","project,local","--settings",g],cleanedFields:M,settingsPath:g}}async function FO(B){let{readClaudeAuth:I,writeClaudeAuth:C}=await Promise.resolve().then(() => (hw(),mw)),{getProviders:g,updateProvider:F}=await Promise.resolve().then(() => (_0(),yL)),N=B.authData?.credentials,H=B.authData?.oauthAccount;if(!N){nA.warn(jA("claudeCode.subscriptionMissingAuth"));return}let M=await I(),U=M.oauthAccount?.emailAddress;if(U&&M.credentials){let k=(await g()).find((W)=>W.type==="claude-subscription"&&W.email===U);if(k){let W={credentials:M.credentials,oauthAccount:M.oauthAccount};if(JSON.stringify(k.authData)!==JSON.stringify(W))await F(k.id,{authData:W})}else if(U!==H?.emailAddress)nA.warn(jA("claudeCode.unknownCurrentAccount",{email:U}))}await C({credentials:N,oauthAccount:H});let u=H?.emailAddress||"?";nA.info(jA("claudeCode.subscriptionSwitched",{email:u}))}var wO={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars(B){let I={CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"},C=B.model?F2(B.model):void 0;switch(B.type){case"claude-subscription":return I;case"tako":return{...I,ANTHROPIC_BASE_URL:`${B.baseUrl}/api`,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"anthropic":return{...I,ANTHROPIC_API_KEY:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"deepseek":return{...I,ANTHROPIC_BASE_URL:ON,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"xiaomi":return{...I,ANTHROPIC_BASE_URL:$N(B.apiKey),ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"custom":return{...I,ANTHROPIC_BASE_URL:B.baseUrl,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};default:return I}},async setupConfigFiles(B,I,C){let g=[];if(C?.forLaunch){let F=await DO();if(F)g=F.args}if(B.type==="claude-subscription")await FO(B);return g.length>0?{args:g}:void 0},launchOptions:(B)=>KO(B)},GO=[{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"]}],NO=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],HO=["deepseek-v4-flash","deepseek-v4-pro"],JO=["mimo-v2.5-pro"];function MO(B){let I=B.match(/^claude-(haiku|sonnet|opus)-(\d{1,2})-(\d{1,2})$/);if(I)return`${I[1].charAt(0).toUpperCase()+I[1].slice(1)} ${I[2]}.${I[3]}`;return zI.find((g)=>g.id===B)?.displayName??B}function F2(B){if(!B)return B;if(B.endsWith("[1m]")||/:1m$/i.test(B))return B;if(!/^(claude|deepseek|kimi|mimo)[-_]/i.test(B))return B;let I=zI.find((C)=>C.id===B);if(!I||I.contextWindow<1e6)return B;return`${B}[1m]`}function TL(B){if(B>=1e6)return"1M";if(B>0)return`${Math.round(B/1000)}k`;return"?"}function UO(B){return/^(gpt[-_]|chatgpt[-_]|o\d+([-_]|$)|davinci[-_]|text-davinci[-_]|openai[-_/])/i.test(B)}function LO(B){if(!B.baseUrl)return null;let I=dC(B.baseUrl,"claude");if(!I||I.length===0)return null;let C=I.filter((g)=>!UO(g.id));if(C.length===0)return null;return C.map((g)=>{let F=F2(g.id);return{id:`model-${g.id}`,label:{en:g.displayName,zh:g.displayName},shortLabel:g.displayName,description:{en:`Use ${g.displayName} (${TL(g.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${g.displayName}\uFF08\u4E0A\u4E0B\u6587 ${TL(g.contextWindow)}\uFF09`},flag:`--model ${F}`,args:[],envVars:{ANTHROPIC_MODEL:F},group:"model"}})}function uO(B){if(HE(),B&&(B.type==="tako"||B.type==="custom")){let g=LO(B);if(g)return g}let I=B?.type==="deepseek"?HO:B?.type==="xiaomi"?JO:NO,C=[];for(let g of I){let N=zI.find((u)=>u.id===g)?.contextWindow??0,H=N>=1e6?"1M":N>0?`${Math.round(N/1000)}k`:"?",M=MO(g),U=F2(g);C.push({id:`model-${g}`,label:{en:M,zh:M},shortLabel:M,description:{en:`Use ${M} (${H} ctx)`,zh:`\u4F7F\u7528 ${M}\uFF08\u4E0A\u4E0B\u6587 ${H}\uFF09`},flag:`--model ${U}`,args:[],envVars:{ANTHROPIC_MODEL:U},group:"model"})}return C}function KO(B){return[...GO,...uO(B)]}E2(wO);kI();import{homedir as RO}from"os";import{join as VL}from"path";var PL=VL(RO(),".gemini"),_L=VL(PL,"settings.json");async function WO(){let B=await import("fs/promises");try{await B.mkdir(PL,{recursive:!0})}catch{}let I={};try{I=JSON.parse(await B.readFile(_L,"utf-8"))}catch{}let C=I.security?.auth||{};if(C.selectedType==="gemini-api-key")return;I.selectedAuthType="gemini-api-key",I.security={...I.security,auth:{...C,selectedType:"gemini-api-key"}},await Bun.write(_L,JSON.stringify(I,null,2)+`
|
|
776
776
|
`)}var YO={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars(B){return{GEMINI_API_KEY:B.apiKey,GOOGLE_GEMINI_BASE_URL:B.baseUrl||"https://tako.shiroha.tech"}},setupConfigFiles:WO};E2(YO);kI();_0();sB();await $1();sB();import{homedir as pv}from"os";var iv=50,PH=3;async function mH(B){try{return(await(await import("fs/promises")).stat(B)).isDirectory()}catch{return!1}}async function HY(B,I,C){let g=await AB(),F=g.recentProjects||[],N=new Date().toISOString(),H=F.findIndex((U)=>U.path===B);if(H>=0){let U=F[H],u=U.clientUsage||{},X=u[I]||{count:0,lastAt:N};F[H]={...U,launchCount:U.launchCount+1,lastLaunchedAt:N,lastClientId:I,clientUsage:{...u,[I]:{count:X.count+1,lastAt:N,lastSelectedOptionIds:C??X.lastSelectedOptionIds}}}}else F.push({path:B,launchCount:1,lastLaunchedAt:N,lastClientId:I,clientUsage:{[I]:{count:1,lastAt:N,lastSelectedOptionIds:C}}});let M=F.sort((U,u)=>new Date(u.lastLaunchedAt).getTime()-new Date(U.lastLaunchedAt).getTime()).slice(0,iv);g.recentProjects=M,await KI(g)}async function a3(B){let C=(await AB()).recentProjects||[],g=process.cwd(),N=C.find((M)=>M.path===g)?.clientUsage?.[B]?.lastSelectedOptionIds;if(N)return N;return C.filter((M)=>M.path!==g&&M.clientUsage?.[B]?.lastSelectedOptionIds).sort((M,U)=>{let u=new Date(M.clientUsage[B].lastAt).getTime();return new Date(U.clientUsage[B].lastAt).getTime()-u})[0]?.clientUsage?.[B]?.lastSelectedOptionIds??[]}function dv(B,I){let C=B.clientUsage?.[I];if(C)return new Date(C.lastAt).getTime();if(B.lastClientId===I)return new Date(B.lastLaunchedAt).getTime();return 0}async function JY(B,I=PH,C=!0){let F=(await AB()).recentProjects||[],N=process.cwd(),M=F.filter((u)=>{if(C&&u.path===N)return!1;return u.clientUsage?.[B]||u.lastClientId===B}).map((u)=>({...u,lastUsedTime:dv(u,B)})).sort((u,X)=>X.lastUsedTime-u.lastUsedTime),U=[];for(let{lastUsedTime:u,...X}of M){if(U.length>=I)break;if(await mH(X.path))U.push(X)}return U}async function MY(){let I=(await AB()).recentProjects||[],C=process.cwd();return I.find((F)=>F.path===C)?.lastClientId||null}function hH(B,I=25){let C=pv(),g=B.startsWith(C)?"~"+B.slice(C.length):B;if(g.length>I){let N=g.split("/").pop()||"";if(N.length>I-4)g="..."+N.slice(-I+3);else g=`.../${N}`}return g}function UY(B){let{t:I}=(kQ(),lk(XL)),C=Date.now(),g=new Date(B).getTime(),F=C-g,N=Math.floor(F/60000),H=Math.floor(F/3600000),M=Math.floor(F/86400000),U=Math.floor(M/7),u=Math.floor(M/30);if(N<1)return I("time.justNow");if(N<60)return I("time.minutesAgo",{n:N});if(H<24)return I("time.hoursAgo",{n:H});if(M===1)return I("time.yesterday");if(M<7)return I("time.daysAgo",{n:M});if(M<30)return I("time.weeksAgo",{n:U});return I("time.monthsAgo",{n:u})}eE();kQ();uE();kI();await $1();var bH="TAKO_WINDOWS_HANDOFF_FILE";function y1(B){return`'${B.replace(/'/g,"''")}'`}function LY(B){if(B.length===0)return"@()";return`@(${B.map(y1).join(", ")})`}function o3(B){let[I,...C]=B.command;if(!I)throw Error("handoff command is empty");let g=["$ErrorActionPreference = 'Stop'","$scriptPath = $PSCommandPath"];for(let[N,H]of Object.entries(B.env??{})){if(H===void 0)continue;if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(N))continue;g.push(`$env:${N} = ${y1(String(H))}`)}g.push(`Set-Location -LiteralPath ${y1(B.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${LY(C)}`,"$code = 0","try {",` & ${y1(I)} @argv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }","} finally {"," Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue");let F=B.relaunchCommand??[];if(F.length>0){let[N,...H]=F;g.push(` $relaunchArgv = ${LY(H)}`,` & ${y1(N)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return g.push("}","exit $code",""),g.join(`\r
|
|
777
777
|
`)}async function uY(B,I){try{let C=I?.projectPath||process.cwd(),g=I?.providerContext,F=process.platform==="win32";if(!g)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let N=await Q2(B);if(!N)N=I2(B);if(!await Bun.file(N).exists()){let{execSync:W}=await import("child_process"),z=F?`where ${B.command}.exe 2>nul || where ${B.command}.cmd 2>nul || where ${B.command}`:`which ${B.command}`;try{let $=W(z,{encoding:"utf8"}).split(`
|
|
778
|
-
`).map((v)=>v.trim().replace(/\r$/,"")).filter(Boolean),O=F?$.find((v)=>v.toLowerCase().endsWith(".exe"))??$.find((v)=>v.toLowerCase().endsWith(".cmd"))??$[0]:$[0];if(O)N=O;else return{success:!1,error:`\u627E\u4E0D\u5230 ${B.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${B.id}`}}catch{return{success:!1,error:`\u627E\u4E0D\u5230 ${B.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${B.id}`}}}let U={...B.getEnvVars(g),...I?.envVars??{}},u={...process.env,...U},X;if(B.runtime==="native")if(F&&N.toLowerCase().endsWith(".js"))X=[await KE(),N];else X=[N];else X=[await KE(),N];if(I?.args&&I.args.length>0)X=[...X,...I.args];if(F&&I?.handoffOnWindows){let W=await import("fs/promises"),z=process.env[bH];if(z)return await W.writeFile(z,o3({command:X,cwd:C,env:U}),"utf8"),{success:!0}}if(F&&I?.relaunchTakoOnWindows){let W=await import("fs/promises"),z=process.env[bH];if(z){let $=[process.argv[0],process.argv[1]].filter((O)=>typeof O==="string"&&O.length>0);return await W.writeFile(z,o3({command:X,cwd:C,env:U,relaunchCommand:$}),"utf8"),{success:!0}}}async function k(){try{if(process.stdin.removeAllListeners(),!F&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}if(F){let W=await import("fs/promises"),{join:z}=await import("path"),{tmpdir:$}=await import("os"),O=z($(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await W.writeFile(O,o3({command:X,cwd:C}),"utf8"),await k();try{let d=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",O],{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited;return{success:d===0,exitCode:d}}catch(v){return await W.rm(O,{force:!0}).catch(()=>{}),{success:!1,error:v instanceof Error?v.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await k(),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(X,{env:u,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(X,{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited}return{success:!0}}catch(C){return{success:!1,error:C instanceof Error?C.message:"\u542F\u52A8\u5931\u8D25"}}}async function cv(B,I){if(I?.providerContext)return I.providerContext;let C=await cI();if(C){let g=await AC(B.id);if(g.some((N)=>N.id===C.id))return SI(C);if(g.length>0)return SI(g[0])}return null}async function n3(B,I){try{let C=I?.projectPath||process.cwd();if(I?.projectPath){if(!await mH(I.projectPath))return{success:!1,error:jA("launcher.directoryNotFound",{path:I.projectPath})}}let g=await NY(B);if(!g.success)return g;let F=await cv(B,I);if(!F)return{success:!1,error:jA("launcher.apiKeyNotConfigured")};let N=[],H={};if(B.setupConfigFiles){let u=await B.setupConfigFiles(F,I?.selectedOptionIds,{forLaunch:!0});if(u&&typeof u==="object")N=u.args??[],H=u.envVars??{}}await HY(C,B.id,I?.selectedOptionIds);let U=(await AB()).installedClients[B.id]?.version;return PQ("client_launched",{client_id:B.id,client_version:U,project_hash:BY(C),is_recent_project:!!I?.projectPath}),nA.info(jA("launcher.starting",{client:B.name})),await uY(B,{...I,args:[...N,...I?.args??[]],envVars:{...H,...I?.envVars??{}},providerContext:F})}catch(C){return{success:!1,error:C instanceof Error?C.message:"Launch failed"}}}kI();kQ();uE();eE();_0();_0();uE();async function r3(B){let I=await AC(B);if(I.length===0)return null;let C=await BC(B);if(C)return SI(C);if(I.length===1)return SI(I[0]);let g=await cI();if(g&&I.some((F)=>F.id===g.id))return SI(g);return SI(I[0])}async function KY(){let B=await aF();if(await oF(B)>0){for(let C of B)PQ("provider_added",{provider_type:C.type,method:"auto_detect"});EC(),h0()}}await RI();var U0=YA(FB(),1);await RI();var IQ=YA(FB(),1);kI();_0();kQ();s3();await RI();var YB=YA(_B(),1),D_=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function yY({zh:B}){return YB.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:2,children:D_.flatMap((I,C)=>{return[C>0?YB.jsxDEV(R,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,YB.jsxDEV(R,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function TY({provs:B,provIdx:I,pickerIdx:C,color:g,zh:F}){return YB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:g,paddingX:2,paddingY:1,children:[YB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),YB.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[B.length===0&&YB.jsxDEV(h,{paddingLeft:1,children:YB.jsxDEV(R,{dimColor:!0,children:F?"\u6682\u65E0\u517C\u5BB9\u6B64\u5DE5\u5177\u7684\u670D\u52A1\u5546":"No compatible providers"},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.map((N,H)=>{let M=C===H,U=H===I;return YB.jsxDEV(h,{paddingLeft:1,children:[YB.jsxDEV(R,{color:M?g:void 0,bold:M,children:M?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:M,color:M?g:void 0,children:[" ",N.name]},void 0,!0,void 0,this),N.email&&YB.jsxDEV(R,{dimColor:!0,children:[" (",N.email,")"]},void 0,!0,void 0,this),U&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},N.id,!0,void 0,this)}),(()=>{let N=C===B.length;return YB.jsxDEV(h,{paddingLeft:1,marginTop:1,children:[YB.jsxDEV(R,{color:N?g:void 0,bold:N,children:N?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:N,color:N?g:void 0,children:[" ","\u2699 ",F?"\u7BA1\u7406\u670D\u52A1\u5546\u2026":"Manage providers\u2026"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})()]},void 0,!0,void 0,this),YB.jsxDEV(yY,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vY({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:N}){let H=I.filter((u)=>u.group===B),M=B==="model"?N?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,U=!H.some((u)=>C.has(u.id));return YB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:F,paddingX:2,paddingY:1,children:[YB.jsxDEV(R,{bold:!0,color:F,children:["\u25A3 ",M]},void 0,!0,void 0,this),YB.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[(()=>{let u=g===0;return YB.jsxDEV(h,{paddingLeft:1,children:[YB.jsxDEV(R,{color:u?F:void 0,bold:u,children:u?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:u,color:u?F:void 0,children:[" ",N?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),U&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),H.map((u,X)=>{let k=g===X+1,W=C.has(u.id);return YB.jsxDEV(h,{paddingLeft:1,flexDirection:"column",children:[YB.jsxDEV(h,{children:[YB.jsxDEV(R,{color:k?F:void 0,bold:k,children:k?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:k,color:k?F:void 0,children:[" ",u.label[N?"zh":"en"]||u.label.en]},void 0,!0,void 0,this),W&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:[" ",u.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),k&&YB.jsxDEV(h,{paddingLeft:3,children:YB.jsxDEV(R,{dimColor:!0,children:u.description[N?"zh":"en"]||u.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},u.id,!0,void 0,this)})]},void 0,!0,void 0,this),YB.jsxDEV(yY,{zh:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var BA=YA(_B(),1),F_="0.3.10",_Y={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},VY={icon:"\u25AA",color:"white"};async function w_(){let B=xg(),I=await MY(),C=await cI(),g=sQ()==="zh",F=[...B].sort((M,U)=>{if(M.id===I)return-1;if(U.id===I)return 1;return 0}),N=[];for(let M of F){let U=await JY(M.id,PH,!0),u=process.cwd(),X=[{label:g?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:hH(u,45),path:u},...U.map((r)=>({label:hH(r.path,45),hint:UY(r.lastLaunchedAt),path:r.path}))],k=await AC(M.id),z=await BC(M.id)||k.find((r)=>r.id===C?.id)||k[0],$=z?k.findIndex((r)=>r.id===z.id):0,O=jF(M,z),v=await a3(M.id),d=O.map((r)=>r.id),l=v.filter((r)=>d.includes(r));N.push({client:M,projects:X,providers:k,activeProvIdx:Math.max($,0),launchOptions:O,lastSelectedOptionIds:l})}let H=N.some((M)=>M.providers.length>0);return{clients:N,defaultIdx:0,hasProviders:H}}function PY({color:B}){let{stdout:I}=YH(),C=Math.max((I.columns||80)-6,20);return BA.jsxDEV(h,{marginY:0,children:BA.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function G_(B){return B>30?"green":B>10?"yellow":"red"}function N_({provider:B,zh:I}){if(!B)return BA.jsxDEV(R,{color:"yellow",children:["\u26A0 ",I?"\u672A\u7ED1\u5B9A":"no provider"]},void 0,!0,void 0,this);let C={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:"cyan",icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:"yellow",icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:"blue",icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:"yellow",icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:"magenta",icon:"\u25C7"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:"gray",icon:"\u25AA"}},g=C[B.type]??C.custom,F=I?g.zh:g.en,N=B.email??"";if(N.length>0){let[H,M]=N.split("@");if(H&&M)N=H.length>14?`${H.slice(0,12)}\u2026@${M}`:N}return BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),N&&BA.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",N]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function H_({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",B.hint||(I?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")]},void 0,!0,void 0,this);if(B.provider==="tako")if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit));else{let M=B.daily??B.primary??B.secondary;if(!M)return null;let U=M.costUsed??0;return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",BA.jsxDEV(R,{color:"green",children:["$",U.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,M,U)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return U?`${U}d`:`${M}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],N=(H,M,U)=>{if(F.length)F.push(BA.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let u=g(U);F.push(BA.jsxDEV(IQ.default.Fragment,{children:[`${M} \u5269 `,BA.jsxDEV(R,{color:G_(u),children:[u,"%"]},void 0,!0,void 0,this)]},H,!0,void 0,this))};if(B.primary)N("primary",C(B.primary.windowMinutes,5),B.primary.usedPct);if(B.secondary)N("secondary",C(B.secondary.windowMinutes,24,7),B.secondary.usedPct);if(B.modelLimits?.opus)N("opus","opus",B.modelLimits.opus.usedPct);if(!F.length)return null;return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function J_(B,I){let C=[],g=new Set;for(let F of B)if(!F.group)C.push({kind:"flag",opt:F});else if(!g.has(F.group)){g.add(F.group);let N=F.group==="model"?I?"\u6A21\u578B":"Model":F.group;C.push({kind:"group",group:F.group,title:N})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function pH(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function M_({clients:B,defaultIdx:I,hasProviders:C,onResult:g}){let[F,N]=IQ.useState(I),[H,M]=IQ.useState("projects"),[U,u]=IQ.useState(0),[X,k]=IQ.useState(0),[W,z]=IQ.useState(()=>B[I]?.activeProvIdx||0),[$,O]=IQ.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[v,d]=IQ.useState(""),[l,r]=IQ.useState(null),[FA,MA]=IQ.useState(!1),[wA,ZA]=IQ.useState(0),GA=B[F],s=GA.projects,XA=GA.providers,qA=_Y[GA.client.id]||VY,JA=sQ()==="zh",KA=XA[W],BB=IQ.default.useMemo(()=>jF(GA.client,KA),[GA.client.id,KA?.id,KA?.type]),IA=IQ.default.useMemo(()=>J_(BB,JA),[BB,JA]),_A=KA?.name||(JA?"\u672A\u914D\u7F6E":"N/A"),[OA,rA]=IQ.useState(null);return IQ.useEffect(()=>{if(!KA){rA(null);return}let kA=!1;return T1(KA).then((f)=>{if(!kA)rA(f)}),()=>{kA=!0}},[KA?.id,KA?.type]),IQ.useEffect(()=>{u(0),k(0),M("projects"),z(B[F]?.activeProvIdx||0),r(null),MA(!1),O(new Set(B[F]?.lastSelectedOptionIds??[]))},[F]),IQ.useEffect(()=>{let kA=new Set(BB.map((DA)=>DA.id)),f=new Set(BB.filter((DA)=>DA.group==="model").map((DA)=>DA.id)),NA=KA?.model?`model-${KA.model}`:void 0;O((DA)=>{let WA=new Set,hA=!1,GB=!1;for(let bA of DA)if(kA.has(bA)){if(WA.add(bA),f.has(bA))GB=!0}else hA=!0;if(!GB&&NA&&f.has(NA))WA.add(NA),hA=!0;return hA?WA:DA})},[BB,KA?.model]),QQ(IQ.useCallback((kA,f)=>{if(FA){let DA=XA.length+1;if(f.escape||kA==="q"){MA(!1);return}if(f.upArrow){ZA((WA)=>WA>0?WA-1:DA-1);return}if(f.downArrow){ZA((WA)=>WA<DA-1?WA+1:0);return}if(f.return)if(wA<XA.length){let WA=XA[wA];z(wA),(async()=>{if(await lF(GA.client.id,WA.id),GA.client.setupConfigFiles)try{await GA.client.setupConfigFiles(SI(WA))}catch(hA){d(JA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>d(""),2500);return}GA.activeProvIdx=wA,d(JA?`\u2713 \u5DF2\u7ED1\u5B9A ${WA.name}`:`\u2713 Bound ${WA.name}`),setTimeout(()=>d(""),2000)})(),MA(!1)}else MA(!1),g({type:"providers"});return}if(l){let DA=BB.filter((hA)=>hA.group===l),WA=DA.length+1;if(f.escape||kA==="q"){r(null);return}if(f.upArrow){ZA((hA)=>hA>0?hA-1:WA-1);return}if(f.downArrow){ZA((hA)=>hA<WA-1?hA+1:0);return}if(f.return){if(wA===0)O((hA)=>{let GB=new Set(hA);for(let bA of DA)GB.delete(bA.id);return GB});else{let hA=DA[wA-1];O((GB)=>{let bA=new Set(GB);for(let hB of DA)bA.delete(hB.id);return bA.add(hA.id),bA})}r(null)}return}if(kA==="q"){g({type:"exit"});return}if(kA==="a"){g({type:"agent"});return}if(kA==="s"){g({type:"stats"});return}if(kA==="c"){g({type:"config"});return}if(kA==="l"){g({type:"language"});return}if(kA==="p"){g({type:"providers"});return}let NA=parseInt(kA);if(NA>=1&&NA<=B.length){N(NA-1);return}if(f.leftArrow){N((DA)=>DA>0?DA-1:B.length-1);return}if(f.rightArrow){N((DA)=>DA<B.length-1?DA+1:0);return}if(H==="projects"){if(f.downArrow){if(U<s.length-1)u((DA)=>DA+1);else if(IA.length>0)M("options"),k(0);return}if(f.upArrow){if(U>0)u((DA)=>DA-1);return}}if(H==="options"){if(f.downArrow){if(X<IA.length-1)k((DA)=>DA+1);return}if(f.upArrow){if(X>0)k((DA)=>DA-1);else M("projects"),u(s.length-1);return}}if(kA===" "&&H==="options"&&IA.length>0){let DA=IA[X];if(DA.kind==="flag")O((WA)=>{let hA=new Set(WA);if(hA.has(DA.opt.id))hA.delete(DA.opt.id);else hA.add(DA.opt.id);return hA});else if(DA.kind==="group"){let WA=pH(BB,$,DA.group),hA=BB.filter((bA)=>bA.group===DA.group),GB=WA?hA.findIndex((bA)=>bA.id===WA.id)+1:0;ZA(Math.max(0,GB)),r(DA.group)}else ZA(W),MA(!0);return}if(f.return){if(H==="options"&&IA.length>0){let bA=IA[X];if(bA.kind==="group"){let hB=pH(BB,$,bA.group),TB=BB.filter((CA)=>CA.group===bA.group),EA=hB?TB.findIndex((CA)=>CA.id===hB.id)+1:0;ZA(Math.max(0,EA)),r(bA.group);return}if(bA.kind==="provider"){ZA(W),MA(!0);return}}let DA=s[U],WA=[],hA={},GB=[];for(let bA of BB)if($.has(bA.id)){if(WA.push(...bA.args),bA.envVars)Object.assign(hA,bA.envVars);GB.push(bA.id)}g({type:"launch",clientId:GA.client.id,projectPath:DA.path,args:WA,envVars:hA,selectedOptionIds:GB})}},[H,F,U,X,W,XA,KA,GA,s,BB,IA,$,B,g,JA,l,FA,wA])),BA.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[BA.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:qA.color,paddingX:2,paddingY:1,children:[BA.jsxDEV(h,{justifyContent:"space-between",children:[BA.jsxDEV(h,{gap:1,children:[BA.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:["v",F_]},void 0,!0,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(N_,{provider:KA,zh:JA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{children:[v&&BA.jsxDEV(R,{color:"green",children:v},void 0,!1,void 0,this),!v&&OA&&BA.jsxDEV(H_,{quota:OA,zh:JA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&BA.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[BA.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u672A\u914D\u7F6E\u670D\u52A1\u5546 \u2014 \u6309 c \u6DFB\u52A0 API Key \u6216 p \u7BA1\u7406\u670D\u52A1\u5546":"No provider configured \u2014 press c for API Key or p to manage"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[BA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((kA,f)=>{let NA=_Y[kA.client.id]||VY;return f===F?BA.jsxDEV(h,{borderStyle:"bold",borderColor:NA.color,paddingX:1,children:BA.jsxDEV(R,{color:NA.color,bold:!0,children:[NA.icon," ",kA.client.name]},void 0,!0,void 0,this)},kA.client.id,!1,void 0,this):BA.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:BA.jsxDEV(R,{dimColor:!0,children:[NA.icon," ",kA.client.name]},void 0,!0,void 0,this)},kA.client.id,!1,void 0,this)}),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(PY,{color:qA.color},void 0,!1,void 0,this),FA?BA.jsxDEV(TY,{provs:XA,provIdx:W,pickerIdx:wA,color:qA.color,zh:JA},void 0,!1,void 0,this):l?BA.jsxDEV(vY,{group:l,options:BB,enabled:$,pickerIdx:wA,color:qA.color,zh:JA},void 0,!1,void 0,this):BA.jsxDEV(BA.Fragment,{children:[s.map((kA,f)=>{let NA=H==="projects"&&f===U;return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:kA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kA.hint?BA.jsxDEV(R,{dimColor:!0,children:kA.hint},void 0,!1,void 0,this):null]},f,!0,void 0,this)}),IA.length>0&&BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(PY,{color:qA.color},void 0,!1,void 0,this),IA.map((kA,f)=>{let NA=H==="options"&&f===X;if(kA.kind==="flag"){let DA=kA.opt,WA=$.has(DA.id);return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{color:WA?qA.color:void 0,bold:WA,children:WA?"\u25C9":"\u25CB"},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:DA.label[JA?"zh":"en"]||DA.label.en},void 0,!1,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:DA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:DA.description[JA?"zh":"en"]||DA.description.en},void 0,!1,void 0,this)]},DA.id,!0,void 0,this)}if(kA.kind==="group"){let DA=pH(BB,$,kA.group),WA=DA?DA.shortLabel:JA?"\u9ED8\u8BA4":"Default";return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:[kA.title,":"]},void 0,!0,void 0,this),BA.jsxDEV(R,{color:DA?qA.color:void 0,children:WA},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:JA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${kA.group}`,!0,void 0,this)}return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:[kA.title,":"]},void 0,!0,void 0,this),BA.jsxDEV(R,{color:KA?qA.color:"yellow",children:KA?_A:JA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),BA.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:JA?"Enter \u5207\u6362\u6216\u7BA1\u7406":"Enter to switch / manage"},void 0,!1,void 0,this)]},"provider-entry",!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:H==="options"?BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mY({onResult:B}){let[I,C]=IQ.useState(null);if(IQ.useEffect(()=>{w_().then(C)},[]),!I)return BA.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return BA.jsxDEV(M_,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,onResult:B},void 0,!1,void 0,this)}kQ();_0();await RI();var iB=YA(FB(),1);cC();cC();uE();cC();await RI();var HA=YA(_B(),1),RE={"claude-subscription":{icon:"\u2726",color:"yellow"},"codex-subscription":{icon:"\u25C8",color:"blue"},tako:{icon:"\uD83D\uDC19",color:"cyan"},anthropic:{icon:"\u25B3",color:"magenta"},deepseek:{icon:"\uD83D\uDD2E",color:"blue"},xiaomi:{icon:"\uD83D\uDFE0",color:"yellow"},custom:{icon:"\u2699",color:"gray"}},iH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},v1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function hY({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let N=RE[B.type]||RE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return HA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?N.color:C?N.color:"gray",paddingX:2,paddingY:0,children:[HA.jsxDEV(h,{justifyContent:"space-between",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:I||C,color:I?N.color:void 0,children:B.name},void 0,!1,void 0,this),g&&HA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&HA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,children:C?HA.jsxDEV(R,{color:N.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):HA.jsxDEV(R,{dimColor:!0,children:["\u25CB ",F?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&HA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&HA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&HA.jsxDEV(R,{dimColor:!0,children:["Key: ",B.apiKey.slice(0,8),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),I&&HA.jsxDEV(h,{marginTop:0,children:HA.jsxDEV(R,{color:N.color,dimColor:!0,children:["Enter ",F?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",F?"\u8BE6\u60C5/\u64CD\u4F5C":"detail/actions"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function bY({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:N,rowIdx:H,zh:M}){let U=RE[I]||RE.custom,u=M?w0[I]?.zh:w0[I]?.en,X=B==="add-model"?dF(I):void 0;if(X)return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:U.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,marginBottom:1,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:U.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:U.color,children:u},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",M?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X.map((O,v)=>{let d=H===v;return HA.jsxDEV(h,{paddingLeft:1,gap:1,children:[HA.jsxDEV(R,{color:d?U.color:void 0,bold:d,children:d?"\u25B8":" "},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:d,color:d?U.color:void 0,children:O},void 0,!1,void 0,this)]},O,!0,void 0,this)})]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let k=B==="add-key"?M?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?M?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":M?"\u6A21\u578B":"Model",W=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?N??"":F,z=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?M?"\u5982 200000\uFF1Bcatalog \u6CA1\u6709\u8BE5\u6A21\u578B\u65F6\u5EFA\u8BAE\u586B\u5199":"e.g. 200000; recommended if model is unknown to catalog":B==="add-model"?g2(I)||(M?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,$=B==="add-url"?M?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?M?"\u4FDD\u5B58":"save":B==="add-model"?M?"\u4FDD\u5B58":"save":M?"\u786E\u8BA4":"confirm";return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:U.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,marginBottom:1,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:U.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:U.color,children:u},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",k]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&HA.jsxDEV(R,{dimColor:!0,children:[" ",M?"sk- \u5F00\u5934\u8D70\u6309\u91CF\u4ED8\u8D39\uFF0Ctp- \u5F00\u5934\u8D70 Token Plan \u8BA2\u9605\uFF08\u81EA\u52A8\u8BC6\u522B\uFF09":"sk- = pay-as-you-go, tp- = Token Plan subscription (auto-detected)"]},void 0,!0,void 0,this),z&&HA.jsxDEV(R,{dimColor:!0,children:[" ",M?"\u9ED8\u8BA4":"Default",": ",z]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:z?1:0,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:W||z||""},void 0,!1,void 0,this),HA.jsxDEV(R,{color:U.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:$},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function fY({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let N=RE[B.type]||RE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:N.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:N.color,children:B.name},void 0,!1,void 0,this),B.id===I&&HA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&HA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:B.baseUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((M,U)=>{let u=M==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:M==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:M==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:M==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,X=U===g;return HA.jsxDEV(h,{borderStyle:X?"bold":"round",borderColor:X?"cyan":"gray",paddingX:2,children:HA.jsxDEV(R,{bold:X,color:X?"cyan":void 0,dimColor:!X,children:u},void 0,!1,void 0,this)},M,!1,void 0,this)})},void 0,!1,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var xA=YA(_B(),1);function jY({onDone:B}){let[I,C]=iB.useState("list"),[g,F]=iB.useState([]),[N,H]=iB.useState(),[M,U]=iB.useState({}),[u,X]=iB.useState(0),[k,W]=iB.useState(0),[z,$]=iB.useState(0),[O,v]=iB.useState(""),[d,l]=iB.useState(""),[r,FA]=iB.useState("tako"),[MA,wA]=iB.useState(""),[ZA,GA]=iB.useState(""),[s,XA]=iB.useState(""),[qA,JA]=iB.useState(""),KA=sQ()==="zh",BB=xg(),IA=BB[u],_A=iH[IA?.id]?.color||"white",OA=IA?g.filter((EA)=>D2(EA,IA.id)):[],rA=M[IA?.id]||N,kA=OA.length+4,f=g.find((EA)=>EA.id===O),NA=f?.type==="claude-subscription"||f?.type==="codex-subscription",DA=f?[...f.id!==N?["default"]:[],...NA?["relogin"]:[],...f.builtin?["rekey"]:["delete"],"back"]:["back"],WA=iB.useCallback(async()=>{let EA=await OI(),CA=await cI();F(EA),H(CA?.id);let e={};for(let UA of xg()){let lA=await BC(UA.id);e[UA.id]=lA?.id}U(e)},[]);iB.useEffect(()=>{WA()},[WA]),iB.useEffect(()=>{W(0)},[u]),iB.useEffect(()=>{if(d){let EA=setTimeout(()=>l(""),3000);return()=>clearTimeout(EA)}},[d]);let hA=iB.useCallback(async()=>{if(O&&g.find((VA)=>VA.id===O)?.builtin){await dg(O,{apiKey:MA}),l(KA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await WA(),C("list"),W(0);return}let EA=w0[r]?.[KA?"zh":"en"]||r,CA=ZA||zN(r),e=s||g2(r),UA=qA?parseInt(qA,10):NaN,lA=Number.isFinite(UA)&&UA>0?UA:void 0;await ig({name:EA,type:r,apiKey:MA,baseUrl:CA,model:e,modelContextWindow:lA,supportedClients:dI(r)}),PQ("provider_added",{provider_type:r,method:"manual"}),EC(),h0(),l(KA?"\u5DF2\u6DFB\u52A0":"Added"),JA(""),await WA(),C("list"),W(0)},[r,MA,ZA,s,qA,KA,WA,O,g]),GB=iB.useCallback(async()=>{C("scanning");let EA=await aF(),CA=await oF(EA);if(CA>0)EC(),h0();l(KA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${CA} \u4E2A`:`Scan done, ${CA} added`),await WA(),C("list"),W(0)},[WA,KA]),[bA,hB]=iB.useState("claude"),TB=iB.useCallback(async(EA)=>{hB(EA),C("logging-in");let CA=EA==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(CA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:UA}=await Promise.resolve().then(() => (s3(),$Y));if(EA==="claude")try{let lA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),VA=await new Response(lA.stdout).text();await lA.exited;let MB=JSON.parse(VA.trim());if(MB.loggedIn&&MB.authMethod==="claude.ai"){let bB=MB.email||"",VB=MB.subscriptionType||"pro",PA=`Claude ${VB.charAt(0).toUpperCase()+VB.slice(1)}${bB?` (${bB})`:""}`,{readClaudeAuth:bQ}=await Promise.resolve().then(() => (hw(),mw)),OQ=await bQ(),SQ=OQ.credentials||OQ.oauthAccount?{credentials:OQ.credentials,oauthAccount:OQ.oauthAccount}:void 0,L0=g.find((vI)=>vI.type==="claude-subscription"&&vI.email===bB);if(!L0)await ig({name:PA,type:"claude-subscription",email:bB,subscriptionType:VB,supportedClients:dI("claude-subscription"),authData:SQ}),l(KA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await dg(L0.id,{authData:SQ}),UA(L0.id,"claude-subscription"),l(KA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(KA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(KA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let lA=await import("fs/promises"),{homedir:VA}=await import("os"),{join:MB}=await import("path"),bB=JSON.parse(await lA.readFile(MB(VA(),".codex","auth.json"),"utf-8"));if(bB.auth_mode==="chatgpt"&&bB.tokens?.access_token){let VB="";try{VB=JSON.parse(atob(bB.tokens.id_token.split(".")[1])).email||""}catch{}let PA=g.find((bQ)=>bQ.type==="codex-subscription"&&bQ.email===VB);if(!PA)await ig({name:VB?`Codex Plus (${VB})`:"Codex Subscription",type:"codex-subscription",email:VB||void 0,supportedClients:dI("codex-subscription"),authData:bB}),l(KA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await dg(PA.id,{authData:bB}),UA(PA.id,"codex-subscription"),l(KA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(KA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(KA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await WA(),C("list"),W(0)},[g,KA,WA]);if(QQ(iB.useCallback((EA,CA)=>{if(I==="list"){if(CA.escape||EA==="q"){B();return}if(CA.leftArrow){X((UA)=>UA>0?UA-1:BB.length-1);return}if(CA.rightArrow){X((UA)=>UA<BB.length-1?UA+1:0);return}let e=parseInt(EA);if(e>=1&&e<=BB.length){X(e-1);return}if(CA.upArrow){W((UA)=>UA>0?UA-1:kA-1);return}if(CA.downArrow){W((UA)=>UA<kA-1?UA+1:0);return}if(CA.return){if(k<OA.length){let UA=OA[k];lF(IA.id,UA.id).then(()=>{B()})}else if(k===OA.length)C("add-type"),W(0);else if(k===OA.length+1)GB();else if(k===OA.length+2)B("client-versions");else B();return}if((EA==="d"||EA==="e")&&k<OA.length)v(OA[k].id),C("detail"),$(0);return}if(I==="detail"){if(CA.leftArrow){$((e)=>e>0?e-1:DA.length-1);return}if(CA.rightArrow){$((e)=>e<DA.length-1?e+1:0);return}if(CA.escape){C("list"),W(0);return}if(CA.return){let e=DA[z];if(e==="back"){C("list"),W(0);return}if(e==="default")PN(O).then(()=>{l(KA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),WA(),C("list"),W(0)});if(e==="delete")VN(O).then(()=>{l(KA?"\u5DF2\u5220\u9664":"Deleted"),WA(),C("list"),W(0)});if(e==="rekey")FA(f?.type||"tako"),wA(""),C("add-key"),W(0);if(e==="relogin"){let UA=f?.type==="codex-subscription"?"codex":"claude";C("list"),W(0),TB(UA)}}return}if(I==="add-type"){if(CA.upArrow){W((e)=>e>0?e-1:v1.length-1);return}if(CA.downArrow){W((e)=>e<v1.length-1?e+1:0);return}if(CA.escape){C("list"),W(0);return}if(CA.return){let e=v1[k];if(FA(e),e==="claude-subscription"){TB("claude");return}if(e==="codex-subscription"){TB("codex");return}wA(""),GA(""),XA(g2(e)||""),C("add-key"),W(0)}return}if(I==="add-key"){if(CA.escape){C("list"),W(0);return}if(CA.return&&MA){if(r==="custom")C("add-url");else if(r==="deepseek"||r==="anthropic"||r==="tako"||r==="xiaomi")C("add-model"),W(0);else hA();return}if(CA.backspace||CA.delete){wA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl)wA((e)=>e+EA);return}if(I==="add-url"){if(CA.escape){C("list"),W(0);return}if(CA.return){C("add-model"),W(0);return}if(CA.backspace||CA.delete){GA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl)GA((e)=>e+EA);return}if(I==="add-model"){let e=dF(r);if(CA.escape){C("list"),W(0);return}if(e){if(CA.upArrow){W((UA)=>UA>0?UA-1:e.length-1);return}if(CA.downArrow){W((UA)=>UA<e.length-1?UA+1:0);return}if(CA.return){XA(e[k]),setTimeout(()=>hA(),0);return}}else{if(CA.return){let UA=s.trim();if(UA&&zI.some((lA)=>lA.id===UA))hA();else C("add-ctx");return}if(CA.backspace||CA.delete){XA((UA)=>UA.slice(0,-1));return}if(EA&&!CA.ctrl)XA((UA)=>UA+EA)}return}if(I==="add-ctx"){if(CA.escape){C("list"),W(0);return}if(CA.return){hA();return}if(CA.backspace||CA.delete){JA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl&&/^[0-9]$/.test(EA))JA((e)=>e+EA);return}},[I,k,z,OA,kA,BB.length,IA,O,f,DA,r,MA,ZA,s,qA,B,GB,TB,hA,WA,KA])),I==="scanning"||I==="logging-in"){let EA=I==="logging-in"?RE[bA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},CA=I==="scanning"?KA?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":KA?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:xA.jsxDEV(h,{borderStyle:"round",borderColor:EA.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[xA.jsxDEV(R,{color:EA.color,bold:!0,children:[EA.icon," ",CA]},void 0,!0,void 0,this),I==="logging-in"&&xA.jsxDEV(R,{dimColor:!0,children:KA?"\u5B8C\u6210\u540E\u5C06\u81EA\u52A8\u8FD4\u56DE":"Will return automatically when done"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}if(I==="add-key"||I==="add-url"||I==="add-model"||I==="add-ctx")return xA.jsxDEV(bY,{screen:I,addType:r,addKey:MA,addUrl:ZA,addModel:s,addCtx:qA,rowIdx:k,zh:KA},void 0,!1,void 0,this);if(I==="add-type")return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[xA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:xA.jsxDEV(R,{bold:!0,children:["\u2795 ",KA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),xA.jsxDEV(h,{flexDirection:"column",marginTop:1,gap:0,children:v1.map((EA,CA)=>{let e=RE[EA]||RE.custom,UA=k===CA,lA=KA?w0[EA]?.zh:w0[EA]?.en,VA=EA==="claude-subscription"||EA==="codex-subscription";return xA.jsxDEV(h,{borderStyle:UA?"bold":"round",borderColor:UA?e.color:"gray",paddingX:2,paddingY:0,children:xA.jsxDEV(h,{gap:1,children:[xA.jsxDEV(R,{color:e.color,bold:!0,children:e.icon},void 0,!1,void 0,this),xA.jsxDEV(R,{bold:UA,color:UA?e.color:void 0,children:lA},void 0,!1,void 0,this),VA&&xA.jsxDEV(R,{dimColor:!0,children:["(",KA?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!VA&&xA.jsxDEV(R,{dimColor:!0,children:["(",KA?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},EA,!1,void 0,this)})},void 0,!1,void 0,this),xA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&f)return xA.jsxDEV(fY,{provider:f,defaultId:N,detailActions:DA,detailIdx:z,zh:KA},void 0,!1,void 0,this);return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[xA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[xA.jsxDEV(R,{bold:!0,children:["\u26A1 ",KA?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),d&&xA.jsxDEV(R,{color:"green",children:[" \u2713 ",d]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),xA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[xA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),BB.map((EA,CA)=>{let e=iH[EA.id]||{icon:"\u25AA",color:"white"},UA=CA===u;return xA.jsxDEV(h,{borderStyle:UA?"bold":"single",borderColor:UA?e.color:"gray",paddingX:2,children:xA.jsxDEV(R,{color:UA?e.color:void 0,bold:UA,dimColor:!UA,children:[e.icon," ",EA.name]},void 0,!0,void 0,this)},EA.id,!1,void 0,this)}),xA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),xA.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:_A,paddingX:1,paddingY:1,children:[OA.length===0&&xA.jsxDEV(h,{paddingX:2,paddingY:1,justifyContent:"center",children:xA.jsxDEV(R,{dimColor:!0,children:KA?"\u6682\u65E0\u517C\u5BB9\u7684\u670D\u52A1\u5546\uFF0C\u8BF7\u6DFB\u52A0":"No compatible providers yet"},void 0,!1,void 0,this)},void 0,!1,void 0,this),OA.map((EA,CA)=>xA.jsxDEV(hY,{provider:EA,focused:k===CA,bound:EA.id===rA,isDefault:EA.id===N,zh:KA},EA.id,!1,void 0,this))]},void 0,!0,void 0,this),xA.jsxDEV(h,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:KA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:KA?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:KA?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:KA?"\u8FD4\u56DE":"Back"}].map((EA)=>{let CA=k===OA.length+EA.offset;return xA.jsxDEV(h,{borderStyle:CA?"bold":"round",borderColor:CA?"cyan":"gray",paddingX:2,children:xA.jsxDEV(R,{bold:CA,color:CA?"cyan":void 0,dimColor:!CA,children:[EA.icon," ",EA.label]},void 0,!0,void 0,this)},EA.id,!1,void 0,this)})},void 0,!1,void 0,this),xA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var CC=YA(FB(),1);sB();async function xY(){try{let B=await jg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${rQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${rQ}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B,period:"daily"})})).json();if(!C.success)return{success:!1,error:C.error||C.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let N=(F.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:C.data?.usage?.total?.requests||0,totalCost:C.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(C.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:N}}}catch(B){return{success:!1,error:B instanceof Error?B.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function pY(B){return B.toLocaleString("en-US")}var $I=YA(_B(),1);function iY({onExit:B}){let[I,C]=CC.useState(null),[g,F]=CC.useState(!0),[N,H]=CC.useState(10),M=CC.useCallback(async()=>{F(!0);let u=await xY();if(u.success&&u.data)C(u.data);F(!1)},[]);CC.useEffect(()=>{M()},[M]),CC.useEffect(()=>{let u=setInterval(()=>{H((X)=>{if(X<=1)return M(),10;return X-1})},1000);return()=>clearInterval(u)},[M]),QQ((u,X)=>{if(u==="q"||X.escape)B()});let U=sQ()==="zh";return $I.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[$I.jsxDEV(R,{bold:!0,children:jA("stats.title")},void 0,!1,void 0,this),g&&!I?$I.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{children:jA("stats.totalRequests",{count:pY(I.totalRequests)})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:jA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:jA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{bold:!0,dimColor:!0,children:U?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((u,X)=>$I.jsxDEV(R,{dimColor:!0,children:[X===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",u.model.padEnd(25)," ",String(u.requests).padStart(5)," ",u.cost]},u.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$I.jsxDEV(R,{color:"red",children:U?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),$I.jsxDEV(h,{marginTop:1,children:$I.jsxDEV(R,{dimColor:!0,children:U?`${N}s \u540E\u5237\u65B0 q \u8FD4\u56DE`:`Refresh in ${N}s q back`},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var eC=YA(FB(),1);sB();kQ();uE();_0();cC();function U_(B){return B.startsWith("cr_")&&B.length>10}async function L_(B){try{let C=await(await fetch(`${rQ}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:B})})).json();if(C.success&&C.data?.id)return{valid:!0,apiId:C.data.id};return{valid:!1,error:C.error||jA("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:jA("auth.networkError")}}}async function dY(B){if(!U_(B))return PQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:jA("auth.invalidFormat")};let I=await L_(B);if(!I.valid)return PQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await fg({apiKey:B,apiId:I.apiId}),await u_(B,I.apiId),PQ("api_key_validated",{success:!0}),EC(),h0(),{success:!0}}async function u_(B,I){let g=(await OI()).find((F)=>F.type==="tako");if(g)await dg(g.id,{apiKey:B,apiId:I});else await ig({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:rQ,apiId:I,supportedClients:dI("tako"),builtin:!0})}uE();var M0=YA(_B(),1);function cY({isReconfigure:B,onDone:I}){let[C,g]=eC.useState(""),[F,N]=eC.useState("idle"),[H,M]=eC.useState(""),{stdin:U,setRawMode:u}=S2();eC.useEffect(()=>{if(!U)return;u(!0);let z=($)=>{let O=$.toString();if(O.length>1&&!O.startsWith("\x1B"))g((v)=>v+O.replace(/[\r\n]/g,""))};return U.on("data",z),()=>{U.off("data",z)}},[U,u]);let X=eC.useCallback(async()=>{if(!C||F==="validating")return;N("validating");let z=await dY(C);if(z.success)N("success"),EC(),h0(),setTimeout(()=>I(!0),500);else N("error"),M(z.error||"Validation failed")},[C,F,I]);QQ((z,$)=>{if($.escape){I(!1);return}if($.return){X();return}if($.backspace||$.delete){g((O)=>O.slice(0,-1)),N("idle");return}if(z&&!$.ctrl&&z.length===1)g((O)=>O+z),N("idle")});let k=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,W=sQ()==="zh";return M0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[M0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?jA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),M0.jsxDEV(h,{marginTop:1,children:[M0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),M0.jsxDEV(R,{children:k},void 0,!1,void 0,this),F==="idle"&&M0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&M0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",jA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&M0.jsxDEV(R,{color:"green",children:["\u2713 ",jA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&M0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),M0.jsxDEV(h,{marginTop:1,children:M0.jsxDEV(R,{dimColor:!0,children:["Enter ",W?"\u63D0\u4EA4":"submit"," Esc ",W?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var lY=YA(FB(),1),gC=YA(_B(),1),_1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function aY({onDone:B}){let[I,C]=lY.useState(_1.findIndex((g)=>g.value===sQ()));return QQ((g,F)=>{if(F.upArrow)C((N)=>N>0?N-1:_1.length-1);if(F.downArrow)C((N)=>N<_1.length-1?N+1:0);if(F.return)TN(_1[I].value),B();if(F.escape)B()}),gC.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[gC.jsxDEV(R,{bold:!0,children:["\uD83C\uDF10 ",jA("menu.changeLanguage")]},void 0,!0,void 0,this),_1.map((g,F)=>gC.jsxDEV(h,{gap:1,marginTop:F===0?1:0,children:[gC.jsxDEV(R,{color:"cyan",bold:F===I,children:F===I?"\u25B8":" "},void 0,!1,void 0,this),gC.jsxDEV(R,{bold:F===I,children:g.label},void 0,!1,void 0,this),g.value===sQ()&&gC.jsxDEV(R,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},g.value,!0,void 0,this)),gC.jsxDEV(h,{marginTop:1,children:gC.jsxDEV(R,{dimColor:!0,children:"Enter select Esc back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}sB();sB();kQ();await RI();var e3=YA(FB(),1),FQ=YA(_B(),1);import{join as K_}from"path";var nY=K_(uQ,".key-prompt.json");async function R_(){try{return await Bun.file(nY).json()}catch{return{}}}async function oY(B){await Bun.write(nY,JSON.stringify(B))}async function rY(){if(await DN())return!1;let B=await R_();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function sY(B){if(B==="never")await oY({never:!0});else{let I=new Date().toISOString().slice(0,10);await oY({dismissed:I})}}var t3=[{id:"configure",label:{en:"Configure now",zh:"\u73B0\u5728\u914D\u7F6E"},hint:{en:"Enter your Tako API Key",zh:"\u8F93\u5165\u4F60\u7684 Tako API Key"},color:"cyan"},{id:"skip",label:{en:"Not now",zh:"\u7A0D\u540E\u518D\u8BF4"},hint:{en:"Remind me tomorrow",zh:"\u660E\u5929\u518D\u63D0\u9192\u6211"}},{id:"never",label:{en:"Don't ask again",zh:"\u4E0D\u518D\u63D0\u793A"},hint:{en:"You can configure later via c key",zh:"\u4E4B\u540E\u53EF\u4EE5\u6309 c \u968F\u65F6\u914D\u7F6E"}}];function tY({onDone:B}){let[I,C]=e3.useState(0),g=sQ()==="zh";return QQ(e3.useCallback((F,N)=>{if(N.upArrow){C((H)=>H>0?H-1:t3.length-1);return}if(N.downArrow){C((H)=>H<t3.length-1?H+1:0);return}if(N.escape){B("skip");return}if(N.return){B(t3[I].id);return}},[I,B])),FQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[FQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[FQ.jsxDEV(h,{gap:1,children:[FQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),FQ.jsxDEV(R,{bold:!0,children:g?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[FQ.jsxDEV(R,{dimColor:!0,children:g?"\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."},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\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."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:t3.map((F,N)=>{let H=N===I;return FQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[FQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),FQ.jsxDEV(R,{bold:H,color:H?F.color||"white":void 0,children:g?F.label.zh:F.label.en},void 0,!1,void 0,this),H&&FQ.jsxDEV(R,{dimColor:!0,children:g?F.hint.zh:F.hint.en},void 0,!1,void 0,this)]},F.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}await RI();var yI=YA(FB(),1);kI();sB();y2();import{join as A4}from"path";async function B4(B){let C=`${await aI()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),N=Object.keys(F.versions??{});if(!N.length)throw Error("no versions found");let H=F.time??{},M=N.map((U)=>({version:U,publishedAt:H[U],isCurrent:!1}));return M.sort((U,u)=>{let X=U.publishedAt?Date.parse(U.publishedAt):0;return(u.publishedAt?Date.parse(u.publishedAt):0)-X}),M}async function Q4(B,I){let C=await import("fs/promises"),g=sE(B.id);await C.mkdir(g,{recursive:!0});let F=A4(g,"bun.lock"),N=A4(g,"node_modules");await C.rm(F,{force:!0}).catch(()=>{}),await C.rm(N,{recursive:!0,force:!0}).catch(()=>{});let H=A4(g,"package.json");await Bun.write(H,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let M=await aI(),{detectRegion:U}=await Promise.resolve().then(() => (y2(),lW)),u=await U(),{log:X}=await Promise.resolve().then(() => (eE(),ZL));X.info(`\u7F51\u7EDC\u73AF\u5883: ${u==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${M}`);let k=Bun.spawn([iQ,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:M}});if(await k.exited,k.exitCode!==0){let z=await new Response(k.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${z.slice(0,500).trim()}`)}let W=await AB();await fg({installedClients:{...W.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function I4(B){let I=sE(B.id),C=A4(I,"node_modules",B.package,"package.json");try{let F=Bun.file(C);if(await F.exists()){let N=await F.json();if(N.version)return N.version}}catch{}return(await AB()).installedClients[B.id]?.version??null}kQ();var kB=YA(_B(),1),dH=12,eY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function AZ({onDone:B}){let I=xg(),C=sQ()==="zh",[g,F]=yI.useState(0),[N,H]=yI.useState(0),[M,U]=yI.useState(0),[u,X]=yI.useState({}),[k,W]=yI.useState(null),[z,$]=yI.useState(""),O=I[g],v=yI.useCallback(async(wA)=>{X((GA)=>({...GA,[wA]:{loading:!0,versions:[],current:null}}));let ZA=I.find((GA)=>GA.id===wA);if(!ZA)return;try{let[GA,s]=await Promise.all([B4(ZA.package),I4(ZA)]),XA=GA.map((qA)=>({...qA,isCurrent:qA.version===s}));X((qA)=>({...qA,[wA]:{loading:!1,versions:XA,current:s}}))}catch(GA){X((s)=>({...s,[wA]:{loading:!1,error:GA.message,versions:[],current:null}}))}},[I]);yI.useEffect(()=>{if(!O)return;if(!u[O.id])v(O.id)},[g,O?.id]),yI.useEffect(()=>{H(0),U(0)},[g]),yI.useEffect(()=>{if(!z)return;let wA=setTimeout(()=>$(""),3000);return()=>clearTimeout(wA)},[z]);let d=O?u[O.id]:void 0,l=d?.versions??[],r=yI.useCallback(async(wA)=>{if(!O||k)return;W(wA);try{await Q4(O,wA),$(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${wA}`:`\u2713 Switched to ${wA}`),await v(O.id)}catch(ZA){$(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${ZA.message}`:`\u2717 Install failed: ${ZA.message}`)}finally{W(null)}},[O,k,v,C]);QQ((wA,ZA)=>{if(k)return;if(ZA.escape||wA==="q"){B();return}if(ZA.leftArrow){F((s)=>s>0?s-1:I.length-1);return}if(ZA.rightArrow){F((s)=>s<I.length-1?s+1:0);return}if(wA==="r"){if(O)v(O.id);return}if(!l.length)return;let GA=l.length-1;if(ZA.upArrow){H((s)=>{let XA=Math.max(0,s-1);if(XA<M)U(XA);return XA});return}if(ZA.downArrow){H((s)=>{let XA=Math.min(GA,s+1);if(XA>=M+dH)U(XA-dH+1);return XA});return}if(ZA.return){let s=l[N];if(s&&!s.isCurrent)r(s.version)}});let FA=eY[O?.id]?.color||"white",MA=l.slice(M,M+dH);return kB.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[kB.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[kB.jsxDEV(R,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),z&&kB.jsxDEV(R,{color:z.startsWith("\u2713")?"green":"red",children:[" ",z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),kB.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:I.map((wA,ZA)=>{let GA=eY[wA.id]||{icon:"\u25AA",color:"white"},s=ZA===g;return kB.jsxDEV(h,{borderStyle:s?"bold":"single",borderColor:s?GA.color:"gray",paddingX:2,children:kB.jsxDEV(R,{bold:s,color:s?GA.color:void 0,dimColor:!s,children:[GA.icon," ",wA.name]},void 0,!0,void 0,this)},wA.id,!1,void 0,this)})},void 0,!1,void 0,this),kB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:FA,paddingX:2,paddingY:1,children:!d||d.loading?kB.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):d.error?kB.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",d.error]},void 0,!0,void 0,this):l.length===0?kB.jsxDEV(R,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):kB.jsxDEV(h,{flexDirection:"column",children:[kB.jsxDEV(R,{dimColor:!0,children:[C?`\u5171 ${l.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${l.length} versions, current: `,kB.jsxDEV(R,{color:FA,children:d.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kB.jsxDEV(h,{marginTop:1,flexDirection:"column",children:MA.map((wA,ZA)=>{let s=M+ZA===N,XA=wA.publishedAt?wA.publishedAt.slice(0,10):"",qA=wA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",JA=k===wA.version,KA=s?FA:wA.isCurrent?"green":void 0;return kB.jsxDEV(h,{paddingLeft:1,children:kB.jsxDEV(R,{color:KA,bold:s,dimColor:!s&&!wA.isCurrent,children:[s?"\u25B6 ":" ",wA.version.padEnd(16),XA.padEnd(14),qA,JA?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},wA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),kB.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}kQ();await B2([RI(),u4()]);var hQ=YA(FB(),1);kQ();FD();await B2([RI(),u4()]);var tQ=YA(FB(),1),RB=YA(_B(),1),XZ=300,qZ=200;function x_(B){let I=new Date(B.ts).toISOString().slice(11,19);switch(B.kind){case"session_started":return{dim:!0,text:`[${I}] \u25B6 session_started ${B.backend}`};case"turn_started":return{color:"cyan",text:`[${I}] \u25B6 turn_started`};case"text_delta":return{text:B.text};case"reasoning_delta":return{dim:!0,text:`[${I}] \uD83D\uDCAD ${B.text.slice(0,200)}`};case"tool_use":return{color:"yellow",text:`[${I}] \uD83D\uDD27 ${B.name} ${JSON.stringify(B.input).slice(0,160)}`};case"tool_result":return{color:"green",text:`[${I}] \u2713 result`};case"approval_required":return{color:"magenta",text:`[${I}] \u26A0 approval(${B.approvalType})`};case"turn_completed":return{color:"cyan",text:`[${I}] \u25C0 turn_completed`};case"error":return{color:"red",text:`[${I}] \u2717 ${B.message}`};case"session_closed":return{dim:!0,text:`[${I}] \u23F9 closed`};default:return{text:JSON.stringify(B)}}}function kZ({sid:B,onBack:I}){let C=G0()==="zh",[g,F]=tQ.useState(null),[N,H]=tQ.useState([]),[M,U]=tQ.useState(""),[u,X]=tQ.useState("idle"),[k,W]=tQ.useState(null),[z,$]=tQ.useState([]),O=tQ.useRef(0),v=tQ.useCallback(async()=>{let FA=await m2(B,qZ);if(!FA)return;F(FA.meta),H(FA.log);try{let wA=await(await import("fs/promises")).stat(dQ(B));O.current=wA.size}catch{O.current=0}},[B]);tQ.useEffect(()=>{v()},[v]),tQ.useEffect(()=>{let FA=!1,MA=null,wA=async()=>{if(FA)return;try{let ZA=await import("fs/promises"),GA=await ZA.stat(dQ(B));if(GA.size>O.current){let s=await ZA.open(dQ(B),"r"),XA=Buffer.alloc(GA.size-O.current);await s.read(XA,0,XA.length,O.current),await s.close(),O.current=GA.size;let qA=[];for(let JA of XA.toString("utf-8").split(`
|
|
778
|
+
`).map((v)=>v.trim().replace(/\r$/,"")).filter(Boolean),O=F?$.find((v)=>v.toLowerCase().endsWith(".exe"))??$.find((v)=>v.toLowerCase().endsWith(".cmd"))??$[0]:$[0];if(O)N=O;else return{success:!1,error:`\u627E\u4E0D\u5230 ${B.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${B.id}`}}catch{return{success:!1,error:`\u627E\u4E0D\u5230 ${B.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${B.id}`}}}let U={...B.getEnvVars(g),...I?.envVars??{}},u={...process.env,...U},X;if(B.runtime==="native")if(F&&N.toLowerCase().endsWith(".js"))X=[await KE(),N];else X=[N];else X=[await KE(),N];if(I?.args&&I.args.length>0)X=[...X,...I.args];if(F&&I?.handoffOnWindows){let W=await import("fs/promises"),z=process.env[bH];if(z)return await W.writeFile(z,o3({command:X,cwd:C,env:U}),"utf8"),{success:!0}}if(F&&I?.relaunchTakoOnWindows){let W=await import("fs/promises"),z=process.env[bH];if(z){let $=[process.argv[0],process.argv[1]].filter((O)=>typeof O==="string"&&O.length>0);return await W.writeFile(z,o3({command:X,cwd:C,env:U,relaunchCommand:$}),"utf8"),{success:!0}}}async function k(){try{if(process.stdin.removeAllListeners(),!F&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}if(F){let W=await import("fs/promises"),{join:z}=await import("path"),{tmpdir:$}=await import("os"),O=z($(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await W.writeFile(O,o3({command:X,cwd:C}),"utf8"),await k();try{let d=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",O],{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited;return{success:d===0,exitCode:d}}catch(v){return await W.rm(O,{force:!0}).catch(()=>{}),{success:!1,error:v instanceof Error?v.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await k(),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(X,{env:u,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(X,{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited}return{success:!0}}catch(C){return{success:!1,error:C instanceof Error?C.message:"\u542F\u52A8\u5931\u8D25"}}}async function cv(B,I){if(I?.providerContext)return I.providerContext;let C=await cI();if(C){let g=await AC(B.id);if(g.some((N)=>N.id===C.id))return SI(C);if(g.length>0)return SI(g[0])}return null}async function n3(B,I){try{let C=I?.projectPath||process.cwd();if(I?.projectPath){if(!await mH(I.projectPath))return{success:!1,error:jA("launcher.directoryNotFound",{path:I.projectPath})}}let g=await NY(B);if(!g.success)return g;let F=await cv(B,I);if(!F)return{success:!1,error:jA("launcher.apiKeyNotConfigured")};let N=[],H={};if(B.setupConfigFiles){let u=await B.setupConfigFiles(F,I?.selectedOptionIds,{forLaunch:!0});if(u&&typeof u==="object")N=u.args??[],H=u.envVars??{}}await HY(C,B.id,I?.selectedOptionIds);let U=(await AB()).installedClients[B.id]?.version;return PQ("client_launched",{client_id:B.id,client_version:U,project_hash:BY(C),is_recent_project:!!I?.projectPath}),nA.info(jA("launcher.starting",{client:B.name})),await uY(B,{...I,args:[...N,...I?.args??[]],envVars:{...H,...I?.envVars??{}},providerContext:F})}catch(C){return{success:!1,error:C instanceof Error?C.message:"Launch failed"}}}kI();kQ();uE();eE();_0();_0();uE();async function r3(B){let I=await AC(B);if(I.length===0)return null;let C=await BC(B);if(C)return SI(C);if(I.length===1)return SI(I[0]);let g=await cI();if(g&&I.some((F)=>F.id===g.id))return SI(g);return SI(I[0])}async function KY(){let B=await aF();if(await oF(B)>0){for(let C of B)PQ("provider_added",{provider_type:C.type,method:"auto_detect"});EC(),h0()}}await RI();var U0=YA(FB(),1);await RI();var IQ=YA(FB(),1);kI();_0();kQ();s3();await RI();var YB=YA(_B(),1),D_=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function yY({zh:B}){return YB.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:2,children:D_.flatMap((I,C)=>{return[C>0?YB.jsxDEV(R,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,YB.jsxDEV(R,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function TY({provs:B,provIdx:I,pickerIdx:C,color:g,zh:F}){return YB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:g,paddingX:2,paddingY:1,children:[YB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),YB.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[B.length===0&&YB.jsxDEV(h,{paddingLeft:1,children:YB.jsxDEV(R,{dimColor:!0,children:F?"\u6682\u65E0\u517C\u5BB9\u6B64\u5DE5\u5177\u7684\u670D\u52A1\u5546":"No compatible providers"},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.map((N,H)=>{let M=C===H,U=H===I;return YB.jsxDEV(h,{paddingLeft:1,children:[YB.jsxDEV(R,{color:M?g:void 0,bold:M,children:M?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:M,color:M?g:void 0,children:[" ",N.name]},void 0,!0,void 0,this),N.email&&YB.jsxDEV(R,{dimColor:!0,children:[" (",N.email,")"]},void 0,!0,void 0,this),U&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},N.id,!0,void 0,this)}),(()=>{let N=C===B.length;return YB.jsxDEV(h,{paddingLeft:1,marginTop:1,children:[YB.jsxDEV(R,{color:N?g:void 0,bold:N,children:N?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:N,color:N?g:void 0,children:[" ","\u2699 ",F?"\u7BA1\u7406\u670D\u52A1\u5546\u2026":"Manage providers\u2026"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})()]},void 0,!0,void 0,this),YB.jsxDEV(yY,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vY({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:N}){let H=I.filter((u)=>u.group===B),M=B==="model"?N?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,U=!H.some((u)=>C.has(u.id));return YB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:F,paddingX:2,paddingY:1,children:[YB.jsxDEV(R,{bold:!0,color:F,children:["\u25A3 ",M]},void 0,!0,void 0,this),YB.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[(()=>{let u=g===0;return YB.jsxDEV(h,{paddingLeft:1,children:[YB.jsxDEV(R,{color:u?F:void 0,bold:u,children:u?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:u,color:u?F:void 0,children:[" ",N?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),U&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),H.map((u,X)=>{let k=g===X+1,W=C.has(u.id);return YB.jsxDEV(h,{paddingLeft:1,flexDirection:"column",children:[YB.jsxDEV(h,{children:[YB.jsxDEV(R,{color:k?F:void 0,bold:k,children:k?"\u25B8":" "},void 0,!1,void 0,this),YB.jsxDEV(R,{bold:k,color:k?F:void 0,children:[" ",u.label[N?"zh":"en"]||u.label.en]},void 0,!0,void 0,this),W&&YB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:[" ",u.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),k&&YB.jsxDEV(h,{paddingLeft:3,children:YB.jsxDEV(R,{dimColor:!0,children:u.description[N?"zh":"en"]||u.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},u.id,!0,void 0,this)})]},void 0,!0,void 0,this),YB.jsxDEV(yY,{zh:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var BA=YA(_B(),1),F_="0.3.12",_Y={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},VY={icon:"\u25AA",color:"white"};async function w_(){let B=xg(),I=await MY(),C=await cI(),g=sQ()==="zh",F=[...B].sort((M,U)=>{if(M.id===I)return-1;if(U.id===I)return 1;return 0}),N=[];for(let M of F){let U=await JY(M.id,PH,!0),u=process.cwd(),X=[{label:g?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:hH(u,45),path:u},...U.map((r)=>({label:hH(r.path,45),hint:UY(r.lastLaunchedAt),path:r.path}))],k=await AC(M.id),z=await BC(M.id)||k.find((r)=>r.id===C?.id)||k[0],$=z?k.findIndex((r)=>r.id===z.id):0,O=jF(M,z),v=await a3(M.id),d=O.map((r)=>r.id),l=v.filter((r)=>d.includes(r));N.push({client:M,projects:X,providers:k,activeProvIdx:Math.max($,0),launchOptions:O,lastSelectedOptionIds:l})}let H=N.some((M)=>M.providers.length>0);return{clients:N,defaultIdx:0,hasProviders:H}}function PY({color:B}){let{stdout:I}=YH(),C=Math.max((I.columns||80)-6,20);return BA.jsxDEV(h,{marginY:0,children:BA.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function G_(B){return B>30?"green":B>10?"yellow":"red"}function N_({provider:B,zh:I}){if(!B)return BA.jsxDEV(R,{color:"yellow",children:["\u26A0 ",I?"\u672A\u7ED1\u5B9A":"no provider"]},void 0,!0,void 0,this);let C={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:"cyan",icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:"yellow",icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:"blue",icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:"yellow",icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:"magenta",icon:"\u25C7"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:"gray",icon:"\u25AA"}},g=C[B.type]??C.custom,F=I?g.zh:g.en,N=B.email??"";if(N.length>0){let[H,M]=N.split("@");if(H&&M)N=H.length>14?`${H.slice(0,12)}\u2026@${M}`:N}return BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),N&&BA.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",N]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function H_({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",B.hint||(I?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")]},void 0,!0,void 0,this);if(B.provider==="tako")if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit));else{let M=B.daily??B.primary??B.secondary;if(!M)return null;let U=M.costUsed??0;return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",BA.jsxDEV(R,{color:"green",children:["$",U.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,M,U)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return U?`${U}d`:`${M}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],N=(H,M,U)=>{if(F.length)F.push(BA.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let u=g(U);F.push(BA.jsxDEV(IQ.default.Fragment,{children:[`${M} \u5269 `,BA.jsxDEV(R,{color:G_(u),children:[u,"%"]},void 0,!0,void 0,this)]},H,!0,void 0,this))};if(B.primary)N("primary",C(B.primary.windowMinutes,5),B.primary.usedPct);if(B.secondary)N("secondary",C(B.secondary.windowMinutes,24,7),B.secondary.usedPct);if(B.modelLimits?.opus)N("opus","opus",B.modelLimits.opus.usedPct);if(!F.length)return null;return BA.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function J_(B,I){let C=[],g=new Set;for(let F of B)if(!F.group)C.push({kind:"flag",opt:F});else if(!g.has(F.group)){g.add(F.group);let N=F.group==="model"?I?"\u6A21\u578B":"Model":F.group;C.push({kind:"group",group:F.group,title:N})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function pH(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function M_({clients:B,defaultIdx:I,hasProviders:C,onResult:g}){let[F,N]=IQ.useState(I),[H,M]=IQ.useState("projects"),[U,u]=IQ.useState(0),[X,k]=IQ.useState(0),[W,z]=IQ.useState(()=>B[I]?.activeProvIdx||0),[$,O]=IQ.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[v,d]=IQ.useState(""),[l,r]=IQ.useState(null),[FA,MA]=IQ.useState(!1),[wA,ZA]=IQ.useState(0),GA=B[F],s=GA.projects,XA=GA.providers,qA=_Y[GA.client.id]||VY,JA=sQ()==="zh",KA=XA[W],BB=IQ.default.useMemo(()=>jF(GA.client,KA),[GA.client.id,KA?.id,KA?.type]),IA=IQ.default.useMemo(()=>J_(BB,JA),[BB,JA]),_A=KA?.name||(JA?"\u672A\u914D\u7F6E":"N/A"),[OA,rA]=IQ.useState(null);return IQ.useEffect(()=>{if(!KA){rA(null);return}let kA=!1;return T1(KA).then((f)=>{if(!kA)rA(f)}),()=>{kA=!0}},[KA?.id,KA?.type]),IQ.useEffect(()=>{u(0),k(0),M("projects"),z(B[F]?.activeProvIdx||0),r(null),MA(!1),O(new Set(B[F]?.lastSelectedOptionIds??[]))},[F]),IQ.useEffect(()=>{let kA=new Set(BB.map((DA)=>DA.id)),f=new Set(BB.filter((DA)=>DA.group==="model").map((DA)=>DA.id)),NA=KA?.model?`model-${KA.model}`:void 0;O((DA)=>{let WA=new Set,hA=!1,GB=!1;for(let bA of DA)if(kA.has(bA)){if(WA.add(bA),f.has(bA))GB=!0}else hA=!0;if(!GB&&NA&&f.has(NA))WA.add(NA),hA=!0;return hA?WA:DA})},[BB,KA?.model]),QQ(IQ.useCallback((kA,f)=>{if(FA){let DA=XA.length+1;if(f.escape||kA==="q"){MA(!1);return}if(f.upArrow){ZA((WA)=>WA>0?WA-1:DA-1);return}if(f.downArrow){ZA((WA)=>WA<DA-1?WA+1:0);return}if(f.return)if(wA<XA.length){let WA=XA[wA];z(wA),(async()=>{if(await lF(GA.client.id,WA.id),GA.client.setupConfigFiles)try{await GA.client.setupConfigFiles(SI(WA))}catch(hA){d(JA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>d(""),2500);return}GA.activeProvIdx=wA,d(JA?`\u2713 \u5DF2\u7ED1\u5B9A ${WA.name}`:`\u2713 Bound ${WA.name}`),setTimeout(()=>d(""),2000)})(),MA(!1)}else MA(!1),g({type:"providers"});return}if(l){let DA=BB.filter((hA)=>hA.group===l),WA=DA.length+1;if(f.escape||kA==="q"){r(null);return}if(f.upArrow){ZA((hA)=>hA>0?hA-1:WA-1);return}if(f.downArrow){ZA((hA)=>hA<WA-1?hA+1:0);return}if(f.return){if(wA===0)O((hA)=>{let GB=new Set(hA);for(let bA of DA)GB.delete(bA.id);return GB});else{let hA=DA[wA-1];O((GB)=>{let bA=new Set(GB);for(let hB of DA)bA.delete(hB.id);return bA.add(hA.id),bA})}r(null)}return}if(kA==="q"){g({type:"exit"});return}if(kA==="a"){g({type:"agent"});return}if(kA==="s"){g({type:"stats"});return}if(kA==="c"){g({type:"config"});return}if(kA==="l"){g({type:"language"});return}if(kA==="p"){g({type:"providers"});return}let NA=parseInt(kA);if(NA>=1&&NA<=B.length){N(NA-1);return}if(f.leftArrow){N((DA)=>DA>0?DA-1:B.length-1);return}if(f.rightArrow){N((DA)=>DA<B.length-1?DA+1:0);return}if(H==="projects"){if(f.downArrow){if(U<s.length-1)u((DA)=>DA+1);else if(IA.length>0)M("options"),k(0);return}if(f.upArrow){if(U>0)u((DA)=>DA-1);return}}if(H==="options"){if(f.downArrow){if(X<IA.length-1)k((DA)=>DA+1);return}if(f.upArrow){if(X>0)k((DA)=>DA-1);else M("projects"),u(s.length-1);return}}if(kA===" "&&H==="options"&&IA.length>0){let DA=IA[X];if(DA.kind==="flag")O((WA)=>{let hA=new Set(WA);if(hA.has(DA.opt.id))hA.delete(DA.opt.id);else hA.add(DA.opt.id);return hA});else if(DA.kind==="group"){let WA=pH(BB,$,DA.group),hA=BB.filter((bA)=>bA.group===DA.group),GB=WA?hA.findIndex((bA)=>bA.id===WA.id)+1:0;ZA(Math.max(0,GB)),r(DA.group)}else ZA(W),MA(!0);return}if(f.return){if(H==="options"&&IA.length>0){let bA=IA[X];if(bA.kind==="group"){let hB=pH(BB,$,bA.group),TB=BB.filter((CA)=>CA.group===bA.group),EA=hB?TB.findIndex((CA)=>CA.id===hB.id)+1:0;ZA(Math.max(0,EA)),r(bA.group);return}if(bA.kind==="provider"){ZA(W),MA(!0);return}}let DA=s[U],WA=[],hA={},GB=[];for(let bA of BB)if($.has(bA.id)){if(WA.push(...bA.args),bA.envVars)Object.assign(hA,bA.envVars);GB.push(bA.id)}g({type:"launch",clientId:GA.client.id,projectPath:DA.path,args:WA,envVars:hA,selectedOptionIds:GB})}},[H,F,U,X,W,XA,KA,GA,s,BB,IA,$,B,g,JA,l,FA,wA])),BA.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[BA.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:qA.color,paddingX:2,paddingY:1,children:[BA.jsxDEV(h,{justifyContent:"space-between",children:[BA.jsxDEV(h,{gap:1,children:[BA.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:["v",F_]},void 0,!0,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(N_,{provider:KA,zh:JA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{children:[v&&BA.jsxDEV(R,{color:"green",children:v},void 0,!1,void 0,this),!v&&OA&&BA.jsxDEV(H_,{quota:OA,zh:JA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&BA.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[BA.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u672A\u914D\u7F6E\u670D\u52A1\u5546 \u2014 \u6309 c \u6DFB\u52A0 API Key \u6216 p \u7BA1\u7406\u670D\u52A1\u5546":"No provider configured \u2014 press c for API Key or p to manage"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[BA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((kA,f)=>{let NA=_Y[kA.client.id]||VY;return f===F?BA.jsxDEV(h,{borderStyle:"bold",borderColor:NA.color,paddingX:1,children:BA.jsxDEV(R,{color:NA.color,bold:!0,children:[NA.icon," ",kA.client.name]},void 0,!0,void 0,this)},kA.client.id,!1,void 0,this):BA.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:BA.jsxDEV(R,{dimColor:!0,children:[NA.icon," ",kA.client.name]},void 0,!0,void 0,this)},kA.client.id,!1,void 0,this)}),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(PY,{color:qA.color},void 0,!1,void 0,this),FA?BA.jsxDEV(TY,{provs:XA,provIdx:W,pickerIdx:wA,color:qA.color,zh:JA},void 0,!1,void 0,this):l?BA.jsxDEV(vY,{group:l,options:BB,enabled:$,pickerIdx:wA,color:qA.color,zh:JA},void 0,!1,void 0,this):BA.jsxDEV(BA.Fragment,{children:[s.map((kA,f)=>{let NA=H==="projects"&&f===U;return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:kA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kA.hint?BA.jsxDEV(R,{dimColor:!0,children:kA.hint},void 0,!1,void 0,this):null]},f,!0,void 0,this)}),IA.length>0&&BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(PY,{color:qA.color},void 0,!1,void 0,this),IA.map((kA,f)=>{let NA=H==="options"&&f===X;if(kA.kind==="flag"){let DA=kA.opt,WA=$.has(DA.id);return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{color:WA?qA.color:void 0,bold:WA,children:WA?"\u25C9":"\u25CB"},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:DA.label[JA?"zh":"en"]||DA.label.en},void 0,!1,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:DA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:DA.description[JA?"zh":"en"]||DA.description.en},void 0,!1,void 0,this)]},DA.id,!0,void 0,this)}if(kA.kind==="group"){let DA=pH(BB,$,kA.group),WA=DA?DA.shortLabel:JA?"\u9ED8\u8BA4":"Default";return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:[kA.title,":"]},void 0,!0,void 0,this),BA.jsxDEV(R,{color:DA?qA.color:void 0,children:WA},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:JA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${kA.group}`,!0,void 0,this)}return BA.jsxDEV(h,{paddingLeft:1,children:[BA.jsxDEV(h,{flexGrow:1,gap:1,children:[BA.jsxDEV(R,{color:NA?qA.color:void 0,bold:NA,children:NA?"\u25B8":" "},void 0,!1,void 0,this),BA.jsxDEV(R,{bold:NA,color:NA?qA.color:void 0,children:[kA.title,":"]},void 0,!0,void 0,this),BA.jsxDEV(R,{color:KA?qA.color:"yellow",children:KA?_A:JA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),BA.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),NA&&BA.jsxDEV(R,{dimColor:!0,children:JA?"Enter \u5207\u6362\u6216\u7BA1\u7406":"Enter to switch / manage"},void 0,!1,void 0,this)]},"provider-entry",!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),BA.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:H==="options"?BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):BA.jsxDEV(BA.Fragment,{children:[BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),BA.jsxDEV(R,{dimColor:!0,children:JA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mY({onResult:B}){let[I,C]=IQ.useState(null);if(IQ.useEffect(()=>{w_().then(C)},[]),!I)return BA.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return BA.jsxDEV(M_,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,onResult:B},void 0,!1,void 0,this)}kQ();_0();await RI();var iB=YA(FB(),1);cC();cC();uE();cC();await RI();var HA=YA(_B(),1),RE={"claude-subscription":{icon:"\u2726",color:"yellow"},"codex-subscription":{icon:"\u25C8",color:"blue"},tako:{icon:"\uD83D\uDC19",color:"cyan"},anthropic:{icon:"\u25B3",color:"magenta"},deepseek:{icon:"\uD83D\uDD2E",color:"blue"},xiaomi:{icon:"\uD83D\uDFE0",color:"yellow"},custom:{icon:"\u2699",color:"gray"}},iH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},v1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function hY({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let N=RE[B.type]||RE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return HA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?N.color:C?N.color:"gray",paddingX:2,paddingY:0,children:[HA.jsxDEV(h,{justifyContent:"space-between",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:I||C,color:I?N.color:void 0,children:B.name},void 0,!1,void 0,this),g&&HA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&HA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,children:C?HA.jsxDEV(R,{color:N.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):HA.jsxDEV(R,{dimColor:!0,children:["\u25CB ",F?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&HA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&HA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&HA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&HA.jsxDEV(R,{dimColor:!0,children:["Key: ",B.apiKey.slice(0,8),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),I&&HA.jsxDEV(h,{marginTop:0,children:HA.jsxDEV(R,{color:N.color,dimColor:!0,children:["Enter ",F?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",F?"\u8BE6\u60C5/\u64CD\u4F5C":"detail/actions"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function bY({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:N,rowIdx:H,zh:M}){let U=RE[I]||RE.custom,u=M?w0[I]?.zh:w0[I]?.en,X=B==="add-model"?dF(I):void 0;if(X)return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:U.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,marginBottom:1,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:U.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:U.color,children:u},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",M?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X.map((O,v)=>{let d=H===v;return HA.jsxDEV(h,{paddingLeft:1,gap:1,children:[HA.jsxDEV(R,{color:d?U.color:void 0,bold:d,children:d?"\u25B8":" "},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:d,color:d?U.color:void 0,children:O},void 0,!1,void 0,this)]},O,!0,void 0,this)})]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let k=B==="add-key"?M?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?M?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":M?"\u6A21\u578B":"Model",W=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?N??"":F,z=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?M?"\u5982 200000\uFF1Bcatalog \u6CA1\u6709\u8BE5\u6A21\u578B\u65F6\u5EFA\u8BAE\u586B\u5199":"e.g. 200000; recommended if model is unknown to catalog":B==="add-model"?g2(I)||(M?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,$=B==="add-url"?M?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?M?"\u4FDD\u5B58":"save":B==="add-model"?M?"\u4FDD\u5B58":"save":M?"\u786E\u8BA4":"confirm";return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:U.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,marginBottom:1,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:U.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:U.color,children:u},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",k]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&HA.jsxDEV(R,{dimColor:!0,children:[" ",M?"sk- \u5F00\u5934\u8D70\u6309\u91CF\u4ED8\u8D39\uFF0Ctp- \u5F00\u5934\u8D70 Token Plan \u8BA2\u9605\uFF08\u81EA\u52A8\u8BC6\u522B\uFF09":"sk- = pay-as-you-go, tp- = Token Plan subscription (auto-detected)"]},void 0,!0,void 0,this),z&&HA.jsxDEV(R,{dimColor:!0,children:[" ",M?"\u9ED8\u8BA4":"Default",": ",z]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:z?1:0,children:[HA.jsxDEV(R,{color:U.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:W||z||""},void 0,!1,void 0,this),HA.jsxDEV(R,{color:U.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:$},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function fY({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let N=RE[B.type]||RE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return HA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[HA.jsxDEV(h,{borderStyle:"bold",borderColor:N.color,paddingX:3,paddingY:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),HA.jsxDEV(R,{bold:!0,color:N.color,children:B.name},void 0,!1,void 0,this),B.id===I&&HA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&HA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),HA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&HA.jsxDEV(h,{gap:1,children:[HA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),HA.jsxDEV(R,{children:B.baseUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),HA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((M,U)=>{let u=M==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:M==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:M==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:M==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,X=U===g;return HA.jsxDEV(h,{borderStyle:X?"bold":"round",borderColor:X?"cyan":"gray",paddingX:2,children:HA.jsxDEV(R,{bold:X,color:X?"cyan":void 0,dimColor:!X,children:u},void 0,!1,void 0,this)},M,!1,void 0,this)})},void 0,!1,void 0,this),HA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HA.jsxDEV(R,{dimColor:!0,children:F?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var xA=YA(_B(),1);function jY({onDone:B}){let[I,C]=iB.useState("list"),[g,F]=iB.useState([]),[N,H]=iB.useState(),[M,U]=iB.useState({}),[u,X]=iB.useState(0),[k,W]=iB.useState(0),[z,$]=iB.useState(0),[O,v]=iB.useState(""),[d,l]=iB.useState(""),[r,FA]=iB.useState("tako"),[MA,wA]=iB.useState(""),[ZA,GA]=iB.useState(""),[s,XA]=iB.useState(""),[qA,JA]=iB.useState(""),KA=sQ()==="zh",BB=xg(),IA=BB[u],_A=iH[IA?.id]?.color||"white",OA=IA?g.filter((EA)=>D2(EA,IA.id)):[],rA=M[IA?.id]||N,kA=OA.length+4,f=g.find((EA)=>EA.id===O),NA=f?.type==="claude-subscription"||f?.type==="codex-subscription",DA=f?[...f.id!==N?["default"]:[],...NA?["relogin"]:[],...f.builtin?["rekey"]:["delete"],"back"]:["back"],WA=iB.useCallback(async()=>{let EA=await OI(),CA=await cI();F(EA),H(CA?.id);let e={};for(let UA of xg()){let lA=await BC(UA.id);e[UA.id]=lA?.id}U(e)},[]);iB.useEffect(()=>{WA()},[WA]),iB.useEffect(()=>{W(0)},[u]),iB.useEffect(()=>{if(d){let EA=setTimeout(()=>l(""),3000);return()=>clearTimeout(EA)}},[d]);let hA=iB.useCallback(async()=>{if(O&&g.find((VA)=>VA.id===O)?.builtin){await dg(O,{apiKey:MA}),l(KA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await WA(),C("list"),W(0);return}let EA=w0[r]?.[KA?"zh":"en"]||r,CA=ZA||zN(r),e=s||g2(r),UA=qA?parseInt(qA,10):NaN,lA=Number.isFinite(UA)&&UA>0?UA:void 0;await ig({name:EA,type:r,apiKey:MA,baseUrl:CA,model:e,modelContextWindow:lA,supportedClients:dI(r)}),PQ("provider_added",{provider_type:r,method:"manual"}),EC(),h0(),l(KA?"\u5DF2\u6DFB\u52A0":"Added"),JA(""),await WA(),C("list"),W(0)},[r,MA,ZA,s,qA,KA,WA,O,g]),GB=iB.useCallback(async()=>{C("scanning");let EA=await aF(),CA=await oF(EA);if(CA>0)EC(),h0();l(KA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${CA} \u4E2A`:`Scan done, ${CA} added`),await WA(),C("list"),W(0)},[WA,KA]),[bA,hB]=iB.useState("claude"),TB=iB.useCallback(async(EA)=>{hB(EA),C("logging-in");let CA=EA==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(CA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:UA}=await Promise.resolve().then(() => (s3(),$Y));if(EA==="claude")try{let lA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),VA=await new Response(lA.stdout).text();await lA.exited;let MB=JSON.parse(VA.trim());if(MB.loggedIn&&MB.authMethod==="claude.ai"){let bB=MB.email||"",VB=MB.subscriptionType||"pro",PA=`Claude ${VB.charAt(0).toUpperCase()+VB.slice(1)}${bB?` (${bB})`:""}`,{readClaudeAuth:bQ}=await Promise.resolve().then(() => (hw(),mw)),OQ=await bQ(),SQ=OQ.credentials||OQ.oauthAccount?{credentials:OQ.credentials,oauthAccount:OQ.oauthAccount}:void 0,L0=g.find((vI)=>vI.type==="claude-subscription"&&vI.email===bB);if(!L0)await ig({name:PA,type:"claude-subscription",email:bB,subscriptionType:VB,supportedClients:dI("claude-subscription"),authData:SQ}),l(KA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await dg(L0.id,{authData:SQ}),UA(L0.id,"claude-subscription"),l(KA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(KA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(KA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let lA=await import("fs/promises"),{homedir:VA}=await import("os"),{join:MB}=await import("path"),bB=JSON.parse(await lA.readFile(MB(VA(),".codex","auth.json"),"utf-8"));if(bB.auth_mode==="chatgpt"&&bB.tokens?.access_token){let VB="";try{VB=JSON.parse(atob(bB.tokens.id_token.split(".")[1])).email||""}catch{}let PA=g.find((bQ)=>bQ.type==="codex-subscription"&&bQ.email===VB);if(!PA)await ig({name:VB?`Codex Plus (${VB})`:"Codex Subscription",type:"codex-subscription",email:VB||void 0,supportedClients:dI("codex-subscription"),authData:bB}),l(KA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await dg(PA.id,{authData:bB}),UA(PA.id,"codex-subscription"),l(KA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(KA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(KA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await WA(),C("list"),W(0)},[g,KA,WA]);if(QQ(iB.useCallback((EA,CA)=>{if(I==="list"){if(CA.escape||EA==="q"){B();return}if(CA.leftArrow){X((UA)=>UA>0?UA-1:BB.length-1);return}if(CA.rightArrow){X((UA)=>UA<BB.length-1?UA+1:0);return}let e=parseInt(EA);if(e>=1&&e<=BB.length){X(e-1);return}if(CA.upArrow){W((UA)=>UA>0?UA-1:kA-1);return}if(CA.downArrow){W((UA)=>UA<kA-1?UA+1:0);return}if(CA.return){if(k<OA.length){let UA=OA[k];lF(IA.id,UA.id).then(()=>{B()})}else if(k===OA.length)C("add-type"),W(0);else if(k===OA.length+1)GB();else if(k===OA.length+2)B("client-versions");else B();return}if((EA==="d"||EA==="e")&&k<OA.length)v(OA[k].id),C("detail"),$(0);return}if(I==="detail"){if(CA.leftArrow){$((e)=>e>0?e-1:DA.length-1);return}if(CA.rightArrow){$((e)=>e<DA.length-1?e+1:0);return}if(CA.escape){C("list"),W(0);return}if(CA.return){let e=DA[z];if(e==="back"){C("list"),W(0);return}if(e==="default")PN(O).then(()=>{l(KA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),WA(),C("list"),W(0)});if(e==="delete")VN(O).then(()=>{l(KA?"\u5DF2\u5220\u9664":"Deleted"),WA(),C("list"),W(0)});if(e==="rekey")FA(f?.type||"tako"),wA(""),C("add-key"),W(0);if(e==="relogin"){let UA=f?.type==="codex-subscription"?"codex":"claude";C("list"),W(0),TB(UA)}}return}if(I==="add-type"){if(CA.upArrow){W((e)=>e>0?e-1:v1.length-1);return}if(CA.downArrow){W((e)=>e<v1.length-1?e+1:0);return}if(CA.escape){C("list"),W(0);return}if(CA.return){let e=v1[k];if(FA(e),e==="claude-subscription"){TB("claude");return}if(e==="codex-subscription"){TB("codex");return}wA(""),GA(""),XA(g2(e)||""),C("add-key"),W(0)}return}if(I==="add-key"){if(CA.escape){C("list"),W(0);return}if(CA.return&&MA){if(r==="custom")C("add-url");else if(r==="deepseek"||r==="anthropic"||r==="tako"||r==="xiaomi")C("add-model"),W(0);else hA();return}if(CA.backspace||CA.delete){wA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl)wA((e)=>e+EA);return}if(I==="add-url"){if(CA.escape){C("list"),W(0);return}if(CA.return){C("add-model"),W(0);return}if(CA.backspace||CA.delete){GA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl)GA((e)=>e+EA);return}if(I==="add-model"){let e=dF(r);if(CA.escape){C("list"),W(0);return}if(e){if(CA.upArrow){W((UA)=>UA>0?UA-1:e.length-1);return}if(CA.downArrow){W((UA)=>UA<e.length-1?UA+1:0);return}if(CA.return){XA(e[k]),setTimeout(()=>hA(),0);return}}else{if(CA.return){let UA=s.trim();if(UA&&zI.some((lA)=>lA.id===UA))hA();else C("add-ctx");return}if(CA.backspace||CA.delete){XA((UA)=>UA.slice(0,-1));return}if(EA&&!CA.ctrl)XA((UA)=>UA+EA)}return}if(I==="add-ctx"){if(CA.escape){C("list"),W(0);return}if(CA.return){hA();return}if(CA.backspace||CA.delete){JA((e)=>e.slice(0,-1));return}if(EA&&!CA.ctrl&&/^[0-9]$/.test(EA))JA((e)=>e+EA);return}},[I,k,z,OA,kA,BB.length,IA,O,f,DA,r,MA,ZA,s,qA,B,GB,TB,hA,WA,KA])),I==="scanning"||I==="logging-in"){let EA=I==="logging-in"?RE[bA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},CA=I==="scanning"?KA?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":KA?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:xA.jsxDEV(h,{borderStyle:"round",borderColor:EA.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[xA.jsxDEV(R,{color:EA.color,bold:!0,children:[EA.icon," ",CA]},void 0,!0,void 0,this),I==="logging-in"&&xA.jsxDEV(R,{dimColor:!0,children:KA?"\u5B8C\u6210\u540E\u5C06\u81EA\u52A8\u8FD4\u56DE":"Will return automatically when done"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}if(I==="add-key"||I==="add-url"||I==="add-model"||I==="add-ctx")return xA.jsxDEV(bY,{screen:I,addType:r,addKey:MA,addUrl:ZA,addModel:s,addCtx:qA,rowIdx:k,zh:KA},void 0,!1,void 0,this);if(I==="add-type")return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[xA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:xA.jsxDEV(R,{bold:!0,children:["\u2795 ",KA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),xA.jsxDEV(h,{flexDirection:"column",marginTop:1,gap:0,children:v1.map((EA,CA)=>{let e=RE[EA]||RE.custom,UA=k===CA,lA=KA?w0[EA]?.zh:w0[EA]?.en,VA=EA==="claude-subscription"||EA==="codex-subscription";return xA.jsxDEV(h,{borderStyle:UA?"bold":"round",borderColor:UA?e.color:"gray",paddingX:2,paddingY:0,children:xA.jsxDEV(h,{gap:1,children:[xA.jsxDEV(R,{color:e.color,bold:!0,children:e.icon},void 0,!1,void 0,this),xA.jsxDEV(R,{bold:UA,color:UA?e.color:void 0,children:lA},void 0,!1,void 0,this),VA&&xA.jsxDEV(R,{dimColor:!0,children:["(",KA?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!VA&&xA.jsxDEV(R,{dimColor:!0,children:["(",KA?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},EA,!1,void 0,this)})},void 0,!1,void 0,this),xA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&f)return xA.jsxDEV(fY,{provider:f,defaultId:N,detailActions:DA,detailIdx:z,zh:KA},void 0,!1,void 0,this);return xA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[xA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[xA.jsxDEV(R,{bold:!0,children:["\u26A1 ",KA?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),d&&xA.jsxDEV(R,{color:"green",children:[" \u2713 ",d]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),xA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[xA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),BB.map((EA,CA)=>{let e=iH[EA.id]||{icon:"\u25AA",color:"white"},UA=CA===u;return xA.jsxDEV(h,{borderStyle:UA?"bold":"single",borderColor:UA?e.color:"gray",paddingX:2,children:xA.jsxDEV(R,{color:UA?e.color:void 0,bold:UA,dimColor:!UA,children:[e.icon," ",EA.name]},void 0,!0,void 0,this)},EA.id,!1,void 0,this)}),xA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),xA.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:_A,paddingX:1,paddingY:1,children:[OA.length===0&&xA.jsxDEV(h,{paddingX:2,paddingY:1,justifyContent:"center",children:xA.jsxDEV(R,{dimColor:!0,children:KA?"\u6682\u65E0\u517C\u5BB9\u7684\u670D\u52A1\u5546\uFF0C\u8BF7\u6DFB\u52A0":"No compatible providers yet"},void 0,!1,void 0,this)},void 0,!1,void 0,this),OA.map((EA,CA)=>xA.jsxDEV(hY,{provider:EA,focused:k===CA,bound:EA.id===rA,isDefault:EA.id===N,zh:KA},EA.id,!1,void 0,this))]},void 0,!0,void 0,this),xA.jsxDEV(h,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:KA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:KA?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:KA?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:KA?"\u8FD4\u56DE":"Back"}].map((EA)=>{let CA=k===OA.length+EA.offset;return xA.jsxDEV(h,{borderStyle:CA?"bold":"round",borderColor:CA?"cyan":"gray",paddingX:2,children:xA.jsxDEV(R,{bold:CA,color:CA?"cyan":void 0,dimColor:!CA,children:[EA.icon," ",EA.label]},void 0,!0,void 0,this)},EA.id,!1,void 0,this)})},void 0,!1,void 0,this),xA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),xA.jsxDEV(R,{dimColor:!0,children:KA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var CC=YA(FB(),1);sB();async function xY(){try{let B=await jg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${rQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${rQ}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B,period:"daily"})})).json();if(!C.success)return{success:!1,error:C.error||C.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let N=(F.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:C.data?.usage?.total?.requests||0,totalCost:C.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(C.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:N}}}catch(B){return{success:!1,error:B instanceof Error?B.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function pY(B){return B.toLocaleString("en-US")}var $I=YA(_B(),1);function iY({onExit:B}){let[I,C]=CC.useState(null),[g,F]=CC.useState(!0),[N,H]=CC.useState(10),M=CC.useCallback(async()=>{F(!0);let u=await xY();if(u.success&&u.data)C(u.data);F(!1)},[]);CC.useEffect(()=>{M()},[M]),CC.useEffect(()=>{let u=setInterval(()=>{H((X)=>{if(X<=1)return M(),10;return X-1})},1000);return()=>clearInterval(u)},[M]),QQ((u,X)=>{if(u==="q"||X.escape)B()});let U=sQ()==="zh";return $I.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[$I.jsxDEV(R,{bold:!0,children:jA("stats.title")},void 0,!1,void 0,this),g&&!I?$I.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{children:jA("stats.totalRequests",{count:pY(I.totalRequests)})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:jA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:jA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{bold:!0,dimColor:!0,children:U?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((u,X)=>$I.jsxDEV(R,{dimColor:!0,children:[X===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",u.model.padEnd(25)," ",String(u.requests).padStart(5)," ",u.cost]},u.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$I.jsxDEV(R,{color:"red",children:U?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),$I.jsxDEV(h,{marginTop:1,children:$I.jsxDEV(R,{dimColor:!0,children:U?`${N}s \u540E\u5237\u65B0 q \u8FD4\u56DE`:`Refresh in ${N}s q back`},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var eC=YA(FB(),1);sB();kQ();uE();_0();cC();function U_(B){return B.startsWith("cr_")&&B.length>10}async function L_(B){try{let C=await(await fetch(`${rQ}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:B})})).json();if(C.success&&C.data?.id)return{valid:!0,apiId:C.data.id};return{valid:!1,error:C.error||jA("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:jA("auth.networkError")}}}async function dY(B){if(!U_(B))return PQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:jA("auth.invalidFormat")};let I=await L_(B);if(!I.valid)return PQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await fg({apiKey:B,apiId:I.apiId}),await u_(B,I.apiId),PQ("api_key_validated",{success:!0}),EC(),h0(),{success:!0}}async function u_(B,I){let g=(await OI()).find((F)=>F.type==="tako");if(g)await dg(g.id,{apiKey:B,apiId:I});else await ig({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:rQ,apiId:I,supportedClients:dI("tako"),builtin:!0})}uE();var M0=YA(_B(),1);function cY({isReconfigure:B,onDone:I}){let[C,g]=eC.useState(""),[F,N]=eC.useState("idle"),[H,M]=eC.useState(""),{stdin:U,setRawMode:u}=S2();eC.useEffect(()=>{if(!U)return;u(!0);let z=($)=>{let O=$.toString();if(O.length>1&&!O.startsWith("\x1B"))g((v)=>v+O.replace(/[\r\n]/g,""))};return U.on("data",z),()=>{U.off("data",z)}},[U,u]);let X=eC.useCallback(async()=>{if(!C||F==="validating")return;N("validating");let z=await dY(C);if(z.success)N("success"),EC(),h0(),setTimeout(()=>I(!0),500);else N("error"),M(z.error||"Validation failed")},[C,F,I]);QQ((z,$)=>{if($.escape){I(!1);return}if($.return){X();return}if($.backspace||$.delete){g((O)=>O.slice(0,-1)),N("idle");return}if(z&&!$.ctrl&&z.length===1)g((O)=>O+z),N("idle")});let k=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,W=sQ()==="zh";return M0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[M0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?jA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),M0.jsxDEV(h,{marginTop:1,children:[M0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),M0.jsxDEV(R,{children:k},void 0,!1,void 0,this),F==="idle"&&M0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&M0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",jA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&M0.jsxDEV(R,{color:"green",children:["\u2713 ",jA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&M0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),M0.jsxDEV(h,{marginTop:1,children:M0.jsxDEV(R,{dimColor:!0,children:["Enter ",W?"\u63D0\u4EA4":"submit"," Esc ",W?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}kQ();await RI();var lY=YA(FB(),1),gC=YA(_B(),1),_1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function aY({onDone:B}){let[I,C]=lY.useState(_1.findIndex((g)=>g.value===sQ()));return QQ((g,F)=>{if(F.upArrow)C((N)=>N>0?N-1:_1.length-1);if(F.downArrow)C((N)=>N<_1.length-1?N+1:0);if(F.return)TN(_1[I].value),B();if(F.escape)B()}),gC.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[gC.jsxDEV(R,{bold:!0,children:["\uD83C\uDF10 ",jA("menu.changeLanguage")]},void 0,!0,void 0,this),_1.map((g,F)=>gC.jsxDEV(h,{gap:1,marginTop:F===0?1:0,children:[gC.jsxDEV(R,{color:"cyan",bold:F===I,children:F===I?"\u25B8":" "},void 0,!1,void 0,this),gC.jsxDEV(R,{bold:F===I,children:g.label},void 0,!1,void 0,this),g.value===sQ()&&gC.jsxDEV(R,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},g.value,!0,void 0,this)),gC.jsxDEV(h,{marginTop:1,children:gC.jsxDEV(R,{dimColor:!0,children:"Enter select Esc back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}sB();sB();kQ();await RI();var e3=YA(FB(),1),FQ=YA(_B(),1);import{join as K_}from"path";var nY=K_(uQ,".key-prompt.json");async function R_(){try{return await Bun.file(nY).json()}catch{return{}}}async function oY(B){await Bun.write(nY,JSON.stringify(B))}async function rY(){if(await DN())return!1;let B=await R_();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function sY(B){if(B==="never")await oY({never:!0});else{let I=new Date().toISOString().slice(0,10);await oY({dismissed:I})}}var t3=[{id:"configure",label:{en:"Configure now",zh:"\u73B0\u5728\u914D\u7F6E"},hint:{en:"Enter your Tako API Key",zh:"\u8F93\u5165\u4F60\u7684 Tako API Key"},color:"cyan"},{id:"skip",label:{en:"Not now",zh:"\u7A0D\u540E\u518D\u8BF4"},hint:{en:"Remind me tomorrow",zh:"\u660E\u5929\u518D\u63D0\u9192\u6211"}},{id:"never",label:{en:"Don't ask again",zh:"\u4E0D\u518D\u63D0\u793A"},hint:{en:"You can configure later via c key",zh:"\u4E4B\u540E\u53EF\u4EE5\u6309 c \u968F\u65F6\u914D\u7F6E"}}];function tY({onDone:B}){let[I,C]=e3.useState(0),g=sQ()==="zh";return QQ(e3.useCallback((F,N)=>{if(N.upArrow){C((H)=>H>0?H-1:t3.length-1);return}if(N.downArrow){C((H)=>H<t3.length-1?H+1:0);return}if(N.escape){B("skip");return}if(N.return){B(t3[I].id);return}},[I,B])),FQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[FQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[FQ.jsxDEV(h,{gap:1,children:[FQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),FQ.jsxDEV(R,{bold:!0,children:g?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[FQ.jsxDEV(R,{dimColor:!0,children:g?"\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."},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\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."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:t3.map((F,N)=>{let H=N===I;return FQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[FQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),FQ.jsxDEV(R,{bold:H,color:H?F.color||"white":void 0,children:g?F.label.zh:F.label.en},void 0,!1,void 0,this),H&&FQ.jsxDEV(R,{dimColor:!0,children:g?F.hint.zh:F.hint.en},void 0,!1,void 0,this)]},F.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),FQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),FQ.jsxDEV(R,{dimColor:!0,children:g?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}await RI();var yI=YA(FB(),1);kI();sB();y2();import{join as A4}from"path";async function B4(B){let C=`${await aI()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),N=Object.keys(F.versions??{});if(!N.length)throw Error("no versions found");let H=F.time??{},M=N.map((U)=>({version:U,publishedAt:H[U],isCurrent:!1}));return M.sort((U,u)=>{let X=U.publishedAt?Date.parse(U.publishedAt):0;return(u.publishedAt?Date.parse(u.publishedAt):0)-X}),M}async function Q4(B,I){let C=await import("fs/promises"),g=sE(B.id);await C.mkdir(g,{recursive:!0});let F=A4(g,"bun.lock"),N=A4(g,"node_modules");await C.rm(F,{force:!0}).catch(()=>{}),await C.rm(N,{recursive:!0,force:!0}).catch(()=>{});let H=A4(g,"package.json");await Bun.write(H,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let M=await aI(),{detectRegion:U}=await Promise.resolve().then(() => (y2(),lW)),u=await U(),{log:X}=await Promise.resolve().then(() => (eE(),ZL));X.info(`\u7F51\u7EDC\u73AF\u5883: ${u==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${M}`);let k=Bun.spawn([iQ,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:M}});if(await k.exited,k.exitCode!==0){let z=await new Response(k.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${z.slice(0,500).trim()}`)}let W=await AB();await fg({installedClients:{...W.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function I4(B){let I=sE(B.id),C=A4(I,"node_modules",B.package,"package.json");try{let F=Bun.file(C);if(await F.exists()){let N=await F.json();if(N.version)return N.version}}catch{}return(await AB()).installedClients[B.id]?.version??null}kQ();var kB=YA(_B(),1),dH=12,eY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function AZ({onDone:B}){let I=xg(),C=sQ()==="zh",[g,F]=yI.useState(0),[N,H]=yI.useState(0),[M,U]=yI.useState(0),[u,X]=yI.useState({}),[k,W]=yI.useState(null),[z,$]=yI.useState(""),O=I[g],v=yI.useCallback(async(wA)=>{X((GA)=>({...GA,[wA]:{loading:!0,versions:[],current:null}}));let ZA=I.find((GA)=>GA.id===wA);if(!ZA)return;try{let[GA,s]=await Promise.all([B4(ZA.package),I4(ZA)]),XA=GA.map((qA)=>({...qA,isCurrent:qA.version===s}));X((qA)=>({...qA,[wA]:{loading:!1,versions:XA,current:s}}))}catch(GA){X((s)=>({...s,[wA]:{loading:!1,error:GA.message,versions:[],current:null}}))}},[I]);yI.useEffect(()=>{if(!O)return;if(!u[O.id])v(O.id)},[g,O?.id]),yI.useEffect(()=>{H(0),U(0)},[g]),yI.useEffect(()=>{if(!z)return;let wA=setTimeout(()=>$(""),3000);return()=>clearTimeout(wA)},[z]);let d=O?u[O.id]:void 0,l=d?.versions??[],r=yI.useCallback(async(wA)=>{if(!O||k)return;W(wA);try{await Q4(O,wA),$(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${wA}`:`\u2713 Switched to ${wA}`),await v(O.id)}catch(ZA){$(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${ZA.message}`:`\u2717 Install failed: ${ZA.message}`)}finally{W(null)}},[O,k,v,C]);QQ((wA,ZA)=>{if(k)return;if(ZA.escape||wA==="q"){B();return}if(ZA.leftArrow){F((s)=>s>0?s-1:I.length-1);return}if(ZA.rightArrow){F((s)=>s<I.length-1?s+1:0);return}if(wA==="r"){if(O)v(O.id);return}if(!l.length)return;let GA=l.length-1;if(ZA.upArrow){H((s)=>{let XA=Math.max(0,s-1);if(XA<M)U(XA);return XA});return}if(ZA.downArrow){H((s)=>{let XA=Math.min(GA,s+1);if(XA>=M+dH)U(XA-dH+1);return XA});return}if(ZA.return){let s=l[N];if(s&&!s.isCurrent)r(s.version)}});let FA=eY[O?.id]?.color||"white",MA=l.slice(M,M+dH);return kB.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[kB.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[kB.jsxDEV(R,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),z&&kB.jsxDEV(R,{color:z.startsWith("\u2713")?"green":"red",children:[" ",z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),kB.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:I.map((wA,ZA)=>{let GA=eY[wA.id]||{icon:"\u25AA",color:"white"},s=ZA===g;return kB.jsxDEV(h,{borderStyle:s?"bold":"single",borderColor:s?GA.color:"gray",paddingX:2,children:kB.jsxDEV(R,{bold:s,color:s?GA.color:void 0,dimColor:!s,children:[GA.icon," ",wA.name]},void 0,!0,void 0,this)},wA.id,!1,void 0,this)})},void 0,!1,void 0,this),kB.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:FA,paddingX:2,paddingY:1,children:!d||d.loading?kB.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):d.error?kB.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",d.error]},void 0,!0,void 0,this):l.length===0?kB.jsxDEV(R,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):kB.jsxDEV(h,{flexDirection:"column",children:[kB.jsxDEV(R,{dimColor:!0,children:[C?`\u5171 ${l.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${l.length} versions, current: `,kB.jsxDEV(R,{color:FA,children:d.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kB.jsxDEV(h,{marginTop:1,flexDirection:"column",children:MA.map((wA,ZA)=>{let s=M+ZA===N,XA=wA.publishedAt?wA.publishedAt.slice(0,10):"",qA=wA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",JA=k===wA.version,KA=s?FA:wA.isCurrent?"green":void 0;return kB.jsxDEV(h,{paddingLeft:1,children:kB.jsxDEV(R,{color:KA,bold:s,dimColor:!s&&!wA.isCurrent,children:[s?"\u25B6 ":" ",wA.version.padEnd(16),XA.padEnd(14),qA,JA?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},wA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),kB.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),kB.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}kQ();await B2([RI(),u4()]);var hQ=YA(FB(),1);kQ();FD();await B2([RI(),u4()]);var tQ=YA(FB(),1),RB=YA(_B(),1),XZ=300,qZ=200;function x_(B){let I=new Date(B.ts).toISOString().slice(11,19);switch(B.kind){case"session_started":return{dim:!0,text:`[${I}] \u25B6 session_started ${B.backend}`};case"turn_started":return{color:"cyan",text:`[${I}] \u25B6 turn_started`};case"text_delta":return{text:B.text};case"reasoning_delta":return{dim:!0,text:`[${I}] \uD83D\uDCAD ${B.text.slice(0,200)}`};case"tool_use":return{color:"yellow",text:`[${I}] \uD83D\uDD27 ${B.name} ${JSON.stringify(B.input).slice(0,160)}`};case"tool_result":return{color:"green",text:`[${I}] \u2713 result`};case"approval_required":return{color:"magenta",text:`[${I}] \u26A0 approval(${B.approvalType})`};case"turn_completed":return{color:"cyan",text:`[${I}] \u25C0 turn_completed`};case"error":return{color:"red",text:`[${I}] \u2717 ${B.message}`};case"session_closed":return{dim:!0,text:`[${I}] \u23F9 closed`};default:return{text:JSON.stringify(B)}}}function kZ({sid:B,onBack:I}){let C=G0()==="zh",[g,F]=tQ.useState(null),[N,H]=tQ.useState([]),[M,U]=tQ.useState(""),[u,X]=tQ.useState("idle"),[k,W]=tQ.useState(null),[z,$]=tQ.useState([]),O=tQ.useRef(0),v=tQ.useCallback(async()=>{let FA=await m2(B,qZ);if(!FA)return;F(FA.meta),H(FA.log);try{let wA=await(await import("fs/promises")).stat(dQ(B));O.current=wA.size}catch{O.current=0}},[B]);tQ.useEffect(()=>{v()},[v]),tQ.useEffect(()=>{let FA=!1,MA=null,wA=async()=>{if(FA)return;try{let ZA=await import("fs/promises"),GA=await ZA.stat(dQ(B));if(GA.size>O.current){let s=await ZA.open(dQ(B),"r"),XA=Buffer.alloc(GA.size-O.current);await s.read(XA,0,XA.length,O.current),await s.close(),O.current=GA.size;let qA=[];for(let JA of XA.toString("utf-8").split(`
|
|
779
779
|
`)){if(!JA.trim())continue;try{qA.push(JSON.parse(JA))}catch{}}if(qA.length)H((JA)=>[...JA,...qA].slice(-qZ))}if(Math.random()<0.1){let s=await m2(B,0);if(s)F(s.meta)}$(await h1(B))}catch{}MA=setTimeout(wA,XZ)};return MA=setTimeout(wA,XZ),()=>{if(FA=!0,MA)clearTimeout(MA)}},[B]);let d=tQ.useCallback(async()=>{if(u!=="idle"||!M.trim())return;let FA=M;U(""),W(null),X("sending");try{await j1(B,FA)}catch(MA){W(MA instanceof Error?MA.message:String(MA))}finally{X("idle");let MA=await m2(B,0);if(MA)F(MA.meta)}},[B,M,u]),l=tQ.useCallback(async()=>{if(u!=="sending")return I();X("cancelling"),await x1(B).catch(()=>{})},[u,B,I]),r=tQ.useCallback(async(FA)=>{let MA=z[0];if(!MA)return;await D4(B,MA.approvalId,{decision:FA?"allow":"deny",by:"tui",decidedAt:Date.now()}),$((wA)=>wA.filter((ZA)=>ZA.approvalId!==MA.approvalId))},[z,B]);if(QQ((FA,MA)=>{if(MA.ctrl&&FA==="y"){r(!0);return}if(MA.ctrl&&FA==="n"){r(!1);return}if(MA.escape){l();return}if(MA.ctrl&&FA==="c"){l();return}if(MA.ctrl&&FA==="d"){I();return}if(MA.return){d();return}if(MA.backspace||MA.delete){U((wA)=>wA.slice(0,-1));return}if(M.length===0&&FA==="q"){I();return}if(FA&&!MA.ctrl&&FA.length===1)U((wA)=>wA+FA)}),!g)return RB.jsxDEV(h,{paddingX:2,paddingY:1,children:RB.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return RB.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[RB.jsxDEV(h,{children:[RB.jsxDEV(R,{bold:!0,children:"Session "},void 0,!1,void 0,this),RB.jsxDEV(R,{color:"cyan",children:g.sid.slice(0,8)},void 0,!1,void 0,this),RB.jsxDEV(R,{children:" "},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:g.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),RB.jsxDEV(h,{children:RB.jsxDEV(R,{dimColor:!0,children:[g.backend," \xB7 ",g.model??"-"," \xB7 status=",g.status," \xB7 turns=",g.turnCount]},void 0,!0,void 0,this)},void 0,!1,void 0,this),RB.jsxDEV(h,{children:RB.jsxDEV(R,{dimColor:!0,children:[C?"\u5DE5\u4F5C\u76EE\u5F55\uFF1A":"cwd: ",g.workdir]},void 0,!0,void 0,this)},void 0,!1,void 0,this),z.length>0&&RB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:1,children:[RB.jsxDEV(R,{color:"magenta",bold:!0,children:["\u26A0 ",z.length," ",C?"\u4E2A\u5F85\u5BA1\u6279":"pending"," \u2014 ",RB.jsxDEV(R,{bold:!0,children:"Ctrl-Y"},void 0,!1,void 0,this)," ",C?"\u6279\u51C6":"allow"," / ",RB.jsxDEV(R,{bold:!0,children:"Ctrl-N"},void 0,!1,void 0,this)," ",C?"\u62D2\u7EDD":"deny"]},void 0,!0,void 0,this),z.slice(0,3).map((FA,MA)=>RB.jsxDEV(R,{color:MA===0?"magenta":void 0,dimColor:MA!==0,children:[MA===0?"\u25B6 ":" ","[",FA.approvalType,"] ",FA.approvalId.slice(0,12)]},FA.approvalId,!0,void 0,this))]},void 0,!0,void 0,this),RB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:1,children:N.length===0?RB.jsxDEV(R,{dimColor:!0,children:C?"\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09":"(no log yet)"},void 0,!1,void 0,this):N.slice(-30).map((FA,MA)=>{let wA=x_(FA);return RB.jsxDEV(R,{color:wA.color,dimColor:wA.dim,children:wA.text||" "},MA,!1,void 0,this)})},void 0,!1,void 0,this),k&&RB.jsxDEV(h,{marginTop:1,children:RB.jsxDEV(R,{color:"red",children:["\u2717 ",k]},void 0,!0,void 0,this)},void 0,!1,void 0,this),RB.jsxDEV(h,{marginTop:1,children:[RB.jsxDEV(R,{color:"cyan",bold:!0,children:u==="sending"?"\u23F3 ":u==="cancelling"?"\u270B ":"\u25B6 "},void 0,!1,void 0,this),RB.jsxDEV(R,{children:M},void 0,!1,void 0,this),u==="idle"&&RB.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this),u==="sending"&&RB.jsxDEV(R,{dimColor:!0,children:[" (",C?"\u6B63\u5728\u53D1\u9001\u2026ESC \u53D6\u6D88":"sending\u2026 ESC cancel",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),RB.jsxDEV(h,{marginTop:1,gap:2,children:[RB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:C?"\u53D1\u9001":"send"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,bold:!0,children:"^Y/^N"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:C?"\u6279/\u62D2":"allow/deny"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),RB.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var $A=YA(_B(),1);function zZ(B){let I=Math.floor(B/1000);if(I<60)return`${I}s`;if(I<3600)return`${Math.floor(I/60)}m`;if(I<86400)return`${Math.floor(I/3600)}h`;return`${Math.floor(I/86400)}d`}function p_(B){switch(B){case"running":return"yellow";case"idle":return"green";case"closed":return"gray";case"dead":return"red";default:return"white"}}function OZ({onDone:B}){let I=G0()==="zh",[C,g]=hQ.useState(null),[F,N]=hQ.useState({}),[H,M]=hQ.useState(0),[U,u]=hQ.useState(null),[X,k]=hQ.useState(0),[W,z]=hQ.useState({kind:"list"}),$=hQ.useCallback(async()=>{let[O,v]=await Promise.all([J4(),L4()]);g(O),N(v),M((d)=>Math.max(0,Math.min(d,O.length-1)))},[]);if(hQ.useEffect(()=>{$()},[$,X]),hQ.useEffect(()=>{let O=setInterval(()=>k((v)=>v+1),5000);return()=>clearInterval(O)},[]),QQ((O,v)=>{if(U)return;if(W.kind!=="list")return;if(v.escape||O==="q"){B();return}if(O==="n"){z({kind:"new",backend:"claude",model:"",name:"",field:"backend"});return}if(!C||C.length===0){if(O==="r")k((l)=>l+1);return}if(v.upArrow||O==="k"){M((l)=>Math.max(0,l-1));return}if(v.downArrow||O==="j"){M((l)=>Math.min(C.length-1,l+1));return}if(O==="r"){k((l)=>l+1);return}if(O==="p"){u(I?"\u6E05\u7406\u4E2D...":"purging..."),U4().then(()=>{u(null),$()});return}let d=C[H];if(!d)return;if(v.return||O==="o"){z({kind:"detail",sid:d.sid});return}if(O==="d"){u(`closing ${d.sid.slice(0,8)}...`),wD(d.sid,!1).then(()=>{u(null),$()});return}if(O==="x"){u(`purging ${d.sid.slice(0,8)}...`),wD(d.sid,!0).then(()=>{u(null),$()});return}}),W.kind==="detail")return $A.jsxDEV(kZ,{sid:W.sid,onBack:()=>{z({kind:"list"}),$()}},void 0,!1,void 0,this);if(W.kind==="new")return $A.jsxDEV(i_,{initial:W,onCancel:()=>z({kind:"list"}),onCreated:(O)=>{z({kind:"detail",sid:O})}},void 0,!1,void 0,this);if(!C)return $A.jsxDEV(h,{paddingX:2,paddingY:1,children:$A.jsxDEV(R,{dimColor:!0,children:I?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return $A.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[$A.jsxDEV(R,{bold:!0,children:I?"Agent \u4F1A\u8BDD\u7BA1\u7406":"Agent Sessions"},void 0,!1,void 0,this),$A.jsxDEV(h,{marginTop:1,children:$A.jsxDEV(R,{dimColor:!0,children:[I?"\u9ED8\u8BA4 Provider\uFF1A":"Defaults: ",Object.keys(F).length===0?I?"\uFF08\u672A\u8BBE\u7F6E\uFF09":"(unset)":Object.entries(F).map(([O,v])=>`${O}=${v.slice(0,8)}`).join(" \u2502 ")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.length===0?$A.jsxDEV(h,{marginTop:2,flexDirection:"column",children:$A.jsxDEV(R,{dimColor:!0,children:I?"\uFF08\u6682\u65E0 session \u2014 \u6309 n \u65B0\u5EFA\uFF09":"(no sessions \u2014 press n to create)"},void 0,!1,void 0,this)},void 0,!1,void 0,this):$A.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[$A.jsxDEV(h,{children:$A.jsxDEV(R,{bold:!0,children:["sid".padEnd(10),"backend".padEnd(9),"name".padEnd(20),"model".padEnd(22),"status".padEnd(9),"turns".padEnd(7),"age".padEnd(6),"last"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.map((O,v)=>{let d=v===H;return $A.jsxDEV(h,{children:[$A.jsxDEV(R,{color:d?"cyan":void 0,inverse:d,children:d?"\u25B6 ":" "},void 0,!1,void 0,this),$A.jsxDEV(R,{color:d?"cyan":void 0,children:O.sid.slice(0,8).padEnd(10)},void 0,!1,void 0,this),$A.jsxDEV(R,{children:O.backend.padEnd(9)},void 0,!1,void 0,this),$A.jsxDEV(R,{children:(O.name??"").slice(0,18).padEnd(20)},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:(O.model??"-").slice(0,20).padEnd(22)},void 0,!1,void 0,this),$A.jsxDEV(R,{color:p_(O.status),children:O.status.padEnd(9)},void 0,!1,void 0,this),$A.jsxDEV(R,{children:String(O.turnCount).padEnd(7)},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:zZ(Date.now()-O.createdAt).padEnd(6)},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:zZ(Date.now()-O.lastActiveAt)},void 0,!1,void 0,this)]},O.sid,!0,void 0,this)})]},void 0,!0,void 0,this),U&&$A.jsxDEV(h,{marginTop:1,children:$A.jsxDEV(R,{color:"yellow",children:["\u23F3 ",U]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$A.jsxDEV(h,{marginTop:2,gap:2,children:[$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u9009\u62E9":"select"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u8FDB\u5165":"open"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"n"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u65B0\u5EFA":"new"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u5173\u95ED":"close"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"x"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u5220\u9664":"purge"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:I?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function i_({initial:B,onCancel:I,onCreated:C}){let g=G0()==="zh",[F,N]=hQ.useState(B.backend),[H,M]=hQ.useState(B.model),[U,u]=hQ.useState(B.name),[X,k]=hQ.useState(B.field),[W,z]=hQ.useState(!1),[$,O]=hQ.useState(null),v=hQ.useCallback(async()=>{if(W)return;z(!0),O(null);try{let d=await f1({backend:F,model:H.trim()||void 0,name:U.trim()||void 0});C(d.sid)}catch(d){O(d instanceof Error?d.message:String(d)),z(!1)}},[F,H,U,W,C]);return QQ((d,l)=>{if(W)return;if(l.escape){I();return}if(l.tab||l.downArrow){k((r)=>r==="backend"?"model":r==="model"?"name":"backend");return}if(l.upArrow){k((r)=>r==="backend"?"name":r==="model"?"backend":"model");return}if(X==="backend"){if(l.leftArrow||l.rightArrow||d===" "){N((r)=>r==="claude"?"codex":"claude");return}if(l.return){v();return}return}if(X==="model"){if(l.return){k("name");return}if(l.backspace||l.delete){M((r)=>r.slice(0,-1));return}if(d&&!l.ctrl&&d.length===1)M((r)=>r+d);return}if(X==="name"){if(l.return){v();return}if(l.backspace||l.delete){u((r)=>r.slice(0,-1));return}if(d&&!l.ctrl&&d.length===1)u((r)=>r+d)}}),$A.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[$A.jsxDEV(R,{bold:!0,children:g?"\u65B0\u5EFA Agent Session":"New agent session"},void 0,!1,void 0,this),$A.jsxDEV(h,{marginTop:1,children:$A.jsxDEV(R,{color:X==="backend"?"cyan":void 0,bold:X==="backend",children:[X==="backend"?"\u25B6 ":" ",g?"\u540E\u7AEF":"backend",": ",F==="claude"?"\u25CF claude \u25CB codex":"\u25CB claude \u25CF codex"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$A.jsxDEV(h,{children:$A.jsxDEV(R,{color:X==="model"?"cyan":void 0,bold:X==="model",children:[X==="model"?"\u25B6 ":" ",g?"\u6A21\u578B":"model",": ",H||(g?"\uFF08\u7559\u7A7A\u8D70\u9ED8\u8BA4\uFF09":"(default)"),X==="model"&&$A.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$A.jsxDEV(h,{children:$A.jsxDEV(R,{color:X==="name"?"cyan":void 0,bold:X==="name",children:[X==="name"?"\u25B6 ":" ",g?"\u540D\u5B57":"name",": ",U||(g?"\uFF08\u7559\u7A7A\u81EA\u52A8\uFF09":"(auto)"),X==="name"&&$A.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$&&$A.jsxDEV(h,{marginTop:1,children:$A.jsxDEV(R,{color:"red",children:["\u2717 ",$]},void 0,!0,void 0,this)},void 0,!1,void 0,this),W&&$A.jsxDEV(h,{marginTop:1,children:$A.jsxDEV(R,{color:"yellow",children:["\u23F3 ",g?"\u521B\u5EFA\u4E2D...":"creating..."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$A.jsxDEV(h,{marginTop:1,gap:2,children:[$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"Tab/\u2191\u2193"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:g?"\u5207\u5B57\u6BB5":"switch"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:g?"\u521B\u5EFA":"create"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),$A.jsxDEV(R,{dimColor:!0,children:g?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}eE();var nI=YA(_B(),1);function d_({onLaunch:B,onExit:I,initialView:C="launcher"}){let[g,F]=U0.useState(C),[N,H]=U0.useState([]),M=U0.useRef(null),U=U0.useRef(!1);U0.useEffect(()=>{if(U.current||C!=="launcher")return;U.current=!0,rY().then(($)=>{if($)F("key-guide")})},[C]);let u=U0.useCallback(($)=>{if(H((O)=>[...O.slice(-4),$]),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)},[]);U0.useEffect(()=>{let $=0;return yN({info:(O)=>u({text:O,type:"info"}),warn:(O)=>u({text:O,type:"warn"}),error:(O)=>u({text:O,type:"error"}),success:(O)=>u({text:O,type:"success"}),spin:(O)=>{let v=++$;return u({id:v,text:O,type:"spin"}),{stop:(d)=>{if(H((l)=>{let r=l.filter((FA)=>FA.id!==v);if(d)r.push({text:d,type:"success"});return r.slice(-5)}),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)},update:(d)=>{if(H((l)=>l.map((r)=>r.id===v?{...r,text:d}:r)),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)}}}}),()=>cF()},[u]);let X=U0.useCallback(()=>F("launcher"),[]),k={info:"cyan",warn:"yellow",error:"red",success:"green",spin:"yellow"},W={info:"\u2139",warn:"\u26A0",error:"\u2717",success:"\u2713",spin:"\u23F3"},z=(()=>{switch(g){case"launcher":return nI.jsxDEV(mY,{onResult:($)=>{switch($.type){case"launch":B($);break;case"agent":F("agents");break;case"providers":F("providers");break;case"stats":F("stats");break;case"config":F("config");break;case"language":F("language");break;case"exit":I();break}}},void 0,!1,void 0,this);case"providers":return nI.jsxDEV(jY,{onDone:($)=>{if($==="client-versions")F("client-versions");else X()}},void 0,!1,void 0,this);case"agents":return nI.jsxDEV(OZ,{onDone:X},void 0,!1,void 0,this);case"client-versions":return nI.jsxDEV(AZ,{onDone:()=>F("providers")},void 0,!1,void 0,this);case"stats":return nI.jsxDEV(iY,{onExit:X},void 0,!1,void 0,this);case"config":return nI.jsxDEV(cY,{isReconfigure:!0,onDone:X},void 0,!1,void 0,this);case"language":return nI.jsxDEV(aY,{onDone:X},void 0,!1,void 0,this);case"key-guide":return nI.jsxDEV(tY,{onDone:($)=>{if($==="configure")F("config");else sY($).then(()=>F("launcher"))}},void 0,!1,void 0,this)}})();return nI.jsxDEV(h,{flexDirection:"column",children:[N.length>0&&nI.jsxDEV(h,{flexDirection:"column",paddingX:2,children:N.map(($,O)=>nI.jsxDEV(R,{color:k[$.type],dimColor:$.type==="info",children:[W[$.type]," ",$.text]},O,!0,void 0,this))},void 0,!1,void 0,this),z]},void 0,!0,void 0,this)}function C9(){return new Promise((B)=>{let I=null;function C(){try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause(),process.stdin.unref()}catch{}}function g(N){I?.clear(),I?.unmount(),I=null,C(),cF(),B(N)}function F(){I?.clear(),I?.unmount(),I=null,C(),cF(),B(null)}I=ED(nI.jsxDEV(d_,{onLaunch:g,onExit:F},void 0,!1,void 0,this))})}sB();_0();await RI();var DC=YA(_B(),1),c_={info:"cyan",success:"green",warning:"yellow",danger:"red"};function l_(B){return c_[B??"info"]??"cyan"}function a_({ann:B,onClose:I}){QQ((F,N)=>{if(N.return||N.escape||F==="q")I()});let C=l_(B.type),g=B.content.split(/\r?\n/);return DC.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:C,paddingX:2,paddingY:1,children:[DC.jsxDEV(h,{children:DC.jsxDEV(R,{color:C,bold:!0,children:["\uD83D\uDCE3 ",B.title]},void 0,!0,void 0,this)},void 0,!1,void 0,this),DC.jsxDEV(h,{marginTop:1,flexDirection:"column",children:g.map((F,N)=>DC.jsxDEV(R,{children:F||" "},N,!1,void 0,this))},void 0,!1,void 0,this),DC.jsxDEV(h,{marginTop:1,children:DC.jsxDEV(R,{dimColor:!0,children:B.popup_once?"\u6309 Enter / Esc / q \u5173\u95ED\uFF0C\u672C\u6761\u53EA\u63D0\u793A\u4E00\u6B21":"\u6309 Enter / Esc / q \u5173\u95ED"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function SZ(B){return new Promise((I)=>{let C=null;C=ED(DC.jsxDEV(a_,{ann:B,onClose:()=>{C?.clear(),C?.unmount(),C=null,I()}},void 0,!1,void 0,this))})}var o_=2000,$Z=100;function YE(B){if(fF||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${B}
|
|
780
780
|
`)}function yZ(B){if(!B)return null;if(B.type!=="tako"&&B.type!=="custom")return null;if(!B.baseUrl||!B.apiKey)return null;return{baseUrl:B.baseUrl.replace(/\/+$/,""),apiKey:B.apiKey}}async function n_(B,I){let C=`${B}/v1/announcements/popup`;try{let g=await fetch(C,{headers:{Authorization:`Bearer ${I}`},signal:AbortSignal.timeout(o_)});if(!g.ok)return YE(`HTTP ${g.status} from ${C}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let N=(await g.json())?.announcement;if(!N)return YE("\u8FD4\u56DE announcement=null\uFF08par \u540E\u53F0\u6CA1\u6709 published+popup=true \u7684\u516C\u544A\uFF09"),null;if(typeof N.id!=="string"||typeof N.title!=="string")return YE(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(N)}`),null;return YE(`\u62C9\u5230\u516C\u544A id=${N.id} title=${N.title} popup_once=${!!N.popup_once}`),{id:N.id,title:N.title,content:N.content??"",type:N.type,popup_once:!!N.popup_once}}catch(g){return YE(`fetch \u5931\u8D25\uFF1A${g instanceof Error?g.message:String(g)}`),null}}async function r_(B){return((await AB()).seenAnnouncementIds??[]).includes(B)}async function s_(B){let I=await AB(),C=I.seenAnnouncementIds??[];if(C.includes(B))return;let g=[...C,B];if(g.length>$Z)g.splice(0,g.length-$Z);I.seenAnnouncementIds=g,await KI(I)}async function t_(){let B=yZ(await cI());if(B)return B;for(let I of await OI()){let C=yZ(I);if(C)return C}return null}async function TZ(){let B=await t_();if(!B){YE("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}YE(`\u67E5\u8BE2\u516C\u544A\uFF1A${B.baseUrl}/v1/announcements/popup`);let I=await n_(B.baseUrl,B.apiKey);if(!I)return;if(I.popup_once&&await r_(I.id)){YE(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${I.id}`);return}if(YE(`\u5F39\u7A97\uFF1A${I.id}`),await SZ(I),I.popup_once)await s_(I.id),YE(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${I.id}`)}async function vZ(){await mN(),await hN(),await KY(),await Promise.race([YN(await OI()),new Promise((B)=>setTimeout(B,3000))]),await TZ();while(!0){let B=await C9();if(!B)break;if(B.type==="agent")continue;let I=iI(B.clientId);if(!I)continue;PQ("menu_action",{action:"launch",client_id:B.clientId});let C=await r3(B.clientId);if(!C){nA.warn(jA("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546");continue}let F=process.platform==="win32"&&!!process.env.TAKO_WINDOWS_HANDOFF_FILE,N=await n3(I,{projectPath:B.projectPath,args:B.args,envVars:B.envVars,selectedOptionIds:B.selectedOptionIds,providerContext:C,relaunchTakoOnWindows:F});if(!N.success)nA.error(N.error||jA("cli.launchFailed"));else if(F)process.exit(0)}}eE();y2();sB();kQ();uE();SH();import{join as j0}from"path";function _Z(B,I){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',`"${B}" "${I}" %*`,'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
|
|
781
781
|
`)}function VZ(B,I){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",`& "${B}" "${I}" @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
|
|
782
|
-
`)}var g9="tako-cli",p1="0.3.
|
|
782
|
+
`)}var g9="tako-cli",p1="0.3.12";function e_(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number);for(let F=0;F<3;F++){let N=C[F]||0,H=g[F]||0;if(N>H)return 1;if(N<H)return-1}return 0}async function AV(){try{let B=await aI(),I=await fetch(`${B}/${g9}/latest`,{signal:AbortSignal.timeout(5000)});if(!I.ok)return null;return(await I.json()).version||null}catch{return null}}async function BV(){let B=await AV();if(!B)return{hasUpdate:!1,currentVersion:p1};return{hasUpdate:e_(B,p1)>0,latestVersion:B,currentVersion:p1}}async function PZ(){let B=await import("fs/promises"),I=j0(uQ,"bin"),C=j0(I,"tako"),g=j0(v0,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32")await B.writeFile(j0(I,"tako.cmd"),_Z(iQ,g)),await B.writeFile(j0(I,"tako.ps1"),VZ(iQ,g));else{let N=`#!/bin/bash
|
|
783
783
|
exec "${iQ}" "${g}" "$@"
|
|
784
784
|
`;await B.writeFile(C,N,{mode:493})}}async function QV(B){let I=pg(),C=`\u6B63\u5728\u66F4\u65B0\u5230 v${B}`;I.start(C);try{let g=await aI(),F=await import("fs/promises");await F.mkdir(v0,{recursive:!0});let N=j0(v0,"package.json");try{await F.access(N)}catch{await F.writeFile(N,JSON.stringify({name:"tako-local",private:!0},null,2))}let H=Bun.spawn([iQ,"update",g9,"--latest"],{cwd:v0,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:g}}),M=await l3(H,C,(U)=>I.update(U));if(await H.exited,H.exitCode===0)return await PZ(),PQ("cli_updated",{from_version:p1,to_version:B}),I.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${B}`),!0;else return I.stop(`\u66F4\u65B0\u5931\u8D25: ${M||"\u672A\u77E5\u9519\u8BEF"}`),!1}catch(g){return I.stop(`\u66F4\u65B0\u5931\u8D25: ${g instanceof Error?g.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function IV(){let B=await import("fs/promises"),I=j0(v0,"bun.lock");try{await B.unlink(I)}catch{}}async function EV(){let B=await import("fs/promises");try{let I=await aI();await B.mkdir(v0,{recursive:!0});let C=j0(v0,"package.json");try{await B.access(C)}catch{await B.writeFile(C,JSON.stringify({name:"tako-local",private:!0},null,2))}await IV();let g=Bun.spawn([iQ,"add",`${g9}@latest`],{cwd:v0,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:I}});return await g.exited,g.exitCode===0}catch{return!1}}async function CV(){let B=await import("fs/promises"),I=j0(uQ,"bin"),C=j0(I,"tako"),g=j0(v0,"node_modules/tako-cli/dist/index.js");try{let F=await B.readFile(C,"utf-8");if(F.includes("bun run tako-cli")||F.includes("run tako-cli")){nA.info(jA("updater.migrating"));let N=!1;try{await B.access(g),N=!0}catch{N=!1}if(!N){let H=pg();if(H.start(jA("updater.installingLocally")),!await EV())return H.stop(jA("updater.migrationFailed")),!1;H.stop(jA("updater.installComplete"))}return await PZ(),!0}}catch{}return!1}async function i1(){try{if(await CV())nA.info(jA("updater.migrationComplete")),process.exit(0);let I=await BV();if(I.hasUpdate&&I.latestVersion){if(nA.warn(jA("updater.newVersionAvailable",{version:I.latestVersion,current:p1})),await QV(I.latestVersion))nA.info(jA("updater.pleaseRestart")),process.exit(0)}}catch{}}kI();kQ();uE();import{homedir as DV}from"os";var zB={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 aB={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var MQ={directory:{icon:zB.brightYellow,text:zB.brightGreen},git:{icon:zB.brightBlue,text:zB.brightBlue,clean:zB.brightGreen,dirty:zB.brightYellow,conflict:zB.brightRed},model:{icon:zB.brightCyan,text:zB.brightCyan},version:{icon:zB.brightWhite,text:zB.brightBlack},outputStyle:{icon:zB.brightMagenta,text:zB.brightMagenta},context:{icon:zB.brightMagenta,low:zB.brightGreen,medium:zB.brightYellow,high:zB.brightRed},todayUsage:{icon:zB.brightGreen,text:zB.brightGreen},separator:zB.brightBlack},FC={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 gV(){return!1}function ZE(B){let I=FC[B];if(typeof I==="string")return I;return gV()?I.nerd:I.plain}class K4{id="directory";render(B){let I=this.formatPath(B.workspace.current_dir),C=ZE("directory");return`${MQ.directory.icon}${C}${aB.reset} ${MQ.directory.text}${I}${aB.reset}`}formatPath(B){let I=DV();if(B===I)return"~";if(B.startsWith(I+"/"))return"~"+B.slice(I.length);return B}}class R4{id="git";async render(B){let I=B.workspace.current_dir;if(!await this.isGitRepository(I))return null;let g=await this.getBranch(I);if(!g)return null;let{status:F,statusColor:N}=await this.getStatus(I),{ahead:H,behind:M}=await this.getAheadBehind(I),U=ZE("git"),u=`${MQ.git.icon}${U}${aB.reset} ${MQ.git.text}${g}${aB.reset}`;if(u+=` ${N}${F}${aB.reset}`,H>0)u+=` ${MQ.git.clean}${FC.gitAhead}${H}${aB.reset}`;if(M>0)u+=` ${MQ.git.dirty}${FC.gitBehind}${M}${aB.reset}`;return u}async isGitRepository(B){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:B,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch(B){try{let I=Bun.spawn(["git","branch","--show-current"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited===0&&C.trim())return C.trim();let F=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),N=await new Response(F.stdout).text();if(await F.exited===0&&N.trim())return`detached:${N.trim()}`;return null}catch{return null}}async getStatus(B){try{let I=Bun.spawn(["git","status","--porcelain"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited!==0)return{status:FC.gitClean,statusColor:MQ.git.clean};let F=C.trim();if(!F)return{status:FC.gitClean,statusColor:MQ.git.clean};if(F.includes("UU")||F.includes("AA")||F.includes("DD"))return{status:FC.gitConflict,statusColor:MQ.git.conflict};return{status:FC.gitDirty,statusColor:MQ.git.dirty}}catch{return{status:FC.gitClean,statusColor:MQ.git.clean}}}async getAheadBehind(B){try{let I=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text(),F=await I.exited===0?parseInt(C.trim(),10)||0:0,N=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:B,stdout:"pipe",stderr:"pipe"}),H=await new Response(N.stdout).text(),U=await N.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:F,behind:U}}catch{return{ahead:0,behind:0}}}}var FV={"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 W4{id="model";render(B){let I=B.model.id,C=FV[I]||this.simplifyModelName(B.model.display_name),g=ZE("model");return`${MQ.model.icon}${g}${aB.reset} ${MQ.model.text}${C}${aB.reset}`}simplifyModelName(B){let I=B.replace(/^Claude\s+/i,"");return I=I.replace(/-\d{8}$/,""),I}}var wV=200000;class XE{id="context";static cache=null;static CACHE_TTL=5000;async render(B){let I=await this.getTokensWithCache(B.transcript_path),g=uN(B.model.id)?.contextWindow??wV,F=Math.round((I??0)/g*100),N=Math.max(0,100-F),H=ZE("context"),M=N<=20?zB.brightRed:N<=50?zB.brightYellow:zB.brightGreen;return`${MQ.context.icon}${H}${aB.reset} ${M}${N}%${aB.reset}`}async getTokensWithCache(B){let I=Date.now();if(XE.cache&&XE.cache.path===B&&I-XE.cache.timestamp<XE.CACHE_TTL)return XE.cache.tokens;let C=await this.parseTranscriptTokens(B);return XE.cache={path:B,tokens:C,timestamp:I},C}async parseTranscriptTokens(B){try{let I=Bun.file(B);if(!await I.exists())return null;let C=await I.text();if(!C.trim())return null;let g=C.split(`
|
|
785
|
-
`).filter((F)=>F.trim());for(let F=g.length-1;F>=0;F--)try{let N=JSON.parse(g[F]);if(N.type==="assistant"&&N.message?.usage){let H=N.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}s3();sB();_0();class Y4{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await BC("claude-code")??await cI();if(!B){let C=await jg().catch(()=>"");if(!C)return null;let g=await DD(C);return this.renderTako(g)}let I=await T1(B);if(I.status!=="ok")return null;switch(I.provider){case"tako":return this.renderTako(I);case"claude-subscription":return this.renderClaudeSub(I);case"codex-subscription":return this.renderCodexSub(I);default:return null}}catch{return null}}renderTako(B){if(B.status!=="ok")return null;if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit))return this.renderSub(B);let C=B.daily??B.primary??B.secondary;if(!C)return null;let g=C.costUsed??0;return`${this.icon()} ${zB.brightGreen}Day:${this.fmtCost(g)}${aB.reset}`}renderSub(B){let I=(g,F,N)=>{if(g&&g>=1440)return`${Math.round(g/1440)}d`;if(g)return`${Math.round(g/60)}h`;return N?`${N}d`:`${F}h`},C=[];if(B.primary)C.push(this.remainChunk(I(B.primary.windowMinutes,5),B.primary.usedPct));if(B.secondary)C.push(this.remainChunk(I(B.secondary.windowMinutes,24,7),B.secondary.usedPct));if(B.modelLimits?.opus)C.push(this.remainChunk("opus",B.modelLimits.opus.usedPct));if(!C.length)return null;return`${this.icon()} ${C.join(`${aB.dim} \xB7 ${aB.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?zB.brightRed:I>=70?zB.brightYellow:zB.brightGreen;return`${B}:${C}${I}%${aB.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),g=C<=10?zB.brightRed:C<=30?zB.brightYellow:zB.brightGreen;return`${B} \u5269 ${g}${C}%${aB.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${zB.brightGreen}Session:${this.fmtCost(I)}${aB.reset}`}icon(){return`${MQ.todayUsage.icon}${ZE("todayUsage")}${aB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class D9{separator=`${MQ.separator} \u2502 ${aB.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let g of I){let F=B.get(g);if(F)C.push(F)}return C.join(this.separator)}}import{join as GD,dirname as GV}from"path";import{homedir as F9}from"os";import{mkdir as NV}from"fs/promises";var mZ=GD(F9(),".tako"),HV=GD(mZ,"cli"),JV=GD(mZ,"bin",process.platform==="win32"?"tako.cmd":"tako");function MV(){if(process.platform==="win32")return GD(process.env.APPDATA||GD(F9(),"AppData","Roaming"),"claude","settings.json");return GD(F9(),".claude","settings.json")}var UV=process.platform==="win32",LV="0.1.48";function uV(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number),F=Math.max(C.length,g.length);for(let N=0;N<F;N++){let H=C[N]||0,M=g[N]||0;if(H!==M)return H-M}return 0}async function KV(){let B=GD(HV,"node_modules","tako-cli","package.json");try{let I=Bun.file(B);if(!await I.exists())return null;return(await I.json()).version||null}catch{return null}}async function RV(){let B=await KV();if(!B)return!1;return uV(B,LV)>=0}function WV(){return JV}function YV(){return`"${ZV(WV())}" statusline`}function ZV(B){if(UV)return B.replace(/\\/g,"/");return B}async function w9(){if(!await RV())return;let I=MV(),C={};try{let N=Bun.file(I);if(await N.exists())C=await N.json()}catch{}let g={type:"command",command:YV(),padding:0},F=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof F==="string"&&F.includes("tako statusline"))return;C.statusLine=g,await NV(GV(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var XV=[new K4,new R4,new W4,new XE,new Y4];async function qV(B){let I=await Promise.all(XV.map(async(F)=>{try{let N=await F.render(B);return{id:F.id,content:N}}catch{return{id:F.id,content:null}}})),C=new Map;for(let{id:F,content:N}of I)C.set(F,N);return new D9().render(C)}async function hZ(){try{let B=await Bun.stdin.json(),I=await qV(B);console.log(I)}catch{process.exit(0)}}var kV={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function Z4(B,I,C,g){let F=I.filter((M)=>M!==C),N=await zV(B,F,g);if(B!=="claude-code")return N?[N,...F]:F;let H=[];if(N)H.push(N);for(let M=0;M<F.length;M++){let U=F[M];if(U==="--model"&&M+1<F.length){H.push(U,F2(F[M+1])),M++;continue}if(U.startsWith("--model=")){let u=U.slice(8);H.push(`--model=${F2(u)}`);continue}H.push(U)}return H}async function zV(B,I,C){let g=kV[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??a3)(B)).includes(g.optionId)?g.flag:null}sB();var k4="0.3.
|
|
785
|
+
`).filter((F)=>F.trim());for(let F=g.length-1;F>=0;F--)try{let N=JSON.parse(g[F]);if(N.type==="assistant"&&N.message?.usage){let H=N.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}s3();sB();_0();class Y4{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await BC("claude-code")??await cI();if(!B){let C=await jg().catch(()=>"");if(!C)return null;let g=await DD(C);return this.renderTako(g)}let I=await T1(B);if(I.status!=="ok")return null;switch(I.provider){case"tako":return this.renderTako(I);case"claude-subscription":return this.renderClaudeSub(I);case"codex-subscription":return this.renderCodexSub(I);default:return null}}catch{return null}}renderTako(B){if(B.status!=="ok")return null;if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit))return this.renderSub(B);let C=B.daily??B.primary??B.secondary;if(!C)return null;let g=C.costUsed??0;return`${this.icon()} ${zB.brightGreen}Day:${this.fmtCost(g)}${aB.reset}`}renderSub(B){let I=(g,F,N)=>{if(g&&g>=1440)return`${Math.round(g/1440)}d`;if(g)return`${Math.round(g/60)}h`;return N?`${N}d`:`${F}h`},C=[];if(B.primary)C.push(this.remainChunk(I(B.primary.windowMinutes,5),B.primary.usedPct));if(B.secondary)C.push(this.remainChunk(I(B.secondary.windowMinutes,24,7),B.secondary.usedPct));if(B.modelLimits?.opus)C.push(this.remainChunk("opus",B.modelLimits.opus.usedPct));if(!C.length)return null;return`${this.icon()} ${C.join(`${aB.dim} \xB7 ${aB.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?zB.brightRed:I>=70?zB.brightYellow:zB.brightGreen;return`${B}:${C}${I}%${aB.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),g=C<=10?zB.brightRed:C<=30?zB.brightYellow:zB.brightGreen;return`${B} \u5269 ${g}${C}%${aB.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${zB.brightGreen}Session:${this.fmtCost(I)}${aB.reset}`}icon(){return`${MQ.todayUsage.icon}${ZE("todayUsage")}${aB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class D9{separator=`${MQ.separator} \u2502 ${aB.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let g of I){let F=B.get(g);if(F)C.push(F)}return C.join(this.separator)}}import{join as GD,dirname as GV}from"path";import{homedir as F9}from"os";import{mkdir as NV}from"fs/promises";var mZ=GD(F9(),".tako"),HV=GD(mZ,"cli"),JV=GD(mZ,"bin",process.platform==="win32"?"tako.cmd":"tako");function MV(){if(process.platform==="win32")return GD(process.env.APPDATA||GD(F9(),"AppData","Roaming"),"claude","settings.json");return GD(F9(),".claude","settings.json")}var UV=process.platform==="win32",LV="0.1.48";function uV(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number),F=Math.max(C.length,g.length);for(let N=0;N<F;N++){let H=C[N]||0,M=g[N]||0;if(H!==M)return H-M}return 0}async function KV(){let B=GD(HV,"node_modules","tako-cli","package.json");try{let I=Bun.file(B);if(!await I.exists())return null;return(await I.json()).version||null}catch{return null}}async function RV(){let B=await KV();if(!B)return!1;return uV(B,LV)>=0}function WV(){return JV}function YV(){return`"${ZV(WV())}" statusline`}function ZV(B){if(UV)return B.replace(/\\/g,"/");return B}async function w9(){if(!await RV())return;let I=MV(),C={};try{let N=Bun.file(I);if(await N.exists())C=await N.json()}catch{}let g={type:"command",command:YV(),padding:0},F=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof F==="string"&&F.includes("tako statusline"))return;C.statusLine=g,await NV(GV(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var XV=[new K4,new R4,new W4,new XE,new Y4];async function qV(B){let I=await Promise.all(XV.map(async(F)=>{try{let N=await F.render(B);return{id:F.id,content:N}}catch{return{id:F.id,content:null}}})),C=new Map;for(let{id:F,content:N}of I)C.set(F,N);return new D9().render(C)}async function hZ(){try{let B=await Bun.stdin.json(),I=await qV(B);console.log(I)}catch{process.exit(0)}}var kV={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function Z4(B,I,C,g){let F=I.filter((M)=>M!==C),N=await zV(B,F,g);if(B!=="claude-code")return N?[N,...F]:F;let H=[];if(N)H.push(N);for(let M=0;M<F.length;M++){let U=F[M];if(U==="--model"&&M+1<F.length){H.push(U,F2(F[M+1])),M++;continue}if(U.startsWith("--model=")){let u=U.slice(8);H.push(`--model=${F2(u)}`);continue}H.push(U)}return H}async function zV(B,I,C){let g=kV[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??a3)(B)).includes(g.optionId)?g.flag:null}sB();var k4="0.3.12";function JP(){console.log(`
|
|
786
786
|
${jA("cli.version",{version:k4})}
|
|
787
787
|
|
|
788
788
|
${jA("cli.usage")}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tako-cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"description": "Tako CLI — unified launcher for AI coding tools (Claude Code, Codex, Gemini) with multi-agent session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/tako-dev/cli#readme",
|