tako-cli 0.2.60 → 0.3.1
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
|
@@ -348,7 +348,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
348
348
|
{fields}`,zh:`\u68C0\u6D4B\u5230 Claude Code settings \u4E2D\u5B58\u5728\u4E0E Tako \u51B2\u7A81\u7684\u914D\u7F6E\uFF1A
|
|
349
349
|
{fields}`},confirmClean:{en:"Clean these settings? Tako will manage them automatically at launch",zh:"\u662F\u5426\u6E05\u7406\u8FD9\u4E9B\u914D\u7F6E\uFF1FTako \u542F\u52A8\u65F6\u4F1A\u81EA\u52A8\u6CE8\u5165\u6B63\u786E\u7684\u503C"},settingsCleaned:{en:"Settings cleaned, Tako will manage these configs automatically",zh:"\u5DF2\u6E05\u7406\u5B8C\u6210\uFF0CTako \u4F1A\u81EA\u52A8\u7BA1\u7406\u8FD9\u4E9B\u914D\u7F6E"},cleanSkipped:{en:"Skipped. Note: hardcoded settings may cause issues with Tako",zh:"\u5DF2\u8DF3\u8FC7\u3002\u6CE8\u610F\uFF1A\u5199\u6B7B\u7684\u914D\u7F6E\u53EF\u80FD\u5BFC\u81F4 Tako \u542F\u52A8\u5F02\u5E38"},subscriptionMissingAuth:{en:"Selected Claude account has no captured credentials. Run `claude /login` for that account, then re-detect in Tako.",zh:"\u76EE\u6807 Claude \u8D26\u53F7\u7F3A\u5C11\u51ED\u636E\u3002\u8BF7\u7528 `claude /login` \u767B\u5F55\u8BE5\u8D26\u53F7\u540E\uFF0C\u8BA9 Tako \u91CD\u65B0\u68C0\u6D4B\u4E00\u6B21\u3002"},subscriptionSwitched:{en:"Switched Claude Code login to {email}",zh:"\u5DF2\u5207\u6362 Claude Code \u767B\u5F55\u8D26\u53F7\u4E3A {email}"},unknownCurrentAccount:{en:"Current Claude login ({email}) is not tracked by Tako; its tokens will be overwritten.",zh:"\u5F53\u524D Claude \u767B\u5F55\u8D26\u53F7 ({email}) \u672A\u88AB Tako \u8BB0\u5F55\uFF0C\u5207\u6362\u540E\u8BE5\u8D26\u53F7 token \u5C06\u88AB\u8986\u76D6\u3002"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},providers:{management:{en:"Manage Providers",zh:"\u7BA1\u7406\u670D\u52A1\u5546"},selectProvider:{en:"Select provider:",zh:"\u9009\u62E9\u670D\u52A1\u5546\uFF1A"},selectType:{en:"Provider type:",zh:"\u670D\u52A1\u5546\u7C7B\u578B\uFF1A"},enterName:{en:"Provider name:",zh:"\u670D\u52A1\u5546\u540D\u79F0\uFF1A"},enterApiKey:{en:"API Key:",zh:"API Key\uFF1A"},enterBaseUrl:{en:"Base URL:",zh:"\u57FA\u7840 URL\uFF1A"},add:{en:"Add Provider",zh:"\u6DFB\u52A0\u670D\u52A1\u5546"},edit:{en:"Edit Provider",zh:"\u7F16\u8F91\u670D\u52A1\u5546"},delete:{en:"Delete Provider",zh:"\u5220\u9664\u670D\u52A1\u5546"},setDefault:{en:"Set as Default",zh:"\u8BBE\u4E3A\u9ED8\u8BA4"},rescan:{en:"Re-scan Subscriptions",zh:"\u91CD\u65B0\u626B\u63CF\u8BA2\u9605"},back:{en:"Back",zh:"\u8FD4\u56DE"},added:{en:"Provider added",zh:"\u670D\u52A1\u5546\u5DF2\u6DFB\u52A0"},deleted:{en:"Provider deleted",zh:"\u670D\u52A1\u5546\u5DF2\u5220\u9664"},updated:{en:"Provider updated",zh:"\u670D\u52A1\u5546\u5DF2\u66F4\u65B0"},defaultSet:{en:"Default provider set",zh:"\u9ED8\u8BA4\u670D\u52A1\u5546\u5DF2\u8BBE\u7F6E"},noProviders:{en:"No providers configured",zh:"\u672A\u914D\u7F6E\u670D\u52A1\u5546"},noCompatible:{en:"No provider supports {client}",zh:"\u6CA1\u6709\u652F\u6301 {client} \u7684\u670D\u52A1\u5546"},defaultLabel:{en:"(default)",zh:"\uFF08\u9ED8\u8BA4\uFF09"},detected:{en:"Detected: {name}",zh:"\u68C0\u6D4B\u5230\uFF1A{name}"},confirmDelete:{en:"Delete {name}?",zh:"\u786E\u8BA4\u5220\u9664 {name}\uFF1F"},scanComplete:{en:"Scan complete, found {count} new provider(s)",zh:"\u626B\u63CF\u5B8C\u6210\uFF0C\u53D1\u73B0 {count} \u4E2A\u65B0\u670D\u52A1\u5546"}}}});var zM={};H2(zM,{writeClaudeAuth:()=>H$,readClaudeAuth:()=>N$});import{homedir as pZ,platform as C$,userInfo as g$}from"os";import{join as lU}from"path";function dZ(){return[process.env.USER||(()=>{try{return g$().username}catch{return""}})(),"root"].filter(Boolean)}async function D$(B){let I=Bun.spawn(["security","find-generic-password","-s",aZ,"-a",B,"-w"],{stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited!==0)return null;try{return JSON.parse(C.trim())}catch{return null}}async function F$(){for(let B of dZ()){let I=await D$(B);if(I)return I}return null}async function w$(B){let I=JSON.stringify(B),C=dZ()[0],D=Bun.spawn(["security","add-generic-password","-U","-s",aZ,"-a",C,"-w",I],{stdout:"pipe",stderr:"pipe"}),w=await D.exited;if(w!==0){let N=await new Response(D.stderr).text();throw Error(`security add-generic-password failed (${w}): ${N.trim()}`)}}async function G$(){try{let B=await import("fs/promises");return JSON.parse(await B.readFile(cZ,"utf-8"))}catch{return null}}async function u$(B){let I=await import("fs/promises");await I.mkdir(oZ,{recursive:!0}),await I.writeFile(cZ,JSON.stringify(B,null,2)+`
|
|
350
350
|
`,{mode:384})}async function N$(){let B=lZ?await F$():await G$(),I;try{let C=await import("fs/promises"),D=JSON.parse(await C.readFile(cU,"utf-8"));if(D.oauthAccount&&typeof D.oauthAccount==="object")I=D.oauthAccount}catch{}return{credentials:B??void 0,oauthAccount:I}}async function H$(B){if(B.credentials)if(lZ)await w$(B.credentials);else await u$(B.credentials);if(B.oauthAccount){let I=await import("fs/promises"),C={};try{C=JSON.parse(await I.readFile(cU,"utf-8"))}catch{}C.oauthAccount=B.oauthAccount,await I.writeFile(cU,JSON.stringify(C,null,2)+`
|
|
351
|
-
`)}}var aZ="Claude Code-credentials",oZ,cZ,cU,lZ;var $M=aA(()=>{oZ=lU(pZ(),".claude"),cZ=lU(oZ,".credentials.json"),cU=lU(pZ(),".claude.json"),lZ=C$()==="darwin"});var nZ={};H2(nZ,{updateProvider:()=>C8,setDefaultProvider:()=>sU,setClientProvider:()=>jN,resolveXiaomiBaseUrl:()=>QJ,resolveProviderContext:()=>jC,migrateIfNeeded:()=>rU,mergeDetectedProviders:()=>xN,isProviderCompatible:()=>u4,getProvidersForClient:()=>qF,getProviders:()=>bC,getProvider:()=>M$,getModelChoices:()=>EN,getDefaultSupportedClients:()=>ug,getDefaultProvider:()=>Hg,getDefaultModel:()=>G4,getDefaultBaseUrl:()=>eL,getClientProvider:()=>SF,fixupProviders:()=>tU,detectProviders:()=>iN,deleteProvider:()=>nU,addProvider:()=>E8,XIAOMI_TOKEN_PLAN_URL:()=>nR,XIAOMI_ANTHROPIC_URL:()=>BJ,PROVIDER_TYPE_NAMES:()=>jg,DEEPSEEK_ANTHROPIC_URL:()=>AJ});async function bC(){return(await vQ()).providers??[]}async function M$(B){return(await bC()).find((C)=>C.id===B)}async function Hg(){let B=await vQ(),I=B.providers??[];if(I.length===0)return;if(B.defaultProviderId){let C=I.find((D)=>D.id===B.defaultProviderId);if(C)return C}return I[0]}async function qF(B){return(await bC()).filter((D)=>u4(D,B)).sort((D,w)=>{let N=D.lastUsedAt?new Date(D.lastUsedAt).getTime():0,J=w.lastUsedAt?new Date(w.lastUsedAt).getTime():0;if(N!==J)return J-N;return new Date(w.createdAt).getTime()-new Date(D.createdAt).getTime()})}async function E8(B){let I=await vQ(),C={...B,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(I.providers=[...I.providers??[],C],!I.defaultProviderId)I.defaultProviderId=C.id;return await GC(I),C}async function C8(B,I){let C=await vQ(),D=C.providers??[],w=D.findIndex((N)=>N.id===B);if(w===-1)return;D[w]={...D[w],...I},C.providers=D,await GC(C)}async function nU(B){let I=await vQ();if((I.providers??[]).find((D)=>D.id===B)?.builtin)return;if(I.providers=(I.providers??[]).filter((D)=>D.id!==B),I.defaultProviderId===B)I.defaultProviderId=I.providers[0]?.id;if(I.clientProviderMap){for(let[D,w]of Object.entries(I.clientProviderMap))if(w===B)delete I.clientProviderMap[D]}await GC(I)}async function sU(B){let I=await vQ();if(!(I.providers??[]).some((D)=>D.id===B))return;I.defaultProviderId=B,await GC(I)}async function SF(B){let I=await vQ(),C=I.clientProviderMap?.[B];if(C){let D=(I.providers??[]).find((w)=>w.id===C);if(D&&u4(D,B))return D}return}async function jN(B,I){let C=await vQ();C.clientProviderMap={...C.clientProviderMap,[B]:I};let D=C.providers??[],w=D.findIndex((N)=>N.id===I);if(w!==-1)D[w]={...D[w],lastUsedAt:new Date().toISOString()},C.providers=D;await GC(C)}function jC(B){return{type:B.type,apiKey:B.apiKey,baseUrl:B.baseUrl,authData:B.authData,model:B.model,modelContextWindow:B.modelContextWindow}}async function L$(){try{let B=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),I=await new Response(B.stdout).text();if(await B.exited!==0)return null;let D=JSON.parse(I.trim());if(!D.loggedIn||D.authMethod!=="claude.ai")return null;let w=D.subscriptionType||"pro",N=D.email||"",J=`Claude ${w.charAt(0).toUpperCase()+w.slice(1)}${N?` (${N})`:""}`,{readClaudeAuth:R}=await Promise.resolve().then(() => ($M(),zM)),X=await R(),k=X.credentials||X.oauthAccount?{credentials:X.credentials,oauthAccount:X.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:J,type:"claude-subscription",supportedClients:ug("claude-subscription"),createdAt:new Date().toISOString(),email:N,subscriptionType:w,authData:k}}catch{return null}}async function J$(){try{let{homedir:B}=await import("os"),{join:I}=await import("path"),C=await import("fs/promises"),D=I(B(),".codex","auth.json"),w=JSON.parse(await C.readFile(D,"utf-8"));if(w.auth_mode!=="chatgpt"||!w.tokens?.access_token)return null;let N="";try{N=JSON.parse(atob(w.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:w,email:N}}catch{return null}}async function U$(){let B=await J$();if(B){let{auth:I,email:C}=B;return{id:crypto.randomUUID(),name:C?`Codex Plus (${C})`:"Codex Subscription",type:"codex-subscription",email:C||void 0,supportedClients:ug("codex-subscription"),authData:I,createdAt:new Date().toISOString()}}try{let I=Bun.spawn(["codex","login","status"],{stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited!==0||!C.includes("Logged in")||C.includes("cr_"))return null;return{id:crypto.randomUUID(),name:"Codex Subscription",type:"codex-subscription",supportedClients:ug("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function iN(){let B=[],[I,C]=await Promise.all([L$(),U$()]);if(I)B.push(I);if(C)B.push(C);return B}async function xN(B){let I=await vQ(),C=I.providers??[],D=new Set(C.map((N)=>`${N.type}:${N.email||""}`)),w=0;for(let N of B){let J=`${N.type}:${N.email||""}`;if(!D.has(J))C.push(N),D.add(J),w++;else if(N.authData){let R=C.find((X)=>X.type===N.type&&X.email===N.email);if(R)R.authData=N.authData}}if(w>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await GC(I)}return w}async function rU(){let B=await vQ();if(!B.apiKey||B.providers&&B.providers.length>0)return!1;let I={id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:wC,apiId:B.apiId,supportedClients:ug("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await GC(B),!0}async function tU(){let B=await vQ(),I=B.providers??[],C=!1;for(let D of I)if(D.type==="tako"&&!D.builtin)D.builtin=!0,C=!0;if(B.apiKey&&!I.some((D)=>D.type==="tako")){if(I.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:wC,apiId:B.apiId,supportedClients:ug("tako"),createdAt:new Date().toISOString(),builtin:!0}),!B.defaultProviderId)B.defaultProviderId=I[I.length-1].id;C=!0}if(C)B.providers=I,await GC(B)}var $D=aA(()=>{jE();fw();fw()});var DX={};H2(DX,{showRegionInfo:()=>Q7,getNpmRegistry:()=>Mg,getMirrors:()=>CX,getLatestBunVersion:()=>gX,getBunMirrorDownloadUrl:()=>B7,getBunInstallCommand:()=>A7,detectRegion:()=>jw,MIRRORS:()=>pN});import{readFileSync as _$,writeFileSync as V$,mkdirSync as b$}from"fs";import{join as QX}from"path";import{homedir as IX}from"os";function i$(){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 x$(){try{let B=_$(EX,"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>j$)return null;return I.region}catch{return null}}function BX(B){try{b$(QX(IX(),".tako"),{recursive:!0}),V$(EX,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function p$(){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 a$(){if(vM)return vM;return vM=(async()=>{let I=[d$,o$,c$,l$].map((C)=>C().then((D)=>D?D:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((D,w)=>setTimeout(()=>w(Error("net-timeout")),1200))])}catch{return"cn"}})(),vM}async function jw(){if(v4)return v4;let B=i$();if(B)return v4=B,B;let I=x$();if(I)return v4=I,I;let C=p$();if(C)return v4=C,BX(C),C;let D=await a$();return v4=D,BX(D),D}async function d$(){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 o$(){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 c$(){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 l$(){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(),D=C?.data?.location;if(Array.isArray(D)&&D[0]==="\u4E2D\u56FD")return"cn";let w=C?.data?.country_code;return w==="CN"?"cn":w?"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 D=JSON.parse(C.trim());if(D.proCode&&/^\d{6}$/.test(D.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 CX(){let B=await jw();return pN[B]}async function Mg(){return(await CX()).npm}function A7(){return"curl -fsSL https://bun.sh/install | bash"}async function gX(){let B=pN.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let D=(await I.json()).map((w)=>w.name.replace(/\/$/,"")).filter((w)=>/^bun-v\d+\.\d+\.\d+$/.test(w)).sort((w,N)=>{let J=w.replace("bun-v","").split(".").map(Number),R=N.replace("bun-v","").split(".").map(Number);for(let X=0;X<3;X++)if(J[X]!==R[X])return R[X]-J[X];return 0});if(D.length===0)throw Error("No bun versions found on mirror");return D[0]}async function B7(){let B=pN.cn.bunBinary,I=await gX(),D={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",w=process.arch==="arm64"?"aarch64":"x64",N=`bun-${D}-${w}`;return`${B}/${I}/${N}.zip`}async function Q7(){let B=await jw(),I=pN[B];if(B==="cn")LQ.info(`${AQ("region.usingChinaMirror")} npm: ${I.npm}`);else LQ.info(AQ("region.usingGlobalMirror"))}var v4=null,vM=null,EX,j$=2592000000,pN;var f4=aA(()=>{rE();YF();EX=QX(IX(),".tako","region.json"),pN={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var n$=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 D=await C;D!==null&&(B[I]=D)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,D){try{let w=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(w.status===401)return null;if(w.status!==200&&w.status!==202)throw Error(`HTTP error! status: ${w.status}`);let N=await w.text();return N?JSON.parse(N):null}catch(w){if(D<this.maxRetries){let N=this.initialRetryDelay*2**D;return await new Promise((J)=>setTimeout(J,N)),this.post(B,I,C,D+1)}return console.error("Max retries reached:",w),null}}async fetch(B,I,C={}){let D=`${this.baseUrl}${B}`;return this.post(D,I,C,0)}},FX=class{constructor(B){this.options=B,this.queue=[];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.0.4",this.api=new n$({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send(B){return this.options.disabled||this.options.filter&&!this.options.filter(B)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push(B),Promise.resolve()):this.api.fetch("/track",B)}setGlobalProperties(B){this.global={...this.global,...B}}async track(B,I){return this.log("track event",B,I),this.send({type:"track",payload:{name:B,profileId:I?.profileId??this.profileId,properties:{...this.global??{},...I??{}}}})}async identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}async alias(B){}async increment(B){return this.send({type:"increment",payload:B})}async decrement(B){return this.send({type:"decrement",payload:B})}async revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}async fetchDeviceId(){return(await this.api.fetch("/track/device-id",void 0,{method:"GET",keepalive:!1}))?.deviceId??""}clear(){this.profileId=void 0}flush(){this.queue.forEach((B)=>{this.send({...B,payload:{...B.payload,profileId:B.payload.profileId??this.profileId}})}),this.queue=[]}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var wX=()=>{};function GX(){if(!T4)T4=new FX({clientId:s$,clientSecret:r$,apiUrl:t$});return T4}function uX(B,I,C){let D=GX().track(B,{profileId:I,...C}).catch(()=>{});fM.push(D)}function NX(B,I){let{email:C,...D}=I,w=GX().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(D.platform||""),properties:D}).catch(()=>{});fM.push(w)}async function HX(){if(await Promise.allSettled(fM),fM.length=0,T4){try{T4.flush()}catch{}T4=null}}var s$="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",r$="sec_1e0ea34016bc3a5f8ef5",t$="https://op.shiroha.tech/api",T4=null,fM;var MX=aA(()=>{wX();fM=[]});function LX(){return{cli_version:e$,platform:process.platform,arch:process.arch,locale:ag(),node_version:process.version}}function JX(B){return Bun.hash(B).toString(16).slice(0,8)}var e$="0.2.60";var I7=aA(()=>{rE()});async function UX(){if(h4!==null)return h4;try{return h4=(await vQ()).telemetryEnabled!==!1,h4}catch{return h4=!1,!1}}async function RX(){try{let B=await vQ();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,D=C?I.find((w)=>w.id===C):I[0];if(D){if(D.apiId)return D.apiId;if(D.email)return D.email;return D.id}return"anonymous"}catch{return"anonymous"}}async function vD(){if(E7)return;try{if(!await UX())return;let B=await vQ(),I=await RX();if(I==="anonymous")return;let D=(B.providers??[]).find((N)=>N.email)?.email,w=await jw();NX(I,{...D?{email:D}:{},region:w,locale:ag(),first_seen_version:Av,platform:process.platform,arch:process.arch}),E7=!0}catch{}}function u0(B,I){Bv(B,I).catch(()=>{})}async function Bv(B,I){try{if(!await UX())return;let C=await RX();uX(B,C,{...LX(),...I})}catch{}}async function aN(){await HX()}function yF(){h4=null,E7=!1}var Av="0.2.60",E7=!1,h4=null;var W2=aA(()=>{MX();jE();f4();rE();I7();I7()});function Cv(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 TM(B,I,C){let D=Date.now(),w={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},N=[],J=()=>{w.elapsedSec=Math.floor((Date.now()-D)/1000),C(Cv(I,w))};J();let R=setInterval(J,1000),X=(b)=>{if(!b)return;if(N.push(b),Qv.test(b))w.phase="\u89E3\u6790\u4F9D\u8D56";else if(WX.test(b)){w.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let p=b.match(WX);if(p)w.pkgCount=parseInt(p[1],10)}else if(Iv.test(b))w.phase="\u5199\u5165 lockfile";else if(Ev.test(b))w.phase="\u5B8C\u6210";J()},k=async(b)=>{if(!b)return;let p=b.getReader(),y=new TextDecoder,P="";try{while(!0){let{done:_,value:z}=await p.read();if(_)break;P+=y.decode(z,{stream:!0}).replace(/\r/g,"");let x=P.split(`
|
|
351
|
+
`)}}var aZ="Claude Code-credentials",oZ,cZ,cU,lZ;var $M=aA(()=>{oZ=lU(pZ(),".claude"),cZ=lU(oZ,".credentials.json"),cU=lU(pZ(),".claude.json"),lZ=C$()==="darwin"});var nZ={};H2(nZ,{updateProvider:()=>C8,setDefaultProvider:()=>sU,setClientProvider:()=>jN,resolveXiaomiBaseUrl:()=>QJ,resolveProviderContext:()=>jC,migrateIfNeeded:()=>rU,mergeDetectedProviders:()=>xN,isProviderCompatible:()=>u4,getProvidersForClient:()=>qF,getProviders:()=>bC,getProvider:()=>M$,getModelChoices:()=>EN,getDefaultSupportedClients:()=>ug,getDefaultProvider:()=>Hg,getDefaultModel:()=>G4,getDefaultBaseUrl:()=>eL,getClientProvider:()=>SF,fixupProviders:()=>tU,detectProviders:()=>iN,deleteProvider:()=>nU,addProvider:()=>E8,XIAOMI_TOKEN_PLAN_URL:()=>nR,XIAOMI_ANTHROPIC_URL:()=>BJ,PROVIDER_TYPE_NAMES:()=>jg,DEEPSEEK_ANTHROPIC_URL:()=>AJ});async function bC(){return(await vQ()).providers??[]}async function M$(B){return(await bC()).find((C)=>C.id===B)}async function Hg(){let B=await vQ(),I=B.providers??[];if(I.length===0)return;if(B.defaultProviderId){let C=I.find((D)=>D.id===B.defaultProviderId);if(C)return C}return I[0]}async function qF(B){return(await bC()).filter((D)=>u4(D,B)).sort((D,w)=>{let N=D.lastUsedAt?new Date(D.lastUsedAt).getTime():0,J=w.lastUsedAt?new Date(w.lastUsedAt).getTime():0;if(N!==J)return J-N;return new Date(w.createdAt).getTime()-new Date(D.createdAt).getTime()})}async function E8(B){let I=await vQ(),C={...B,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(I.providers=[...I.providers??[],C],!I.defaultProviderId)I.defaultProviderId=C.id;return await GC(I),C}async function C8(B,I){let C=await vQ(),D=C.providers??[],w=D.findIndex((N)=>N.id===B);if(w===-1)return;D[w]={...D[w],...I},C.providers=D,await GC(C)}async function nU(B){let I=await vQ();if((I.providers??[]).find((D)=>D.id===B)?.builtin)return;if(I.providers=(I.providers??[]).filter((D)=>D.id!==B),I.defaultProviderId===B)I.defaultProviderId=I.providers[0]?.id;if(I.clientProviderMap){for(let[D,w]of Object.entries(I.clientProviderMap))if(w===B)delete I.clientProviderMap[D]}await GC(I)}async function sU(B){let I=await vQ();if(!(I.providers??[]).some((D)=>D.id===B))return;I.defaultProviderId=B,await GC(I)}async function SF(B){let I=await vQ(),C=I.clientProviderMap?.[B];if(C){let D=(I.providers??[]).find((w)=>w.id===C);if(D&&u4(D,B))return D}return}async function jN(B,I){let C=await vQ();C.clientProviderMap={...C.clientProviderMap,[B]:I};let D=C.providers??[],w=D.findIndex((N)=>N.id===I);if(w!==-1)D[w]={...D[w],lastUsedAt:new Date().toISOString()},C.providers=D;await GC(C)}function jC(B){return{type:B.type,apiKey:B.apiKey,baseUrl:B.baseUrl,authData:B.authData,model:B.model,modelContextWindow:B.modelContextWindow}}async function L$(){try{let B=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),I=await new Response(B.stdout).text();if(await B.exited!==0)return null;let D=JSON.parse(I.trim());if(!D.loggedIn||D.authMethod!=="claude.ai")return null;let w=D.subscriptionType||"pro",N=D.email||"",J=`Claude ${w.charAt(0).toUpperCase()+w.slice(1)}${N?` (${N})`:""}`,{readClaudeAuth:R}=await Promise.resolve().then(() => ($M(),zM)),X=await R(),k=X.credentials||X.oauthAccount?{credentials:X.credentials,oauthAccount:X.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:J,type:"claude-subscription",supportedClients:ug("claude-subscription"),createdAt:new Date().toISOString(),email:N,subscriptionType:w,authData:k}}catch{return null}}async function J$(){try{let{homedir:B}=await import("os"),{join:I}=await import("path"),C=await import("fs/promises"),D=I(B(),".codex","auth.json"),w=JSON.parse(await C.readFile(D,"utf-8"));if(w.auth_mode!=="chatgpt"||!w.tokens?.access_token)return null;let N="";try{N=JSON.parse(atob(w.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:w,email:N}}catch{return null}}async function U$(){let B=await J$();if(B){let{auth:I,email:C}=B;return{id:crypto.randomUUID(),name:C?`Codex Plus (${C})`:"Codex Subscription",type:"codex-subscription",email:C||void 0,supportedClients:ug("codex-subscription"),authData:I,createdAt:new Date().toISOString()}}try{let I=Bun.spawn(["codex","login","status"],{stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited!==0||!C.includes("Logged in")||C.includes("cr_"))return null;return{id:crypto.randomUUID(),name:"Codex Subscription",type:"codex-subscription",supportedClients:ug("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function iN(){let B=[],[I,C]=await Promise.all([L$(),U$()]);if(I)B.push(I);if(C)B.push(C);return B}async function xN(B){let I=await vQ(),C=I.providers??[],D=new Set(C.map((N)=>`${N.type}:${N.email||""}`)),w=0;for(let N of B){let J=`${N.type}:${N.email||""}`;if(!D.has(J))C.push(N),D.add(J),w++;else if(N.authData){let R=C.find((X)=>X.type===N.type&&X.email===N.email);if(R)R.authData=N.authData}}if(w>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await GC(I)}return w}async function rU(){let B=await vQ();if(!B.apiKey||B.providers&&B.providers.length>0)return!1;let I={id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:wC,apiId:B.apiId,supportedClients:ug("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await GC(B),!0}async function tU(){let B=await vQ(),I=B.providers??[],C=!1;for(let D of I)if(D.type==="tako"&&!D.builtin)D.builtin=!0,C=!0;if(B.apiKey&&!I.some((D)=>D.type==="tako")){if(I.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:wC,apiId:B.apiId,supportedClients:ug("tako"),createdAt:new Date().toISOString(),builtin:!0}),!B.defaultProviderId)B.defaultProviderId=I[I.length-1].id;C=!0}if(C)B.providers=I,await GC(B)}var $D=aA(()=>{jE();fw();fw()});var DX={};H2(DX,{showRegionInfo:()=>Q7,getNpmRegistry:()=>Mg,getMirrors:()=>CX,getLatestBunVersion:()=>gX,getBunMirrorDownloadUrl:()=>B7,getBunInstallCommand:()=>A7,detectRegion:()=>jw,MIRRORS:()=>pN});import{readFileSync as _$,writeFileSync as V$,mkdirSync as b$}from"fs";import{join as QX}from"path";import{homedir as IX}from"os";function i$(){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 x$(){try{let B=_$(EX,"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>j$)return null;return I.region}catch{return null}}function BX(B){try{b$(QX(IX(),".tako"),{recursive:!0}),V$(EX,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function p$(){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 a$(){if(vM)return vM;return vM=(async()=>{let I=[d$,o$,c$,l$].map((C)=>C().then((D)=>D?D:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((D,w)=>setTimeout(()=>w(Error("net-timeout")),1200))])}catch{return"cn"}})(),vM}async function jw(){if(v4)return v4;let B=i$();if(B)return v4=B,B;let I=x$();if(I)return v4=I,I;let C=p$();if(C)return v4=C,BX(C),C;let D=await a$();return v4=D,BX(D),D}async function d$(){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 o$(){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 c$(){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 l$(){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(),D=C?.data?.location;if(Array.isArray(D)&&D[0]==="\u4E2D\u56FD")return"cn";let w=C?.data?.country_code;return w==="CN"?"cn":w?"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 D=JSON.parse(C.trim());if(D.proCode&&/^\d{6}$/.test(D.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 CX(){let B=await jw();return pN[B]}async function Mg(){return(await CX()).npm}function A7(){return"curl -fsSL https://bun.sh/install | bash"}async function gX(){let B=pN.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let D=(await I.json()).map((w)=>w.name.replace(/\/$/,"")).filter((w)=>/^bun-v\d+\.\d+\.\d+$/.test(w)).sort((w,N)=>{let J=w.replace("bun-v","").split(".").map(Number),R=N.replace("bun-v","").split(".").map(Number);for(let X=0;X<3;X++)if(J[X]!==R[X])return R[X]-J[X];return 0});if(D.length===0)throw Error("No bun versions found on mirror");return D[0]}async function B7(){let B=pN.cn.bunBinary,I=await gX(),D={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",w=process.arch==="arm64"?"aarch64":"x64",N=`bun-${D}-${w}`;return`${B}/${I}/${N}.zip`}async function Q7(){let B=await jw(),I=pN[B];if(B==="cn")LQ.info(`${AQ("region.usingChinaMirror")} npm: ${I.npm}`);else LQ.info(AQ("region.usingGlobalMirror"))}var v4=null,vM=null,EX,j$=2592000000,pN;var f4=aA(()=>{rE();YF();EX=QX(IX(),".tako","region.json"),pN={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var n$=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 D=await C;D!==null&&(B[I]=D)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,D){try{let w=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(w.status===401)return null;if(w.status!==200&&w.status!==202)throw Error(`HTTP error! status: ${w.status}`);let N=await w.text();return N?JSON.parse(N):null}catch(w){if(D<this.maxRetries){let N=this.initialRetryDelay*2**D;return await new Promise((J)=>setTimeout(J,N)),this.post(B,I,C,D+1)}return console.error("Max retries reached:",w),null}}async fetch(B,I,C={}){let D=`${this.baseUrl}${B}`;return this.post(D,I,C,0)}},FX=class{constructor(B){this.options=B,this.queue=[];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.0.4",this.api=new n$({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send(B){return this.options.disabled||this.options.filter&&!this.options.filter(B)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push(B),Promise.resolve()):this.api.fetch("/track",B)}setGlobalProperties(B){this.global={...this.global,...B}}async track(B,I){return this.log("track event",B,I),this.send({type:"track",payload:{name:B,profileId:I?.profileId??this.profileId,properties:{...this.global??{},...I??{}}}})}async identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}async alias(B){}async increment(B){return this.send({type:"increment",payload:B})}async decrement(B){return this.send({type:"decrement",payload:B})}async revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}async fetchDeviceId(){return(await this.api.fetch("/track/device-id",void 0,{method:"GET",keepalive:!1}))?.deviceId??""}clear(){this.profileId=void 0}flush(){this.queue.forEach((B)=>{this.send({...B,payload:{...B.payload,profileId:B.payload.profileId??this.profileId}})}),this.queue=[]}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var wX=()=>{};function GX(){if(!T4)T4=new FX({clientId:s$,clientSecret:r$,apiUrl:t$});return T4}function uX(B,I,C){let D=GX().track(B,{profileId:I,...C}).catch(()=>{});fM.push(D)}function NX(B,I){let{email:C,...D}=I,w=GX().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(D.platform||""),properties:D}).catch(()=>{});fM.push(w)}async function HX(){if(await Promise.allSettled(fM),fM.length=0,T4){try{T4.flush()}catch{}T4=null}}var s$="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",r$="sec_1e0ea34016bc3a5f8ef5",t$="https://op.shiroha.tech/api",T4=null,fM;var MX=aA(()=>{wX();fM=[]});function LX(){return{cli_version:e$,platform:process.platform,arch:process.arch,locale:ag(),node_version:process.version}}function JX(B){return Bun.hash(B).toString(16).slice(0,8)}var e$="0.3.1";var I7=aA(()=>{rE()});async function UX(){if(h4!==null)return h4;try{return h4=(await vQ()).telemetryEnabled!==!1,h4}catch{return h4=!1,!1}}async function RX(){try{let B=await vQ();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,D=C?I.find((w)=>w.id===C):I[0];if(D){if(D.apiId)return D.apiId;if(D.email)return D.email;return D.id}return"anonymous"}catch{return"anonymous"}}async function vD(){if(E7)return;try{if(!await UX())return;let B=await vQ(),I=await RX();if(I==="anonymous")return;let D=(B.providers??[]).find((N)=>N.email)?.email,w=await jw();NX(I,{...D?{email:D}:{},region:w,locale:ag(),first_seen_version:Av,platform:process.platform,arch:process.arch}),E7=!0}catch{}}function u0(B,I){Bv(B,I).catch(()=>{})}async function Bv(B,I){try{if(!await UX())return;let C=await RX();uX(B,C,{...LX(),...I})}catch{}}async function aN(){await HX()}function yF(){h4=null,E7=!1}var Av="0.3.1",E7=!1,h4=null;var W2=aA(()=>{MX();jE();f4();rE();I7();I7()});function Cv(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 TM(B,I,C){let D=Date.now(),w={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},N=[],J=()=>{w.elapsedSec=Math.floor((Date.now()-D)/1000),C(Cv(I,w))};J();let R=setInterval(J,1000),X=(b)=>{if(!b)return;if(N.push(b),Qv.test(b))w.phase="\u89E3\u6790\u4F9D\u8D56";else if(WX.test(b)){w.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let p=b.match(WX);if(p)w.pkgCount=parseInt(p[1],10)}else if(Iv.test(b))w.phase="\u5199\u5165 lockfile";else if(Ev.test(b))w.phase="\u5B8C\u6210";J()},k=async(b)=>{if(!b)return;let p=b.getReader(),y=new TextDecoder,P="";try{while(!0){let{done:_,value:z}=await p.read();if(_)break;P+=y.decode(z,{stream:!0}).replace(/\r/g,"");let x=P.split(`
|
|
352
352
|
`);P=x.pop()??"";for(let EA of x)X(EA)}if(P)X(P)}finally{p.releaseLock()}};try{await Promise.all([k(B.stderr),k(B.stdout)])}finally{clearInterval(R)}return N.join(`
|
|
353
353
|
`)}var Qv,WX,Iv,Ev;var C7=aA(()=>{Qv=/^Resolving dependencies/,WX=/^Resolved, downloaded and extracted \[(\d+)\]/,Iv=/^Saved lockfile/,Ev=/^(\d+) packages? installed/});import{join as tE}from"path";function gv(B){return B.startsWith(RF)}async function Dv(){try{if(!await Bun.file(P0).exists())return null;let I=Bun.spawn([P0,"--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 KX(){return await Dv()!==null}async function Fv(){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{}LQ.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 wv(B){let I=await import("fs/promises"),{join:C}=await import("path"),D=process.platform==="win32",w=D?"bun.exe":"bun",N=await B7();LQ.info(`\u4ECE npmmirror \u4E0B\u8F7D: ${N}`);let J=await fetch(N);if(!J.ok)throw Error(`\u4E0B\u8F7D\u5931\u8D25: ${J.status}`);let R=C(B,"bun-download.zip");await Bun.write(R,J);let X=C(B,"bin");if(await I.mkdir(X,{recursive:!0}),D){let b=`Expand-Archive -Path "${R}" -DestinationPath "${B}" -Force`,p=Bun.spawn(["powershell","-Command",b],{stdout:"pipe",stderr:"pipe"});if(await p.exited,p.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}else{let b=Bun.spawn(["unzip","-oq",R,"-d",B],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode!==0)throw Error("\u89E3\u538B\u5931\u8D25")}let k=await I.readdir(B);for(let b of k){let p=C(B,b);if((await I.stat(p)).isDirectory()&&b.startsWith("bun-")){let P=C(p,w);try{if(await I.access(P),await I.rename(P,C(X,w)),!D)await I.chmod(C(X,w),493);await I.rm(p,{recursive:!0,force:!0});break}catch{}}}return await I.rm(R,{force:!0}),!0}async function Gv(){let B=p1();if(!await Fv())return LQ.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await Q7(),B.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{if(await(await import("fs/promises")).mkdir(RF,{recursive:!0}),await jw()==="cn")await wv(RF);else if(process.platform==="win32"){let D=`$env:BUN_INSTALL="${RF}"; irm bun.sh/install.ps1 | iex`;if(await Bun.spawn(["powershell","-Command",D],{stdout:"inherit",stderr:"inherit"}).exited!==0)return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}else{let D=`BUN_INSTALL="${RF}" ${A7()}`;if(await Bun.spawn(["bash","-c",D],{stdout:"inherit",stderr:"inherit"}).exited!==0)return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}return g8=P0,B.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),LQ.info(`\u5B89\u88C5\u4F4D\u7F6E: ${RF}`),!0}catch(I){return B.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function uv(){if(await KX())return g8=P0,!0;return LQ.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),LQ.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await Gv()}async function kF(){if(g8){if(!gv(g8))g8=P0;return g8}if(await KX())return g8=P0,P0;return P0}async function u7(B){try{let I=await Mg(),C=await fetch(`${I}/${B}/latest`);if(!C.ok)return null;return(await C.json()).version}catch{return null}}async function Nv(B){return(await vQ()).installedClients[B.id]?.version||null}async function YX(B){let I=WF(B.id),C=tE(I,"package.json");try{return await Bun.file(C).exists()}catch{return!1}}async function ZX(B){let I=await Nv(B);if(!I)return!0;let C=await u7(B.package);if(!C)return!1;return I!==C}function XX(B){let{platform:I,arch:C}=process,D=`${I}-${C}`;for(let[w,N]of Object.entries(B))if(w.endsWith(D))return{pkg:w,version:N};return null}async function qX(B,I,C,D){let w=tE(I,"node_modules",B.package,"package.json");try{let N=Bun.file(w);if(!await N.exists())return;let R=(await N.json()).optionalDependencies;if(!R||typeof R!=="object")return;let X=XX(R);if(!X)return;let b=process.platform==="win32"?`${B.command}.exe`:B.command,p=tE(I,"node_modules",X.pkg,b),y=Bun.file(p);if(await y.exists()&&y.size>1024)return;LQ.info(`\u6B63\u5728\u5B89\u88C5\u5E73\u53F0\u5305 ${X.pkg}...`);for(let P of[X.version,"latest"]){let _=Bun.spawn([C,"add",`${X.pkg}@${P}`],{cwd:I,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:D}});if(await _.exited,_.exitCode===0)break;if(P==="latest"){let z=await new Response(_.stderr).text();LQ.warn(`\u5E73\u53F0\u5305\u5B89\u88C5\u5931\u8D25: ${z.slice(0,200)}`)}}}catch(N){LQ.warn(`\u5E73\u53F0\u5305\u68C0\u67E5\u5F02\u5E38: ${N instanceof Error?N.message:"\u672A\u77E5\u9519\u8BEF"}`)}}async function F7(B,I){let C=await import("fs/promises"),D=tE(I,"node_modules",B.package,"package.json");try{let w=Bun.file(D);if(!await w.exists())return!1;let N=await w.json(),J=N.optionalDependencies;if(!J)return!0;let R=XX(J);if(!R)return LQ.warn(`\u672A\u627E\u5230\u5339\u914D\u7684\u5E73\u53F0\u5305 (${process.platform}-${process.arch})`),!1;let X=N.bin,k=typeof X==="string"?X:X?.[B.command];if(!k)return!1;let b=tE(I,"node_modules",B.package,k),p=process.platform==="win32",y=p?`${B.command}.exe`:B.command,P=tE(I,"node_modules",R.pkg,y),_=Bun.file(P);if(await _.exists()&&_.size>1024){if(await Bun.write(b,_),!p)await C.chmod(b,493);return!0}let z=tE(I,"node_modules",B.package,"install.cjs");if(await Bun.file(z).exists()){LQ.info("\u6B63\u5728\u901A\u8FC7 postinstall \u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let EA=await kF(),HA=Bun.spawn([EA,z],{cwd:tE(I,"node_modules",B.package),stdout:"pipe",stderr:"pipe"});if(await HA.exited,HA.exitCode!==0){let WA=await new Response(HA.stderr).text();LQ.warn(`postinstall \u5931\u8D25: ${WA.slice(0,200)}`)}let BA=Bun.file(b);if(await BA.exists()&&BA.size>1024){if(!p)await C.chmod(b,493);return!0}}LQ.info("\u6B63\u5728\u4ECE registry \u4E0B\u8F7D\u539F\u751F\u4E8C\u8FDB\u5236...");let x=await Mg();for(let EA of[R.version,"latest"])try{let HA=await fetch(`${x}/${R.pkg}/${EA}`);if(!HA.ok)continue;let WA=(await HA.json()).dist?.tarball;if(!WA)continue;let MA=tE(w0,".tmp-extract-"+Date.now());await C.mkdir(MA,{recursive:!0});let JA=tE(MA,"pkg.tgz"),XA=Bun.spawn(["curl","-fsSL","-o",JA,WA],{stdout:"pipe",stderr:"pipe"});if(await XA.exited,XA.exitCode!==0){let BB=await new Response(XA.stderr).text();LQ.warn(`curl \u4E0B\u8F7D\u5931\u8D25: ${BB.slice(0,200)}`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{});continue}let OA=Bun.file(JA).size;if(OA<1024){LQ.warn(`\u4E0B\u8F7D\u6587\u4EF6\u5F02\u5E38 (${OA} bytes, url: ${WA.slice(0,100)})`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{});continue}let yA=Bun.spawn(["tar","xzf",JA,"-C",MA,`package/${y}`],{stdout:"pipe",stderr:"pipe"});await yA.exited;let FB=tE(MA,"package",y),dA=Bun.file(FB);if(await dA.exists()&&dA.size>1024){if(await Bun.write(b,dA),!p)await C.chmod(b,493);return await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{}),!0}let IB=await new Response(yA.stderr).text();LQ.warn(`tar \u63D0\u53D6\u5931\u8D25 (tgz=${OA} bytes, exit=${yA.exitCode}): ${IB.slice(0,200)}`),await C.rm(MA,{recursive:!0,force:!0}).catch(()=>{})}catch(HA){LQ.warn(`\u4E0B\u8F7D\u5931\u8D25: ${HA instanceof Error?HA.message:"\u672A\u77E5\u9519\u8BEF"}`)}if(x!=="https://registry.npmjs.org")try{let EA=`https://registry.npmjs.org/${R.pkg}/-/${R.pkg.split("/").pop()}-${R.version}.tgz`;LQ.info("\u6B63\u5728\u4ECE npmjs.org \u76F4\u8FDE\u4E0B\u8F7D...");let HA=tE(w0,".tmp-extract-"+Date.now());await C.mkdir(HA,{recursive:!0});let BA=tE(HA,"pkg.tgz"),WA=Bun.spawn(["curl","-fsSL","-o",BA,EA],{stdout:"pipe",stderr:"pipe"});if(await WA.exited,WA.exitCode===0&&Bun.file(BA).size>1024){await Bun.spawn(["tar","xzf",BA,"-C",HA,`package/${y}`],{stdout:"pipe",stderr:"pipe"}).exited;let JA=Bun.file(tE(HA,"package",y));if(await JA.exists()&&JA.size>1024){if(await Bun.write(b,JA),!p)await C.chmod(b,493);return await C.rm(HA,{recursive:!0,force:!0}).catch(()=>{}),!0}}await C.rm(HA,{recursive:!0,force:!0}).catch(()=>{})}catch{}return!1}catch(w){return LQ.warn(`\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236\u5931\u8D25: ${w instanceof Error?w.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function w7(B,I=!1){let C=p1(),D=WF(B.id);try{if(!await uv())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 w=await YX(B),N=I||await ZX(B);if(w&&!N)return{success:!0};let J=w?"\u66F4\u65B0":"\u5B89\u88C5",R=`\u6B63\u5728${J} ${B.name}`;C.start(R);let X=await import("fs/promises");await X.mkdir(D,{recursive:!0});let k=tE(D,"package.json");if(!await Bun.file(k).exists())await Bun.write(k,JSON.stringify({name:`tako-${B.id}`,private:!0,dependencies:{}},null,2));let p=await kF(),y=await Mg(),P=await jw();if(LQ.info(`\u7F51\u7EDC\u73AF\u5883: ${P==="cn"?"\u56FD\u5185\uFF08npmmirror\uFF09":"\u6D77\u5916"} | registry: ${y}`),w){let BA=tE(D,"bun.lock"),WA=tE(D,"node_modules");await X.rm(BA,{force:!0}).catch(()=>{}),await X.rm(WA,{recursive:!0,force:!0}).catch(()=>{})}let _=Bun.spawn([p,"add",`${B.package}@latest`],{cwd:D,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:y}}),z=await TM(_,R,(BA)=>C.update(BA));if(await _.exited!==0)return C.stop(`${J} ${B.name} \u5931\u8D25`),{success:!1,error:z||"\u672A\u77E5\u9519\u8BEF"};await qX(B,D,p,y),await F7(B,D);let EA=await u7(B.package),HA=(await vQ()).installedClients[B.id]?.version;if(EA){let BA=await vQ();if(BA.installedClients[B.id]={version:EA,installedAt:new Date().toISOString()},await j1(BA),w&&HA)u0("client_updated",{client_id:B.id,from_version:HA,to_version:EA});else u0("client_installed",{client_id:B.id,client_version:EA})}return C.stop(`${B.name} ${J}\u5B8C\u6210`),{success:!0}}catch(w){return C.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:w instanceof Error?w.message:"\u672A\u77E5\u9519\u8BEF"}}}async function g7(B){try{let I=Bun.file(B);if(!await I.exists())return!0;if(I.size<100)return!0;let D=new Uint8Array(await I.slice(0,4).arrayBuffer());if(D[0]===127&&D[1]===69&&D[2]===76&&D[3]===70)return!1;if(D[0]===254||D[0]===207||D[0]===206||D[0]===202)return!1;if(D[0]===77&&D[1]===90)return!1;return!0}catch{return!0}}async function D7(B){if(B.runtime!=="native")return;let I=WF(B.id),C=tE(I,"node_modules",B.package,"package.json");try{let D=Bun.file(C);if(!await D.exists())return;let N=(await D.json()).bin;if(!N)return;let J=typeof N==="string"?N:N[B.command];if(!J)return;let R=tE(I,"node_modules",B.package,J);if(!await g7(R))return;LQ.info("\u6B63\u5728\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236...");let X=await kF(),k=await Mg();if(await qX(B,I,X,k),!await F7(B,I)||await g7(R)){if(LQ.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 w7(B)).success)if(await F7(B,I),await g7(R))LQ.warn("\u91CD\u65B0\u5B89\u88C5\u540E\u4ECD\u65E0\u6CD5\u5B89\u88C5\u539F\u751F\u4E8C\u8FDB\u5236");else LQ.success("\u91CD\u65B0\u5B89\u88C5\u5B8C\u6210")}else LQ.success("\u539F\u751F\u4E8C\u8FDB\u5236\u5B89\u88C5\u5B8C\u6210")}catch{}}async function SX(B){if(!await YX(B)){let D=await w7(B);if(D.success)await D7(B);return D}if(await D7(B),await ZX(B)){let D=await u7(B.package),w=(await vQ()).installedClients[B.id]?.version||"\u672A\u77E5",N=D?`${w} \u2192 ${D}`:"\u6709\u65B0\u7248\u672C\u53EF\u7528";if(LQ.info(`${B.name} \u53D1\u73B0\u66F4\u65B0: ${N}`),await Hv(B.id))return LQ.info("\u4ECA\u65E5\u5DF2\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};if(!await OM({message:`\u662F\u5426\u66F4\u65B0 ${B.name}\uFF1F`,defaultValue:!1}))return await Mv(B.id),LQ.info("\u8DF3\u8FC7\u66F4\u65B0\uFF0C\u4F7F\u7528\u5F53\u524D\u7248\u672C"),{success:!0};let R=await w7(B,!0);if(R.success)await D7(B);return R}return{success:!0}}async function Hv(B){try{let I=Bun.file(G7);if(!await I.exists())return!1;let D=(await I.json())[B];if(!D)return!1;let w=new Date().toISOString().slice(0,10);return D===w}catch{return!1}}async function Mv(B){try{let I={},C=Bun.file(G7);if(await C.exists())try{I=await C.json()}catch{}I[B]=new Date().toISOString().slice(0,10),await Bun.write(G7,JSON.stringify(I))}catch{}}var g8=null,G7;var dN=aA(async()=>{YF();_C();jE();f4();W2();C7();await dU();G7=tE(w0,".update-dismissed.json")});function L7(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 Wv(B,I){if(!Number.isFinite(B)||B<0)return;return{usedPct:0,costUsed:B,...I?{windowMinutes:I}:{}}}async function Kv(B){try{let I=await fetch(`${wC}/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:L7(C.usage.windowCost??0,C.plan.window_cost_limit??0,C.plan.window_minutes),daily:L7(C.usage.dailyCost??0,C.plan.daily_cost_limit??0),secondary:L7(C.usage.weeklyCost??0,C.plan.weekly_cost_limit??0),fetchedAt:Date.now()}}catch{return null}}async function oN(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 D=await Kv(B);if(D)return D;try{let w=await fetch(`${wC}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B}),signal:AbortSignal.timeout(5000)});if(!w.ok)return{...C,hint:"Tako \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${w.status}`};let N=await w.json(),J=N?.data;if(!N?.success||!J)return{...C,hint:"Tako \u7528\u91CF\u6570\u636E\u683C\u5F0F\u5F02\u5E38",error:"bad_payload"};let R=J.limits?.currentDailyCost??J.usage?.total?.cost??0;return{provider:"tako",status:"ok",daily:Wv(R),fetchedAt:I}}catch(w){return{...C,hint:"Tako \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(w.message??w)}}}async function fX(B){let I=await i1();return oN(I)}var TX=aA(()=>{jE()});function J7(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 Yv(B){return B.authData?.credentials?.claudeAiOauth?.accessToken}async function hX(B){let I=Date.now(),C={provider:"claude-subscription",status:"error",fetchedAt:I},D=Yv(B);if(!D)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 w=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${D}`,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(5000)});if(w.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(!w.ok)return{...C,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u4E0D\u53EF\u7528",error:`http_${w.status}`};let N=await w.json(),J=J7(N.seven_day_opus),R=J7(N.five_hour);if(R)R.windowMinutes=300;let X=J7(N.seven_day);if(X)X.windowMinutes=10080;return{provider:"claude-subscription",status:"ok",primary:R,secondary:X,...J?{modelLimits:{opus:J}}:{},fetchedAt:I}}catch(w){return{...C,hint:"Anthropic \u7528\u91CF\u63A5\u53E3\u8BF7\u6C42\u5931\u8D25",error:String(w.message??w)}}}function PX(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 Zv(B){let I=B.authData?.tokens;return{accessToken:I?.access_token,accountId:I?.account_id}}async function Xv(B,I){if(await Bun.spawn(["which","codex"],{stdout:"pipe",stderr:"pipe"}).exited!==0)return null;let D=await import("fs/promises"),{mkdtemp:w}=D,{tmpdir:N}=await import("os"),{join:J}=await import("path"),R=await w(J(N(),"tako-codex-"));try{let X={auth_mode:"chatgpt",tokens:{access_token:B,...I?{account_id:I}:{}}};await D.writeFile(J(R,"auth.json"),JSON.stringify(X));let k=[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(`
|
|
354
354
|
`)+`
|
|
@@ -822,14 +822,14 @@ ${J}`:N||J}function xL(B,{maxDepth:I=1000,numbersAsFloat:C=!1}={}){if(QN(B)!=="o
|
|
|
822
822
|
`);else{let w;if(B.type==="tako")w=`${wC}/v1`;else if(B.type==="deepseek")w="https://api.deepseek.com/v1";else w=`${B.baseUrl}/v1`;let J=I?.find((p)=>p.startsWith("model-"))?.slice(6)||B.model||"gpt-5.5",R=/^gpt[-.]/i.test(J),X;if(!R){if(X=VC.find((y)=>y.id===J)?.contextWindow,!X&&(B.type==="tako"||B.type==="custom")&&B.baseUrl){let y=w4(B.baseUrl,"openai")?.find((P)=>P.id===J);if(y&&y.contextWindow>0)X=y.contextWindow}if(!X)X=B.modelContextWindow}else delete D.model_context_window;let k={name:"tako",base_url:w,requires_openai_auth:!0};if(B.apiKey)k.experimental_bearer_token=B.apiKey;if(B.type==="tako")k.supports_websockets=!0;else cR(D);let b={model_provider:"tako",model:J,check_for_update_on_startup:!1,remote_compaction_v2:!1,model_providers:{tako:k}};if(X)b.model_context_window=X;if(B.type==="tako")b.features={multi_agent:!0,responses_websockets_v2:!0};D=lR(D,b)}await Bun.write(dR,xL(D))}var eS={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",brandColor:"blue",getEnvVars(B){return{}},setupConfigFiles:tS,launchOptions:(B)=>gy(B)},Ay=[{id:"search",label:{en:"Web Search",zh:"\u7F51\u7EDC\u641C\u7D22"},shortLabel:"Search",description:{en:"Enable real-time web search",zh:"\u542F\u7528\u5B9E\u65F6\u7F51\u9875\u641C\u7D22"},flag:"--search",args:["--search"]},{id:"bypass-sandbox",label:{en:"Bypass Sandbox",zh:"\u7ED5\u8FC7\u5BA1\u6279\u4E0E\u6C99\u7BB1"},shortLabel:"Bypass",description:{en:"DANGEROUS: skip all approvals & sandbox (use only in disposable envs)",zh:"\u5371\u9669\uFF1A\u8DF3\u8FC7\u6240\u6709\u5BA1\u6279\u4E0E\u6C99\u7BB1\u9650\u5236\uFF08\u4EC5\u9650\u9694\u79BB/\u4E34\u65F6\u73AF\u5883\u4F7F\u7528\uFF09"},flag:"--dangerously-bypass-approvals-and-sandbox",args:["--dangerously-bypass-approvals-and-sandbox"]}],By=["gpt-5.5","gpt-5.4","gpt-5.3-codex","gpt-5.3"],Qy=["deepseek-v4-flash","deepseek-v4-pro"];function sL(B){if(B>=1e6)return"1M";if(B>0)return`${Math.round(B/1000)}k`;return"?"}function Iy(B){return/^claude[-_]/i.test(B)||/^anthropic[-_/]/i.test(B)}function Ey(B){if(!B.baseUrl)return null;let I=w4(B.baseUrl,"openai");if(!I||I.length===0)return null;let C=I.filter((D)=>!Iy(D.id));if(C.length===0)return null;return C.map((D)=>({id:`model-${D.id}`,label:{en:D.displayName,zh:D.displayName},shortLabel:D.displayName,description:{en:`Use ${D.displayName} (${sL(D.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${D.displayName}\uFF08\u4E0A\u4E0B\u6587 ${sL(D.contextWindow)}\uFF09`},flag:`--model ${D.id}`,args:["--model",D.id],group:"model"}))}function Cy(B){if(M2(),B&&(B.type==="tako"||B.type==="custom")){let D=Ey(B);if(D)return D}let I=B?.type==="deepseek"?Qy:By,C=[];for(let D of I){let w=VC.find((R)=>R.id===D),N=sL(w?.contextWindow??0),J=w?.displayName??D;C.push({id:`model-${D}`,label:{en:J,zh:J},shortLabel:J,description:{en:`Use ${J} (${N} ctx)`,zh:`\u4F7F\u7528 ${J}\uFF08\u4E0A\u4E0B\u6587 ${N}\uFF09`},flag:`--model ${D}`,args:["--model",D],group:"model"})}return C}function gy(B){return[...Ay,...Cy(B)]}D4(eS);_C();fw();YF();rE();await dU();import{homedir as R$}from"os";import{join as W$}from"path";var sZ=W$(R$(),".claude","settings.json"),K$=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];function Y$(B){if(B.startsWith("ANTHROPIC_"))return!0;return K$.includes(B)}async function Z$(){let B=await import("fs/promises"),I;try{I=await B.readFile(sZ,"utf-8")}catch{return}let C;try{C=JSON.parse(I)}catch{return}let D=[];if(C.env&&typeof C.env==="object"){for(let N of Object.keys(C.env))if(Y$(N))D.push(N),delete C.env[N];if(Object.keys(C.env).length===0)delete C.env}if(D.length===0)return;if(LQ.warn(AQ("claudeCode.settingsDetected",{fields:D.join(", ")})),!await OM({message:AQ("claudeCode.confirmClean"),defaultValue:!0})){LQ.info(AQ("claudeCode.cleanSkipped"));return}await B.writeFile(sZ,JSON.stringify(C,null,2)+`
|
|
823
823
|
`),LQ.success(AQ("claudeCode.settingsCleaned"))}async function X$(B){let{readClaudeAuth:I,writeClaudeAuth:C}=await Promise.resolve().then(() => ($M(),zM)),{getProviders:D,updateProvider:w}=await Promise.resolve().then(() => ($D(),nZ)),N=B.authData?.credentials,J=B.authData?.oauthAccount;if(!N){LQ.warn(AQ("claudeCode.subscriptionMissingAuth"));return}let R=await I(),X=R.oauthAccount?.emailAddress;if(X&&R.credentials){let p=(await D()).find((y)=>y.type==="claude-subscription"&&y.email===X);if(p){let y={credentials:R.credentials,oauthAccount:R.oauthAccount};if(JSON.stringify(p.authData)!==JSON.stringify(y))await w(p.id,{authData:y})}else if(X!==J?.emailAddress)LQ.warn(AQ("claudeCode.unknownCurrentAccount",{email:X}))}await C({credentials:N,oauthAccount:J});let k=J?.emailAddress||"?";LQ.info(AQ("claudeCode.subscriptionSwitched",{email:k}))}var q$={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?eU(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:AJ,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"xiaomi":return{...I,ANTHROPIC_BASE_URL:QJ(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){if(B.type==="tako"||B.type==="custom")await Z$();if(B.type==="claude-subscription")await X$(B)},launchOptions:(B)=>f$(B)},S$=[{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"]}],y$=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],k$=["deepseek-v4-flash","deepseek-v4-pro"],O$=["mimo-v2.5-pro"];function m$(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 VC.find((D)=>D.id===B)?.displayName??B}function eU(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=VC.find((C)=>C.id===B);if(!I||I.contextWindow<1e6)return B;return`${B}[1m]`}function rZ(B){if(B>=1e6)return"1M";if(B>0)return`${Math.round(B/1000)}k`;return"?"}function z$(B){return/^(gpt[-_]|chatgpt[-_]|o\d+([-_]|$)|davinci[-_]|text-davinci[-_]|openai[-_/])/i.test(B)}function $$(B){if(!B.baseUrl)return null;let I=w4(B.baseUrl,"claude");if(!I||I.length===0)return null;let C=I.filter((D)=>!z$(D.id));if(C.length===0)return null;return C.map((D)=>{let w=eU(D.id);return{id:`model-${D.id}`,label:{en:D.displayName,zh:D.displayName},shortLabel:D.displayName,description:{en:`Use ${D.displayName} (${rZ(D.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${D.displayName}\uFF08\u4E0A\u4E0B\u6587 ${rZ(D.contextWindow)}\uFF09`},flag:`--model ${w}`,args:[],envVars:{ANTHROPIC_MODEL:w},group:"model"}})}function v$(B){if(M2(),B&&(B.type==="tako"||B.type==="custom")){let D=$$(B);if(D)return D}let I=B?.type==="deepseek"?k$:B?.type==="xiaomi"?O$:y$,C=[];for(let D of I){let N=VC.find((k)=>k.id===D)?.contextWindow??0,J=N>=1e6?"1M":N>0?`${Math.round(N/1000)}k`:"?",R=m$(D),X=eU(D);C.push({id:`model-${D}`,label:{en:R,zh:R},shortLabel:R,description:{en:`Use ${R} (${J} ctx)`,zh:`\u4F7F\u7528 ${R}\uFF08\u4E0A\u4E0B\u6587 ${J}\uFF09`},flag:`--model ${X}`,args:[],envVars:{ANTHROPIC_MODEL:X},group:"model"})}return C}function f$(B){return[...S$,...v$(B)]}D4(q$);_C();import{homedir as T$}from"os";import{join as eZ}from"path";var AX=eZ(T$(),".gemini"),tZ=eZ(AX,"settings.json");async function h$(){let B=await import("fs/promises");try{await B.mkdir(AX,{recursive:!0})}catch{}let I={};try{I=JSON.parse(await B.readFile(tZ,"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(tZ,JSON.stringify(I,null,2)+`
|
|
824
824
|
`)}var P$={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:h$};D4(P$);_C();$D();jE();await dN();jE();import{homedir as Lv}from"os";var Jv=50,N7=3;async function H7(B){try{return(await(await import("fs/promises")).stat(B)).isDirectory()}catch{return!1}}async function yX(B,I,C){let D=await vQ(),w=D.recentProjects||[],N=new Date().toISOString(),J=w.findIndex((X)=>X.path===B);if(J>=0){let X=w[J],k=X.clientUsage||{},b=k[I]||{count:0,lastAt:N};w[J]={...X,launchCount:X.launchCount+1,lastLaunchedAt:N,lastClientId:I,clientUsage:{...k,[I]:{count:b.count+1,lastAt:N,lastSelectedOptionIds:C??b.lastSelectedOptionIds}}}}else w.push({path:B,launchCount:1,lastLaunchedAt:N,lastClientId:I,clientUsage:{[I]:{count:1,lastAt:N,lastSelectedOptionIds:C}}});let R=w.sort((X,k)=>new Date(k.lastLaunchedAt).getTime()-new Date(X.lastLaunchedAt).getTime()).slice(0,Jv);D.recentProjects=R,await GC(D)}async function kX(B){let C=(await vQ()).recentProjects||[],D=process.cwd(),N=C.find((R)=>R.path===D)?.clientUsage?.[B]?.lastSelectedOptionIds;if(N)return N;return C.filter((R)=>R.path!==D&&R.clientUsage?.[B]?.lastSelectedOptionIds).sort((R,X)=>{let k=new Date(R.clientUsage[B].lastAt).getTime();return new Date(X.clientUsage[B].lastAt).getTime()-k})[0]?.clientUsage?.[B]?.lastSelectedOptionIds??[]}function Uv(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 OX(B,I=N7,C=!0){let w=(await vQ()).recentProjects||[],N=process.cwd(),R=w.filter((k)=>{if(C&&k.path===N)return!1;return k.clientUsage?.[B]||k.lastClientId===B}).map((k)=>({...k,lastUsedTime:Uv(k,B)})).sort((k,b)=>b.lastUsedTime-k.lastUsedTime),X=[];for(let{lastUsedTime:k,...b}of R){if(X.length>=I)break;if(await H7(b.path))X.push(b)}return X}async function mX(){let I=(await vQ()).recentProjects||[],C=process.cwd();return I.find((w)=>w.path===C)?.lastClientId||null}function M7(B,I=25){let C=Lv(),D=B.startsWith(C)?"~"+B.slice(C.length):B;if(D.length>I){let N=D.split("/").pop()||"";if(N.length>I-4)D="..."+N.slice(-I+3);else D=`.../${N}`}return D}function zX(B){let{t:I}=(rE(),US(xZ)),C=Date.now(),D=new Date(B).getTime(),w=C-D,N=Math.floor(w/60000),J=Math.floor(w/3600000),R=Math.floor(w/86400000),X=Math.floor(R/7),k=Math.floor(R/30);if(N<1)return I("time.justNow");if(N<60)return I("time.minutesAgo",{n:N});if(J<24)return I("time.hoursAgo",{n:J});if(R===1)return I("time.yesterday");if(R<7)return I("time.daysAgo",{n:R});if(R<30)return I("time.weeksAgo",{n:X});return I("time.monthsAgo",{n:k})}YF();rE();W2();_C();await dN();async function $X(B,I){try{let C=I?.projectPath||process.cwd(),D=I?.providerContext;if(!D)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let w=await C4(B);if(!w)w=g4(B);if(!await Bun.file(w).exists()){let{execSync:b}=await import("child_process"),p=process.platform==="win32"?`where ${B.command}`:`which ${B.command}`;try{let y=b(p,{encoding:"utf8"}).trim().split(`
|
|
825
|
-
`)[0];if(y)w=y;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 J=B.getEnvVars(D),R={...process.env,...J,...I?.envVars??{}},X;if(B.runtime==="native")X=[w];else X=[await kF(),w];if(I?.args&&I.args.length>0)X=[...X,...I.args];let k=process.platform==="win32";if(!k)try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1)}catch{}if(process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}if(k){let{spawnSync:b}=await import("child_process");b(X[0],X.slice(1),{env:R,stdio:"inherit",cwd:C,windowsHide:!1})}else try{Bun.spawnSync(X,{env:R,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(X,{env:R,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 Rv(B,I){if(I?.providerContext)return I.providerContext;let C=await Hg();if(C){let D=await qF(B.id);if(D.some((N)=>N.id===C.id))return jC(C);if(D.length>0)return jC(D[0])}return null}async function hM(B,I){try{let C=I?.projectPath||process.cwd();if(I?.projectPath){if(!await H7(I.projectPath))return{success:!1,error:AQ("launcher.directoryNotFound",{path:I.projectPath})}}let D=await SX(B);if(!D.success)return D;let w=await Rv(B,I);if(!w)return{success:!1,error:AQ("launcher.apiKeyNotConfigured")};if(B.setupConfigFiles)await B.setupConfigFiles(w,I?.selectedOptionIds);await yX(C,B.id,I?.selectedOptionIds);let J=(await vQ()).installedClients[B.id]?.version;return u0("client_launched",{client_id:B.id,client_version:J,project_hash:JX(C),is_recent_project:!!I?.projectPath}),LQ.info(AQ("launcher.starting",{client:B.name})),await $X(B,{...I,providerContext:w})}catch(C){return{success:!1,error:C instanceof Error?C.message:"Launch failed"}}}_C();rE();W2();YF();$D();$D();W2();async function PM(B){let I=await qF(B);if(I.length===0)return null;let C=await SF(B);if(C)return jC(C);if(I.length===1)return jC(I[0]);let D=await Hg();if(D&&I.some((w)=>w.id===D.id))return jC(D);return jC(I[0])}async function vX(){let B=await iN();if(await xN(B)>0){for(let C of B)u0("provider_added",{provider_type:C.type,method:"auto_detect"});yF(),vD()}}await uC();var og=ZB(hQ(),1);await uC();var JE=ZB(hQ(),1);_C();$D();rE();_M();await uC();var EI=ZB(yI(),1),Tv=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function dX({zh:B}){return EI.jsxDEV(UA,{marginTop:1,justifyContent:"center",gap:2,children:Tv.flatMap((I,C)=>{return[C>0?EI.jsxDEV($,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,EI.jsxDEV($,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),EI.jsxDEV($,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function oX({provs:B,provIdx:I,pickerIdx:C,color:D,zh:w}){return EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:D,paddingX:2,paddingY:1,children:[EI.jsxDEV($,{bold:!0,color:D,children:["\u25A3 ",w?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[B.length===0&&EI.jsxDEV(UA,{paddingLeft:1,children:EI.jsxDEV($,{dimColor:!0,children:w?"\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,J)=>{let R=C===J,X=J===I;return EI.jsxDEV(UA,{paddingLeft:1,children:[EI.jsxDEV($,{color:R?D:void 0,bold:R,children:R?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:R,color:R?D:void 0,children:[" ",N.name]},void 0,!0,void 0,this),N.email&&EI.jsxDEV($,{dimColor:!0,children:[" (",N.email,")"]},void 0,!0,void 0,this),X&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},N.id,!0,void 0,this)}),(()=>{let N=C===B.length;return EI.jsxDEV(UA,{paddingLeft:1,marginTop:1,children:[EI.jsxDEV($,{color:N?D:void 0,bold:N,children:N?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:N,color:N?D:void 0,children:[" ","\u2699 ",w?"\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),EI.jsxDEV(dX,{zh:w},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cX({group:B,options:I,enabled:C,pickerIdx:D,color:w,zh:N}){let J=I.filter((k)=>k.group===B),R=B==="model"?N?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,X=!J.some((k)=>C.has(k.id));return EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:w,paddingX:2,paddingY:1,children:[EI.jsxDEV($,{bold:!0,color:w,children:["\u25A3 ",R]},void 0,!0,void 0,this),EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[(()=>{let k=D===0;return EI.jsxDEV(UA,{paddingLeft:1,children:[EI.jsxDEV($,{color:k?w:void 0,bold:k,children:k?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:k,color:k?w:void 0,children:[" ",N?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),X&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),J.map((k,b)=>{let p=D===b+1,y=C.has(k.id);return EI.jsxDEV(UA,{paddingLeft:1,flexDirection:"column",children:[EI.jsxDEV(UA,{children:[EI.jsxDEV($,{color:p?w:void 0,bold:p,children:p?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:p,color:p?w:void 0,children:[" ",k.label[N?"zh":"en"]||k.label.en]},void 0,!0,void 0,this),y&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this),EI.jsxDEV($,{dimColor:!0,children:[" ",k.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),p&&EI.jsxDEV(UA,{paddingLeft:3,children:EI.jsxDEV($,{dimColor:!0,children:k.description[N?"zh":"en"]||k.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},k.id,!0,void 0,this)})]},void 0,!0,void 0,this),EI.jsxDEV(dX,{zh:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var QB=ZB(yI(),1),hv="0.2.60",lX={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},nX={icon:"\u25AA",color:"white"};async function Pv(){let B=x1(),I=await mX(),C=await Hg(),D=_0()==="zh",w=[...B].sort((R,X)=>{if(R.id===I)return-1;if(X.id===I)return 1;return 0}),N=[];for(let R of w){let X=await OX(R.id,N7,!0),k=process.cwd(),b=[{label:D?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:M7(k,45),path:k},...X.map((BA)=>({label:M7(BA.path,45),hint:zX(BA.lastLaunchedAt),path:BA.path}))],p=await qF(R.id),P=await SF(R.id)||p.find((BA)=>BA.id===C?.id)||p[0],_=P?p.findIndex((BA)=>BA.id===P.id):0,z=AN(R,P),x=await kX(R.id),EA=z.map((BA)=>BA.id),HA=x.filter((BA)=>EA.includes(BA));N.push({client:R,projects:b,providers:p,activeProvIdx:Math.max(_,0),launchOptions:z,lastSelectedOptionIds:HA})}let J=N.some((R)=>R.providers.length>0);return{clients:N,defaultIdx:0,hasProviders:J}}function sX({color:B}){let{stdout:I}=pU(),C=Math.max((I.columns||80)-6,20);return QB.jsxDEV(UA,{marginY:0,children:QB.jsxDEV($,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function _v(B){return B>30?"green":B>10?"yellow":"red"}function Vv({provider:B,zh:I}){if(!B)return QB.jsxDEV($,{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"}},D=C[B.type]??C.custom,w=I?D.zh:D.en,N=B.email??"";if(N.length>0){let[J,R]=N.split("@");if(J&&R)N=J.length>14?`${J.slice(0,12)}\u2026@${R}`:N}return QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{color:D.color,children:[D.icon," ",w]},void 0,!0,void 0,this),N&&QB.jsxDEV($,{dimColor:!0,children:[" \xB7 ",N]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function bv({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return QB.jsxDEV($,{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 R=B.daily??B.primary??B.secondary;if(!R)return null;let X=R.costUsed??0;return QB.jsxDEV($,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",QB.jsxDEV($,{color:"green",children:["$",X.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(J,R,X)=>{if(J&&J>=1440)return`${Math.round(J/1440)}d`;if(J)return`${Math.round(J/60)}h`;return X?`${X}d`:`${R}h`},D=(J)=>Math.max(0,Math.min(100,100-Math.round(J))),w=[],N=(J,R,X)=>{if(w.length)w.push(QB.jsxDEV($,{dimColor:!0,children:" \xB7 "},`sep-${J}`,!1,void 0,this));let k=D(X);w.push(QB.jsxDEV(JE.default.Fragment,{children:[`${R} \u5269 `,QB.jsxDEV($,{color:_v(k),children:[k,"%"]},void 0,!0,void 0,this)]},J,!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(!w.length)return null;return QB.jsxDEV($,{dimColor:!0,children:["\uD83D\uDCB0 ",w]},void 0,!0,void 0,this)}function jv(B,I){let C=[],D=new Set;for(let w of B)if(!w.group)C.push({kind:"flag",opt:w});else if(!D.has(w.group)){D.add(w.group);let N=w.group==="model"?I?"\u6A21\u578B":"Model":w.group;C.push({kind:"group",group:w.group,title:N})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function U7(B,I,C){return B.find((D)=>D.group===C&&I.has(D.id))}function iv({clients:B,defaultIdx:I,hasProviders:C,onResult:D}){let[w,N]=JE.useState(I),[J,R]=JE.useState("projects"),[X,k]=JE.useState(0),[b,p]=JE.useState(0),[y,P]=JE.useState(()=>B[I]?.activeProvIdx||0),[_,z]=JE.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[x,EA]=JE.useState(""),[HA,BA]=JE.useState(null),[WA,MA]=JE.useState(!1),[JA,XA]=JE.useState(0),OA=B[w],yA=OA.projects,FB=OA.providers,dA=lX[OA.client.id]||nX,IB=_0()==="zh",BB=FB[y],dB=JE.default.useMemo(()=>AN(OA.client,BB),[OA.client.id,BB?.id,BB?.type]),cA=JE.default.useMemo(()=>jv(dB,IB),[dB,IB]),rA=BB?.name||(IB?"\u672A\u914D\u7F6E":"N/A"),[wA,mA]=JE.useState(null);return JE.useEffect(()=>{if(!BB){mA(null);return}let uA=!1;return cN(BB).then((AA)=>{if(!uA)mA(AA)}),()=>{uA=!0}},[BB?.id,BB?.type]),JE.useEffect(()=>{k(0),p(0),R("projects"),P(B[w]?.activeProvIdx||0),BA(null),MA(!1),z(new Set(B[w]?.lastSelectedOptionIds??[]))},[w]),JE.useEffect(()=>{let uA=new Set(dB.map((lA)=>lA.id)),AA=new Set(dB.filter((lA)=>lA.group==="model").map((lA)=>lA.id)),hA=BB?.model?`model-${BB.model}`:void 0;z((lA)=>{let c=new Set,j=!1,o=!1;for(let KA of lA)if(uA.has(KA)){if(c.add(KA),AA.has(KA))o=!0}else j=!0;if(!o&&hA&&AA.has(hA))c.add(hA),j=!0;return j?c:lA})},[dB,BB?.model]),LE(JE.useCallback((uA,AA)=>{if(WA){let lA=FB.length+1;if(AA.escape||uA==="q"){MA(!1);return}if(AA.upArrow){XA((c)=>c>0?c-1:lA-1);return}if(AA.downArrow){XA((c)=>c<lA-1?c+1:0);return}if(AA.return)if(JA<FB.length){let c=FB[JA];P(JA),(async()=>{if(await jN(OA.client.id,c.id),OA.client.setupConfigFiles)try{await OA.client.setupConfigFiles(jC(c))}catch(j){EA(IB?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>EA(""),2500);return}OA.activeProvIdx=JA,EA(IB?`\u2713 \u5DF2\u7ED1\u5B9A ${c.name}`:`\u2713 Bound ${c.name}`),setTimeout(()=>EA(""),2000)})(),MA(!1)}else MA(!1),D({type:"providers"});return}if(HA){let lA=dB.filter((j)=>j.group===HA),c=lA.length+1;if(AA.escape||uA==="q"){BA(null);return}if(AA.upArrow){XA((j)=>j>0?j-1:c-1);return}if(AA.downArrow){XA((j)=>j<c-1?j+1:0);return}if(AA.return){if(JA===0)z((j)=>{let o=new Set(j);for(let KA of lA)o.delete(KA.id);return o});else{let j=lA[JA-1];z((o)=>{let KA=new Set(o);for(let VA of lA)KA.delete(VA.id);return KA.add(j.id),KA})}BA(null)}return}if(uA==="q"){D({type:"exit"});return}if(uA==="a"){D({type:"agent"});return}if(uA==="s"){D({type:"stats"});return}if(uA==="c"){D({type:"config"});return}if(uA==="l"){D({type:"language"});return}if(uA==="p"){D({type:"providers"});return}let hA=parseInt(uA);if(hA>=1&&hA<=B.length){N(hA-1);return}if(AA.leftArrow){N((lA)=>lA>0?lA-1:B.length-1);return}if(AA.rightArrow){N((lA)=>lA<B.length-1?lA+1:0);return}if(J==="projects"){if(AA.downArrow){if(X<yA.length-1)k((lA)=>lA+1);else if(cA.length>0)R("options"),p(0);return}if(AA.upArrow){if(X>0)k((lA)=>lA-1);return}}if(J==="options"){if(AA.downArrow){if(b<cA.length-1)p((lA)=>lA+1);return}if(AA.upArrow){if(b>0)p((lA)=>lA-1);else R("projects"),k(yA.length-1);return}}if(uA===" "&&J==="options"&&cA.length>0){let lA=cA[b];if(lA.kind==="flag")z((c)=>{let j=new Set(c);if(j.has(lA.opt.id))j.delete(lA.opt.id);else j.add(lA.opt.id);return j});else if(lA.kind==="group"){let c=U7(dB,_,lA.group),j=dB.filter((KA)=>KA.group===lA.group),o=c?j.findIndex((KA)=>KA.id===c.id)+1:0;XA(Math.max(0,o)),BA(lA.group)}else XA(y),MA(!0);return}if(AA.return){if(J==="options"&&cA.length>0){let KA=cA[b];if(KA.kind==="group"){let VA=U7(dB,_,KA.group),EB=dB.filter((jA)=>jA.group===KA.group),YA=VA?EB.findIndex((jA)=>jA.id===VA.id)+1:0;XA(Math.max(0,YA)),BA(KA.group);return}if(KA.kind==="provider"){XA(y),MA(!0);return}}let lA=yA[X],c=[],j={},o=[];for(let KA of dB)if(_.has(KA.id)){if(c.push(...KA.args),KA.envVars)Object.assign(j,KA.envVars);o.push(KA.id)}D({type:"launch",clientId:OA.client.id,projectPath:lA.path,args:c,envVars:j,selectedOptionIds:o})}},[J,w,X,b,y,FB,BB,OA,yA,dB,cA,_,B,D,IB,HA,WA,JA])),QB.jsxDEV(UA,{flexDirection:"column",paddingX:0,paddingY:1,children:[QB.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:dA.color,paddingX:2,paddingY:1,children:[QB.jsxDEV(UA,{justifyContent:"space-between",children:[QB.jsxDEV(UA,{gap:1,children:[QB.jsxDEV($,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:["v",hv]},void 0,!0,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV(Vv,{provider:BB,zh:IB},void 0,!1,void 0,this)]},void 0,!0,void 0,this),QB.jsxDEV(UA,{children:[x&&QB.jsxDEV($,{color:"green",children:x},void 0,!1,void 0,this),!x&&wA&&QB.jsxDEV(bv,{quota:wA,zh:IB},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&QB.jsxDEV(UA,{marginTop:1,justifyContent:"center",gap:1,children:[QB.jsxDEV($,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\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),QB.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:[QB.jsxDEV($,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((uA,AA)=>{let hA=lX[uA.client.id]||nX;return AA===w?QB.jsxDEV(UA,{borderStyle:"bold",borderColor:hA.color,paddingX:1,children:QB.jsxDEV($,{color:hA.color,bold:!0,children:[hA.icon," ",uA.client.name]},void 0,!0,void 0,this)},uA.client.id,!1,void 0,this):QB.jsxDEV(UA,{borderStyle:"single",borderColor:"gray",paddingX:1,children:QB.jsxDEV($,{dimColor:!0,children:[hA.icon," ",uA.client.name]},void 0,!0,void 0,this)},uA.client.id,!1,void 0,this)}),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),QB.jsxDEV(sX,{color:dA.color},void 0,!1,void 0,this),WA?QB.jsxDEV(oX,{provs:FB,provIdx:y,pickerIdx:JA,color:dA.color,zh:IB},void 0,!1,void 0,this):HA?QB.jsxDEV(cX,{group:HA,options:dB,enabled:_,pickerIdx:JA,color:dA.color,zh:IB},void 0,!1,void 0,this):QB.jsxDEV(QB.Fragment,{children:[yA.map((uA,AA)=>{let hA=J==="projects"&&AA===X;return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:uA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),uA.hint?QB.jsxDEV($,{dimColor:!0,children:uA.hint},void 0,!1,void 0,this):null]},AA,!0,void 0,this)}),cA.length>0&&QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV(sX,{color:dA.color},void 0,!1,void 0,this),cA.map((uA,AA)=>{let hA=J==="options"&&AA===b;if(uA.kind==="flag"){let lA=uA.opt,c=_.has(lA.id);return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{color:c?dA.color:void 0,bold:c,children:c?"\u25C9":"\u25CB"},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:lA.label[IB?"zh":"en"]||lA.label.en},void 0,!1,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:lA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:lA.description[IB?"zh":"en"]||lA.description.en},void 0,!1,void 0,this)]},lA.id,!0,void 0,this)}if(uA.kind==="group"){let lA=U7(dB,_,uA.group),c=lA?lA.shortLabel:IB?"\u9ED8\u8BA4":"Default";return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:[uA.title,":"]},void 0,!0,void 0,this),QB.jsxDEV($,{color:lA?dA.color:void 0,children:c},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:IB?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${uA.group}`,!0,void 0,this)}return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:[uA.title,":"]},void 0,!0,void 0,this),QB.jsxDEV($,{color:BB?dA.color:"yellow",children:BB?rA:IB?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),QB.jsxDEV($,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:IB?"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),QB.jsxDEV(UA,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:J==="options"?QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\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 rX({onResult:B}){let[I,C]=JE.useState(null);if(JE.useEffect(()=>{Pv().then(C)},[]),!I)return QB.jsxDEV($,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return QB.jsxDEV(iv,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,onResult:B},void 0,!1,void 0,this)}rE();$D();await uC();var aI=ZB(hQ(),1);fw();fw();W2();fw();await uC();var MB=ZB(yI(),1),K2={"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"}},R7={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},lN=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function tX({provider:B,focused:I,bound:C,isDefault:D,zh:w}){let N=K2[B.type]||K2.custom,J=w?jg[B.type]?.zh:jg[B.type]?.en;return MB.jsxDEV(UA,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?N.color:C?N.color:"gray",paddingX:2,paddingY:0,children:[MB.jsxDEV(UA,{justifyContent:"space-between",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:I||C,color:I?N.color:void 0,children:B.name},void 0,!1,void 0,this),D&&MB.jsxDEV($,{color:"yellow",children:["\u2605 ",w?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&MB.jsxDEV($,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{gap:1,children:C?MB.jsxDEV($,{color:N.color,bold:!0,children:["\u25CF ",w?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):MB.jsxDEV($,{dimColor:!0,children:["\u25CB ",w?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:J},void 0,!1,void 0,this),B.model&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&MB.jsxDEV($,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&MB.jsxDEV($,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&MB.jsxDEV($,{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&&MB.jsxDEV(UA,{marginTop:0,children:MB.jsxDEV($,{color:N.color,dimColor:!0,children:["Enter ",w?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",w?"\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 eX({screen:B,addType:I,addKey:C,addUrl:D,addModel:w,addCtx:N,rowIdx:J,zh:R}){let X=K2[I]||K2.custom,k=R?jg[I]?.zh:jg[I]?.en,b=B==="add-model"?EN(I):void 0;if(b)return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:X.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,marginBottom:1,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:X.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:X.color,children:k},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:["\u2014 ",R?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),b.map((z,x)=>{let EA=J===x;return MB.jsxDEV(UA,{paddingLeft:1,gap:1,children:[MB.jsxDEV($,{color:EA?X.color:void 0,bold:EA,children:EA?"\u25B8":" "},void 0,!1,void 0,this),MB.jsxDEV($,{bold:EA,color:EA?X.color:void 0,children:z},void 0,!1,void 0,this)]},z,!0,void 0,this)})]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u9009\u62E9":"select"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let p=B==="add-key"?R?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?R?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":R?"\u6A21\u578B":"Model",y=B==="add-key"?C:B==="add-url"?D:B==="add-ctx"?N??"":w,P=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?R?"\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"?G4(I)||(R?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,_=B==="add-url"?R?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?R?"\u4FDD\u5B58":"save":B==="add-model"?R?"\u4FDD\u5B58":"save":R?"\u786E\u8BA4":"confirm";return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:X.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,marginBottom:1,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:X.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:X.color,children:k},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:["\u2014 ",p]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&MB.jsxDEV($,{dimColor:!0,children:[" ",R?"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),P&&MB.jsxDEV($,{dimColor:!0,children:[" ",R?"\u9ED8\u8BA4":"Default",": ",P]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:P?1:0,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),MB.jsxDEV($,{children:y||P||""},void 0,!1,void 0,this),MB.jsxDEV($,{color:X.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:_},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Aq({provider:B,defaultId:I,detailActions:C,detailIdx:D,zh:w}){let N=K2[B.type]||K2.custom,J=w?jg[B.type]?.zh:jg[B.type]?.en;return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:N.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:N.color,children:B.name},void 0,!1,void 0,this),B.id===I&&MB.jsxDEV($,{color:"yellow",children:[" \u2605 ",w?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:[w?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),MB.jsxDEV($,{children:J},void 0,!1,void 0,this),B.builtin&&MB.jsxDEV($,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:[w?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),MB.jsxDEV($,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),MB.jsxDEV($,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),MB.jsxDEV($,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),MB.jsxDEV($,{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),MB.jsxDEV(UA,{gap:1,marginTop:1,children:C.map((R,X)=>{let k=R==="default"?`\u2B50 ${w?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:R==="rekey"?`\uD83D\uDD11 ${w?"\u4FEE\u6539 Key":"Change Key"}`:R==="relogin"?`\uD83D\uDD04 ${w?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:R==="delete"?`\uD83D\uDDD1\uFE0F ${w?"\u5220\u9664":"Delete"}`:`\u2190 ${w?"\u8FD4\u56DE":"Back"}`,b=X===D;return MB.jsxDEV(UA,{borderStyle:b?"bold":"round",borderColor:b?"cyan":"gray",paddingX:2,children:MB.jsxDEV($,{bold:b,color:b?"cyan":void 0,dimColor:!b,children:k},void 0,!1,void 0,this)},R,!1,void 0,this)})},void 0,!1,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u9009\u62E9":"select"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var gQ=ZB(yI(),1);function Bq({onDone:B}){let[I,C]=aI.useState("list"),[D,w]=aI.useState([]),[N,J]=aI.useState(),[R,X]=aI.useState({}),[k,b]=aI.useState(0),[p,y]=aI.useState(0),[P,_]=aI.useState(0),[z,x]=aI.useState(""),[EA,HA]=aI.useState(""),[BA,WA]=aI.useState("tako"),[MA,JA]=aI.useState(""),[XA,OA]=aI.useState(""),[yA,FB]=aI.useState(""),[dA,IB]=aI.useState(""),BB=_0()==="zh",dB=x1(),cA=dB[k],rA=R7[cA?.id]?.color||"white",wA=cA?D.filter((YA)=>u4(YA,cA.id)):[],mA=R[cA?.id]||N,uA=wA.length+4,AA=D.find((YA)=>YA.id===z),hA=AA?.type==="claude-subscription"||AA?.type==="codex-subscription",lA=AA?[...AA.id!==N?["default"]:[],...hA?["relogin"]:[],...AA.builtin?["rekey"]:["delete"],"back"]:["back"],c=aI.useCallback(async()=>{let YA=await bC(),jA=await Hg();w(YA),J(jA?.id);let qA={};for(let xA of x1()){let HB=await SF(xA.id);qA[xA.id]=HB?.id}X(qA)},[]);aI.useEffect(()=>{c()},[c]),aI.useEffect(()=>{y(0)},[k]),aI.useEffect(()=>{if(EA){let YA=setTimeout(()=>HA(""),3000);return()=>clearTimeout(YA)}},[EA]);let j=aI.useCallback(async()=>{if(z&&D.find((AB)=>AB.id===z)?.builtin){await C8(z,{apiKey:MA}),HA(BB?"Key \u5DF2\u66F4\u65B0":"Key updated"),await c(),C("list"),y(0);return}let YA=jg[BA]?.[BB?"zh":"en"]||BA,jA=XA||eL(BA),qA=yA||G4(BA),xA=dA?parseInt(dA,10):NaN,HB=Number.isFinite(xA)&&xA>0?xA:void 0;await E8({name:YA,type:BA,apiKey:MA,baseUrl:jA,model:qA,modelContextWindow:HB,supportedClients:ug(BA)}),u0("provider_added",{provider_type:BA,method:"manual"}),yF(),vD(),HA(BB?"\u5DF2\u6DFB\u52A0":"Added"),IB(""),await c(),C("list"),y(0)},[BA,MA,XA,yA,dA,BB,c,z,D]),o=aI.useCallback(async()=>{C("scanning");let YA=await iN(),jA=await xN(YA);if(jA>0)yF(),vD();HA(BB?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${jA} \u4E2A`:`Scan done, ${jA} added`),await c(),C("list"),y(0)},[c,BB]),[KA,VA]=aI.useState("claude"),EB=aI.useCallback(async(YA)=>{VA(YA),C("logging-in");let jA=YA==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(jA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:xA}=await Promise.resolve().then(() => (_M(),aX));if(YA==="claude")try{let HB=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),AB=await new Response(HB.stdout).text();await HB.exited;let VB=JSON.parse(AB.trim());if(VB.loggedIn&&VB.authMethod==="claude.ai"){let l=VB.email||"",zA=VB.subscriptionType||"pro",nA=`Claude ${zA.charAt(0).toUpperCase()+zA.slice(1)}${l?` (${l})`:""}`,{readClaudeAuth:bB}=await Promise.resolve().then(() => ($M(),zM)),QQ=await bB(),DQ=QQ.credentials||QQ.oauthAccount?{credentials:QQ.credentials,oauthAccount:QQ.oauthAccount}:void 0,PQ=D.find((PI)=>PI.type==="claude-subscription"&&PI.email===l);if(!PQ)await E8({name:nA,type:"claude-subscription",email:l,subscriptionType:zA,supportedClients:ug("claude-subscription"),authData:DQ}),HA(BB?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await C8(PQ.id,{authData:DQ}),xA(PQ.id,"claude-subscription"),HA(BB?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else HA(BB?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{HA(BB?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let HB=await import("fs/promises"),{homedir:AB}=await import("os"),{join:VB}=await import("path"),l=JSON.parse(await HB.readFile(VB(AB(),".codex","auth.json"),"utf-8"));if(l.auth_mode==="chatgpt"&&l.tokens?.access_token){let zA="";try{zA=JSON.parse(atob(l.tokens.id_token.split(".")[1])).email||""}catch{}let nA=D.find((bB)=>bB.type==="codex-subscription"&&bB.email===zA);if(!nA)await E8({name:zA?`Codex Plus (${zA})`:"Codex Subscription",type:"codex-subscription",email:zA||void 0,supportedClients:ug("codex-subscription"),authData:l}),HA(BB?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await C8(nA.id,{authData:l}),xA(nA.id,"codex-subscription"),HA(BB?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else HA(BB?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{HA(BB?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await c(),C("list"),y(0)},[D,BB,c]);if(LE(aI.useCallback((YA,jA)=>{if(I==="list"){if(jA.escape||YA==="q"){B();return}if(jA.leftArrow){b((xA)=>xA>0?xA-1:dB.length-1);return}if(jA.rightArrow){b((xA)=>xA<dB.length-1?xA+1:0);return}let qA=parseInt(YA);if(qA>=1&&qA<=dB.length){b(qA-1);return}if(jA.upArrow){y((xA)=>xA>0?xA-1:uA-1);return}if(jA.downArrow){y((xA)=>xA<uA-1?xA+1:0);return}if(jA.return){if(p<wA.length){let xA=wA[p];jN(cA.id,xA.id).then(()=>{B()})}else if(p===wA.length)C("add-type"),y(0);else if(p===wA.length+1)o();else if(p===wA.length+2)B("client-versions");else B();return}if((YA==="d"||YA==="e")&&p<wA.length)x(wA[p].id),C("detail"),_(0);return}if(I==="detail"){if(jA.leftArrow){_((qA)=>qA>0?qA-1:lA.length-1);return}if(jA.rightArrow){_((qA)=>qA<lA.length-1?qA+1:0);return}if(jA.escape){C("list"),y(0);return}if(jA.return){let qA=lA[P];if(qA==="back"){C("list"),y(0);return}if(qA==="default")sU(z).then(()=>{HA(BB?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),c(),C("list"),y(0)});if(qA==="delete")nU(z).then(()=>{HA(BB?"\u5DF2\u5220\u9664":"Deleted"),c(),C("list"),y(0)});if(qA==="rekey")WA(AA?.type||"tako"),JA(""),C("add-key"),y(0);if(qA==="relogin"){let xA=AA?.type==="codex-subscription"?"codex":"claude";C("list"),y(0),EB(xA)}}return}if(I==="add-type"){if(jA.upArrow){y((qA)=>qA>0?qA-1:lN.length-1);return}if(jA.downArrow){y((qA)=>qA<lN.length-1?qA+1:0);return}if(jA.escape){C("list"),y(0);return}if(jA.return){let qA=lN[p];if(WA(qA),qA==="claude-subscription"){EB("claude");return}if(qA==="codex-subscription"){EB("codex");return}JA(""),OA(""),FB(G4(qA)||""),C("add-key"),y(0)}return}if(I==="add-key"){if(jA.escape){C("list"),y(0);return}if(jA.return&&MA){if(BA==="custom")C("add-url");else if(BA==="deepseek"||BA==="anthropic"||BA==="tako"||BA==="xiaomi")C("add-model"),y(0);else j();return}if(jA.backspace||jA.delete){JA((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl)JA((qA)=>qA+YA);return}if(I==="add-url"){if(jA.escape){C("list"),y(0);return}if(jA.return){C("add-model"),y(0);return}if(jA.backspace||jA.delete){OA((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl)OA((qA)=>qA+YA);return}if(I==="add-model"){let qA=EN(BA);if(jA.escape){C("list"),y(0);return}if(qA){if(jA.upArrow){y((xA)=>xA>0?xA-1:qA.length-1);return}if(jA.downArrow){y((xA)=>xA<qA.length-1?xA+1:0);return}if(jA.return){FB(qA[p]),setTimeout(()=>j(),0);return}}else{if(jA.return){let xA=yA.trim();if(xA&&VC.some((HB)=>HB.id===xA))j();else C("add-ctx");return}if(jA.backspace||jA.delete){FB((xA)=>xA.slice(0,-1));return}if(YA&&!jA.ctrl)FB((xA)=>xA+YA)}return}if(I==="add-ctx"){if(jA.escape){C("list"),y(0);return}if(jA.return){j();return}if(jA.backspace||jA.delete){IB((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl&&/^[0-9]$/.test(YA))IB((qA)=>qA+YA);return}},[I,p,P,wA,uA,dB.length,cA,z,AA,lA,BA,MA,XA,yA,dA,B,o,EB,j,c,BB])),I==="scanning"||I==="logging-in"){let YA=I==="logging-in"?K2[KA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},jA=I==="scanning"?BB?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":BB?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:gQ.jsxDEV(UA,{borderStyle:"round",borderColor:YA.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[gQ.jsxDEV($,{color:YA.color,bold:!0,children:[YA.icon," ",jA]},void 0,!0,void 0,this),I==="logging-in"&&gQ.jsxDEV($,{dimColor:!0,children:BB?"\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 gQ.jsxDEV(eX,{screen:I,addType:BA,addKey:MA,addUrl:XA,addModel:yA,addCtx:dA,rowIdx:p,zh:BB},void 0,!1,void 0,this);if(I==="add-type")return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[gQ.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:gQ.jsxDEV($,{bold:!0,children:["\u2795 ",BB?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),gQ.jsxDEV(UA,{flexDirection:"column",marginTop:1,gap:0,children:lN.map((YA,jA)=>{let qA=K2[YA]||K2.custom,xA=p===jA,HB=BB?jg[YA]?.zh:jg[YA]?.en,AB=YA==="claude-subscription"||YA==="codex-subscription";return gQ.jsxDEV(UA,{borderStyle:xA?"bold":"round",borderColor:xA?qA.color:"gray",paddingX:2,paddingY:0,children:gQ.jsxDEV(UA,{gap:1,children:[gQ.jsxDEV($,{color:qA.color,bold:!0,children:qA.icon},void 0,!1,void 0,this),gQ.jsxDEV($,{bold:xA,color:xA?qA.color:void 0,children:HB},void 0,!1,void 0,this),AB&&gQ.jsxDEV($,{dimColor:!0,children:["(",BB?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!AB&&gQ.jsxDEV($,{dimColor:!0,children:["(",BB?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},YA,!1,void 0,this)})},void 0,!1,void 0,this),gQ.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&AA)return gQ.jsxDEV(Aq,{provider:AA,defaultId:N,detailActions:lA,detailIdx:P,zh:BB},void 0,!1,void 0,this);return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[gQ.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[gQ.jsxDEV($,{bold:!0,children:["\u26A1 ",BB?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),EA&&gQ.jsxDEV($,{color:"green",children:[" \u2713 ",EA]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:[gQ.jsxDEV($,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),dB.map((YA,jA)=>{let qA=R7[YA.id]||{icon:"\u25AA",color:"white"},xA=jA===k;return gQ.jsxDEV(UA,{borderStyle:xA?"bold":"single",borderColor:xA?qA.color:"gray",paddingX:2,children:gQ.jsxDEV($,{color:xA?qA.color:void 0,bold:xA,dimColor:!xA,children:[qA.icon," ",YA.name]},void 0,!0,void 0,this)},YA.id,!1,void 0,this)}),gQ.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:rA,paddingX:1,paddingY:1,children:[wA.length===0&&gQ.jsxDEV(UA,{paddingX:2,paddingY:1,justifyContent:"center",children:gQ.jsxDEV($,{dimColor:!0,children:BB?"\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),wA.map((YA,jA)=>gQ.jsxDEV(tX,{provider:YA,focused:p===jA,bound:YA.id===mA,isDefault:YA.id===N,zh:BB},YA.id,!1,void 0,this))]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:BB?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:BB?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:BB?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:BB?"\u8FD4\u56DE":"Back"}].map((YA)=>{let jA=p===wA.length+YA.offset;return gQ.jsxDEV(UA,{borderStyle:jA?"bold":"round",borderColor:jA?"cyan":"gray",paddingX:2,children:gQ.jsxDEV($,{bold:jA,color:jA?"cyan":void 0,dimColor:!jA,children:[YA.icon," ",YA.label]},void 0,!0,void 0,this)},YA.id,!1,void 0,this)})},void 0,!1,void 0,this),gQ.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}rE();await uC();var OF=ZB(hQ(),1);jE();async function Qq(){try{let B=await i1();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${wC}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),w=await(await fetch(`${wC}/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=(w.data||[]).map((J)=>({model:J.model,requests:J.requests,cost:J.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 Iq(B){return B.toLocaleString("en-US")}var iC=ZB(yI(),1);function Eq({onExit:B}){let[I,C]=OF.useState(null),[D,w]=OF.useState(!0),[N,J]=OF.useState(10),R=OF.useCallback(async()=>{w(!0);let k=await Qq();if(k.success&&k.data)C(k.data);w(!1)},[]);OF.useEffect(()=>{R()},[R]),OF.useEffect(()=>{let k=setInterval(()=>{J((b)=>{if(b<=1)return R(),10;return b-1})},1000);return()=>clearInterval(k)},[R]),LE((k,b)=>{if(k==="q"||b.escape)B()});let X=_0()==="zh";return iC.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[iC.jsxDEV($,{bold:!0,children:AQ("stats.title")},void 0,!1,void 0,this),D&&!I?iC.jsxDEV($,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?iC.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[iC.jsxDEV($,{children:AQ("stats.totalRequests",{count:Iq(I.totalRequests)})},void 0,!1,void 0,this),iC.jsxDEV($,{children:AQ("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),iC.jsxDEV($,{children:AQ("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&iC.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[iC.jsxDEV($,{bold:!0,dimColor:!0,children:X?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((k,b)=>iC.jsxDEV($,{dimColor:!0,children:[b===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",k.model.padEnd(25)," ",String(k.requests).padStart(5)," ",k.cost]},k.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):iC.jsxDEV($,{color:"red",children:X?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),iC.jsxDEV(UA,{marginTop:1,children:iC.jsxDEV($,{dimColor:!0,children:X?`${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)}rE();await uC();var iw=ZB(hQ(),1);jE();rE();W2();$D();fw();function xv(B){return B.startsWith("cr_")&&B.length>10}async function pv(B){try{let C=await(await fetch(`${wC}/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||AQ("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:AQ("auth.networkError")}}}async function Cq(B){if(!xv(B))return u0("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:AQ("auth.invalidFormat")};let I=await pv(B);if(!I.valid)return u0("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await j1({apiKey:B,apiId:I.apiId}),await av(B,I.apiId),u0("api_key_validated",{success:!0}),yF(),vD(),{success:!0}}async function av(B,I){let D=(await bC()).find((w)=>w.type==="tako");if(D)await C8(D.id,{apiKey:B,apiId:I});else await E8({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:wC,apiId:I,supportedClients:ug("tako"),builtin:!0})}W2();var dg=ZB(yI(),1);function gq({isReconfigure:B,onDone:I}){let[C,D]=iw.useState(""),[w,N]=iw.useState("idle"),[J,R]=iw.useState(""),{stdin:X,setRawMode:k}=$4();iw.useEffect(()=>{if(!X)return;k(!0);let P=(_)=>{let z=_.toString();if(z.length>1&&!z.startsWith("\x1B"))D((x)=>x+z.replace(/[\r\n]/g,""))};return X.on("data",P),()=>{X.off("data",P)}},[X,k]);let b=iw.useCallback(async()=>{if(!C||w==="validating")return;N("validating");let P=await Cq(C);if(P.success)N("success"),yF(),vD(),setTimeout(()=>I(!0),500);else N("error"),R(P.error||"Validation failed")},[C,w,I]);LE((P,_)=>{if(_.escape){I(!1);return}if(_.return){b();return}if(_.backspace||_.delete){D((z)=>z.slice(0,-1)),N("idle");return}if(P&&!_.ctrl&&P.length===1)D((z)=>z+P),N("idle")});let p=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,y=_0()==="zh";return dg.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[dg.jsxDEV($,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?AQ("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),dg.jsxDEV(UA,{marginTop:1,children:[dg.jsxDEV($,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),dg.jsxDEV($,{children:p},void 0,!1,void 0,this),w==="idle"&&dg.jsxDEV($,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w==="validating"&&dg.jsxDEV($,{color:"yellow",children:["\u23F3 ",AQ("prompts.validating")]},void 0,!0,void 0,this),w==="success"&&dg.jsxDEV($,{color:"green",children:["\u2713 ",AQ("prompts.keyConfigured")]},void 0,!0,void 0,this),w==="error"&&dg.jsxDEV($,{color:"red",children:["\u2717 ",J]},void 0,!0,void 0,this),dg.jsxDEV(UA,{marginTop:1,children:dg.jsxDEV($,{dimColor:!0,children:["Enter ",y?"\u63D0\u4EA4":"submit"," Esc ",y?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}rE();await uC();var Dq=ZB(hQ(),1),mF=ZB(yI(),1),nN=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function Fq({onDone:B}){let[I,C]=Dq.useState(nN.findIndex((D)=>D.value===_0()));return LE((D,w)=>{if(w.upArrow)C((N)=>N>0?N-1:nN.length-1);if(w.downArrow)C((N)=>N<nN.length-1?N+1:0);if(w.return)oU(nN[I].value),B();if(w.escape)B()}),mF.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[mF.jsxDEV($,{bold:!0,children:["\uD83C\uDF10 ",AQ("menu.changeLanguage")]},void 0,!0,void 0,this),nN.map((D,w)=>mF.jsxDEV(UA,{gap:1,marginTop:w===0?1:0,children:[mF.jsxDEV($,{color:"cyan",bold:w===I,children:w===I?"\u25B8":" "},void 0,!1,void 0,this),mF.jsxDEV($,{bold:w===I,children:D.label},void 0,!1,void 0,this),D.value===_0()&&mF.jsxDEV($,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},D.value,!0,void 0,this)),mF.jsxDEV(UA,{marginTop:1,children:mF.jsxDEV($,{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)}jE();jE();rE();await uC();var bM=ZB(hQ(),1),XE=ZB(yI(),1);import{join as dv}from"path";var Gq=dv(w0,".key-prompt.json");async function ov(){try{return await Bun.file(Gq).json()}catch{return{}}}async function wq(B){await Bun.write(Gq,JSON.stringify(B))}async function uq(){if(await hL())return!1;let B=await ov();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function Nq(B){if(B==="never")await wq({never:!0});else{let I=new Date().toISOString().slice(0,10);await wq({dismissed:I})}}var VM=[{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 Hq({onDone:B}){let[I,C]=bM.useState(0),D=_0()==="zh";return LE(bM.useCallback((w,N)=>{if(N.upArrow){C((J)=>J>0?J-1:VM.length-1);return}if(N.downArrow){C((J)=>J<VM.length-1?J+1:0);return}if(N.escape){B("skip");return}if(N.return){B(VM[I].id);return}},[I,B])),XE.jsxDEV(UA,{flexDirection:"column",paddingX:0,paddingY:1,children:[XE.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[XE.jsxDEV(UA,{gap:1,children:[XE.jsxDEV($,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),XE.jsxDEV($,{bold:!0,children:D?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XE.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:[XE.jsxDEV($,{dimColor:!0,children:D?"\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),XE.jsxDEV($,{dimColor:!0,children:D?"\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),XE.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:VM.map((w,N)=>{let J=N===I;return XE.jsxDEV(UA,{paddingLeft:1,gap:1,children:[XE.jsxDEV($,{color:J?w.color||"white":void 0,bold:J,children:J?"\u25B8":" "},void 0,!1,void 0,this),XE.jsxDEV($,{bold:J,color:J?w.color||"white":void 0,children:D?w.label.zh:w.label.en},void 0,!1,void 0,this),J&&XE.jsxDEV($,{dimColor:!0,children:D?w.hint.zh:w.hint.en},void 0,!1,void 0,this)]},w.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XE.jsxDEV(UA,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[XE.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u9009\u62E9":"select"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}await uC();var xC=ZB(hQ(),1);_C();jE();f4();import{join as jM}from"path";async function iM(B){let C=`${await Mg()}/${encodeURIComponent(B).replace("%40","@")}`,D=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!D.ok)throw Error(`registry http ${D.status}`);let w=await D.json(),N=Object.keys(w.versions??{});if(!N.length)throw Error("no versions found");let J=w.time??{},R=N.map((X)=>({version:X,publishedAt:J[X],isCurrent:!1}));return R.sort((X,k)=>{let b=X.publishedAt?Date.parse(X.publishedAt):0;return(k.publishedAt?Date.parse(k.publishedAt):0)-b}),R}async function xM(B,I){let C=await import("fs/promises"),D=WF(B.id);await C.mkdir(D,{recursive:!0});let w=jM(D,"bun.lock"),N=jM(D,"node_modules");await C.rm(w,{force:!0}).catch(()=>{}),await C.rm(N,{recursive:!0,force:!0}).catch(()=>{});let J=jM(D,"package.json");await Bun.write(J,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let R=await Mg(),{detectRegion:X}=await Promise.resolve().then(() => (f4(),DX)),k=await X(),{log:b}=await Promise.resolve().then(() => (YF(),rR));b.info(`\u7F51\u7EDC\u73AF\u5883: ${k==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${R}`);let p=Bun.spawn([P0,"add",`${B.package}@${I}`],{cwd:D,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:R}});if(await p.exited,p.exitCode!==0){let P=await new Response(p.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${P.slice(0,500).trim()}`)}let y=await vQ();await j1({installedClients:{...y.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function pM(B){let I=WF(B.id),C=jM(I,"node_modules",B.package,"package.json");try{let w=Bun.file(C);if(await w.exists()){let N=await w.json();if(N.version)return N.version}}catch{}return(await vQ()).installedClients[B.id]?.version??null}rE();var GI=ZB(yI(),1),W7=12,Mq={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function Lq({onDone:B}){let I=x1(),C=_0()==="zh",[D,w]=xC.useState(0),[N,J]=xC.useState(0),[R,X]=xC.useState(0),[k,b]=xC.useState({}),[p,y]=xC.useState(null),[P,_]=xC.useState(""),z=I[D],x=xC.useCallback(async(JA)=>{b((OA)=>({...OA,[JA]:{loading:!0,versions:[],current:null}}));let XA=I.find((OA)=>OA.id===JA);if(!XA)return;try{let[OA,yA]=await Promise.all([iM(XA.package),pM(XA)]),FB=OA.map((dA)=>({...dA,isCurrent:dA.version===yA}));b((dA)=>({...dA,[JA]:{loading:!1,versions:FB,current:yA}}))}catch(OA){b((yA)=>({...yA,[JA]:{loading:!1,error:OA.message,versions:[],current:null}}))}},[I]);xC.useEffect(()=>{if(!z)return;if(!k[z.id])x(z.id)},[D,z?.id]),xC.useEffect(()=>{J(0),X(0)},[D]),xC.useEffect(()=>{if(!P)return;let JA=setTimeout(()=>_(""),3000);return()=>clearTimeout(JA)},[P]);let EA=z?k[z.id]:void 0,HA=EA?.versions??[],BA=xC.useCallback(async(JA)=>{if(!z||p)return;y(JA);try{await xM(z,JA),_(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${JA}`:`\u2713 Switched to ${JA}`),await x(z.id)}catch(XA){_(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${XA.message}`:`\u2717 Install failed: ${XA.message}`)}finally{y(null)}},[z,p,x,C]);LE((JA,XA)=>{if(p)return;if(XA.escape||JA==="q"){B();return}if(XA.leftArrow){w((yA)=>yA>0?yA-1:I.length-1);return}if(XA.rightArrow){w((yA)=>yA<I.length-1?yA+1:0);return}if(JA==="r"){if(z)x(z.id);return}if(!HA.length)return;let OA=HA.length-1;if(XA.upArrow){J((yA)=>{let FB=Math.max(0,yA-1);if(FB<R)X(FB);return FB});return}if(XA.downArrow){J((yA)=>{let FB=Math.min(OA,yA+1);if(FB>=R+W7)X(FB-W7+1);return FB});return}if(XA.return){let yA=HA[N];if(yA&&!yA.isCurrent)BA(yA.version)}});let WA=Mq[z?.id]?.color||"white",MA=HA.slice(R,R+W7);return GI.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[GI.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[GI.jsxDEV($,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),P&&GI.jsxDEV($,{color:P.startsWith("\u2713")?"green":"red",children:[" ",P]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GI.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:I.map((JA,XA)=>{let OA=Mq[JA.id]||{icon:"\u25AA",color:"white"},yA=XA===D;return GI.jsxDEV(UA,{borderStyle:yA?"bold":"single",borderColor:yA?OA.color:"gray",paddingX:2,children:GI.jsxDEV($,{bold:yA,color:yA?OA.color:void 0,dimColor:!yA,children:[OA.icon," ",JA.name]},void 0,!0,void 0,this)},JA.id,!1,void 0,this)})},void 0,!1,void 0,this),GI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:WA,paddingX:2,paddingY:1,children:!EA||EA.loading?GI.jsxDEV($,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):EA.error?GI.jsxDEV($,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",EA.error]},void 0,!0,void 0,this):HA.length===0?GI.jsxDEV($,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):GI.jsxDEV(UA,{flexDirection:"column",children:[GI.jsxDEV($,{dimColor:!0,children:[C?`\u5171 ${HA.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${HA.length} versions, current: `,GI.jsxDEV($,{color:WA,children:EA.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GI.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:MA.map((JA,XA)=>{let yA=R+XA===N,FB=JA.publishedAt?JA.publishedAt.slice(0,10):"",dA=JA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",IB=p===JA.version,BB=yA?WA:JA.isCurrent?"green":void 0;return GI.jsxDEV(UA,{paddingLeft:1,children:GI.jsxDEV($,{color:BB,bold:yA,dimColor:!yA&&!JA.isCurrent,children:[yA?"\u25B6 ":" ",JA.version.padEnd(16),FB.padEnd(14),dA,IB?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},JA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),GI.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GI.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GI.jsxDEV($,{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)}rE();await I4([uC(),Q9()]);var N0=ZB(hQ(),1);rE();D8();await I4([uC(),Q9()]);var V0=ZB(hQ(),1),rQ=ZB(yI(),1),bq=300,jq=200;function Hf(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 iq({sid:B,onBack:I}){let C=ag()==="zh",[D,w]=V0.useState(null),[N,J]=V0.useState([]),[R,X]=V0.useState(""),[k,b]=V0.useState("idle"),[p,y]=V0.useState(null),[P,_]=V0.useState([]),z=V0.useRef(0),x=V0.useCallback(async()=>{let WA=await b4(B,jq);if(!WA)return;w(WA.meta),J(WA.log);try{let JA=await(await import("fs/promises")).stat(n0(B));z.current=JA.size}catch{z.current=0}},[B]);V0.useEffect(()=>{x()},[x]),V0.useEffect(()=>{let WA=!1,MA=null,JA=async()=>{if(WA)return;try{let XA=await import("fs/promises"),OA=await XA.stat(n0(B));if(OA.size>z.current){let yA=await XA.open(n0(B),"r"),FB=Buffer.alloc(OA.size-z.current);await yA.read(FB,0,FB.length,z.current),await yA.close(),z.current=OA.size;let dA=[];for(let IB of FB.toString("utf-8").split(`
|
|
825
|
+
`)[0];if(y)w=y;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 J=B.getEnvVars(D),R={...process.env,...J,...I?.envVars??{}},X;if(B.runtime==="native")X=[w];else X=[await kF(),w];if(I?.args&&I.args.length>0)X=[...X,...I.args];let k=process.platform==="win32";if(!k)try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1)}catch{}if(process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}if(k){let{spawnSync:b}=await import("child_process");b(X[0],X.slice(1),{env:R,stdio:"inherit",cwd:C,windowsHide:!1})}else try{Bun.spawnSync(X,{env:R,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(X,{env:R,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 Rv(B,I){if(I?.providerContext)return I.providerContext;let C=await Hg();if(C){let D=await qF(B.id);if(D.some((N)=>N.id===C.id))return jC(C);if(D.length>0)return jC(D[0])}return null}async function hM(B,I){try{let C=I?.projectPath||process.cwd();if(I?.projectPath){if(!await H7(I.projectPath))return{success:!1,error:AQ("launcher.directoryNotFound",{path:I.projectPath})}}let D=await SX(B);if(!D.success)return D;let w=await Rv(B,I);if(!w)return{success:!1,error:AQ("launcher.apiKeyNotConfigured")};if(B.setupConfigFiles)await B.setupConfigFiles(w,I?.selectedOptionIds);await yX(C,B.id,I?.selectedOptionIds);let J=(await vQ()).installedClients[B.id]?.version;return u0("client_launched",{client_id:B.id,client_version:J,project_hash:JX(C),is_recent_project:!!I?.projectPath}),LQ.info(AQ("launcher.starting",{client:B.name})),await $X(B,{...I,providerContext:w})}catch(C){return{success:!1,error:C instanceof Error?C.message:"Launch failed"}}}_C();rE();W2();YF();$D();$D();W2();async function PM(B){let I=await qF(B);if(I.length===0)return null;let C=await SF(B);if(C)return jC(C);if(I.length===1)return jC(I[0]);let D=await Hg();if(D&&I.some((w)=>w.id===D.id))return jC(D);return jC(I[0])}async function vX(){let B=await iN();if(await xN(B)>0){for(let C of B)u0("provider_added",{provider_type:C.type,method:"auto_detect"});yF(),vD()}}await uC();var og=ZB(hQ(),1);await uC();var JE=ZB(hQ(),1);_C();$D();rE();_M();await uC();var EI=ZB(yI(),1),Tv=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function dX({zh:B}){return EI.jsxDEV(UA,{marginTop:1,justifyContent:"center",gap:2,children:Tv.flatMap((I,C)=>{return[C>0?EI.jsxDEV($,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,EI.jsxDEV($,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),EI.jsxDEV($,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function oX({provs:B,provIdx:I,pickerIdx:C,color:D,zh:w}){return EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:D,paddingX:2,paddingY:1,children:[EI.jsxDEV($,{bold:!0,color:D,children:["\u25A3 ",w?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[B.length===0&&EI.jsxDEV(UA,{paddingLeft:1,children:EI.jsxDEV($,{dimColor:!0,children:w?"\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,J)=>{let R=C===J,X=J===I;return EI.jsxDEV(UA,{paddingLeft:1,children:[EI.jsxDEV($,{color:R?D:void 0,bold:R,children:R?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:R,color:R?D:void 0,children:[" ",N.name]},void 0,!0,void 0,this),N.email&&EI.jsxDEV($,{dimColor:!0,children:[" (",N.email,")"]},void 0,!0,void 0,this),X&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},N.id,!0,void 0,this)}),(()=>{let N=C===B.length;return EI.jsxDEV(UA,{paddingLeft:1,marginTop:1,children:[EI.jsxDEV($,{color:N?D:void 0,bold:N,children:N?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:N,color:N?D:void 0,children:[" ","\u2699 ",w?"\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),EI.jsxDEV(dX,{zh:w},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cX({group:B,options:I,enabled:C,pickerIdx:D,color:w,zh:N}){let J=I.filter((k)=>k.group===B),R=B==="model"?N?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,X=!J.some((k)=>C.has(k.id));return EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:w,paddingX:2,paddingY:1,children:[EI.jsxDEV($,{bold:!0,color:w,children:["\u25A3 ",R]},void 0,!0,void 0,this),EI.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[(()=>{let k=D===0;return EI.jsxDEV(UA,{paddingLeft:1,children:[EI.jsxDEV($,{color:k?w:void 0,bold:k,children:k?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:k,color:k?w:void 0,children:[" ",N?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),X&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),J.map((k,b)=>{let p=D===b+1,y=C.has(k.id);return EI.jsxDEV(UA,{paddingLeft:1,flexDirection:"column",children:[EI.jsxDEV(UA,{children:[EI.jsxDEV($,{color:p?w:void 0,bold:p,children:p?"\u25B8":" "},void 0,!1,void 0,this),EI.jsxDEV($,{bold:p,color:p?w:void 0,children:[" ",k.label[N?"zh":"en"]||k.label.en]},void 0,!0,void 0,this),y&&EI.jsxDEV($,{color:"green",children:" \u2605"},void 0,!1,void 0,this),EI.jsxDEV($,{dimColor:!0,children:[" ",k.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),p&&EI.jsxDEV(UA,{paddingLeft:3,children:EI.jsxDEV($,{dimColor:!0,children:k.description[N?"zh":"en"]||k.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},k.id,!0,void 0,this)})]},void 0,!0,void 0,this),EI.jsxDEV(dX,{zh:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var QB=ZB(yI(),1),hv="0.3.1",lX={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},nX={icon:"\u25AA",color:"white"};async function Pv(){let B=x1(),I=await mX(),C=await Hg(),D=_0()==="zh",w=[...B].sort((R,X)=>{if(R.id===I)return-1;if(X.id===I)return 1;return 0}),N=[];for(let R of w){let X=await OX(R.id,N7,!0),k=process.cwd(),b=[{label:D?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:M7(k,45),path:k},...X.map((BA)=>({label:M7(BA.path,45),hint:zX(BA.lastLaunchedAt),path:BA.path}))],p=await qF(R.id),P=await SF(R.id)||p.find((BA)=>BA.id===C?.id)||p[0],_=P?p.findIndex((BA)=>BA.id===P.id):0,z=AN(R,P),x=await kX(R.id),EA=z.map((BA)=>BA.id),HA=x.filter((BA)=>EA.includes(BA));N.push({client:R,projects:b,providers:p,activeProvIdx:Math.max(_,0),launchOptions:z,lastSelectedOptionIds:HA})}let J=N.some((R)=>R.providers.length>0);return{clients:N,defaultIdx:0,hasProviders:J}}function sX({color:B}){let{stdout:I}=pU(),C=Math.max((I.columns||80)-6,20);return QB.jsxDEV(UA,{marginY:0,children:QB.jsxDEV($,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function _v(B){return B>30?"green":B>10?"yellow":"red"}function Vv({provider:B,zh:I}){if(!B)return QB.jsxDEV($,{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"}},D=C[B.type]??C.custom,w=I?D.zh:D.en,N=B.email??"";if(N.length>0){let[J,R]=N.split("@");if(J&&R)N=J.length>14?`${J.slice(0,12)}\u2026@${R}`:N}return QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{color:D.color,children:[D.icon," ",w]},void 0,!0,void 0,this),N&&QB.jsxDEV($,{dimColor:!0,children:[" \xB7 ",N]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function bv({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return QB.jsxDEV($,{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 R=B.daily??B.primary??B.secondary;if(!R)return null;let X=R.costUsed??0;return QB.jsxDEV($,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",QB.jsxDEV($,{color:"green",children:["$",X.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(J,R,X)=>{if(J&&J>=1440)return`${Math.round(J/1440)}d`;if(J)return`${Math.round(J/60)}h`;return X?`${X}d`:`${R}h`},D=(J)=>Math.max(0,Math.min(100,100-Math.round(J))),w=[],N=(J,R,X)=>{if(w.length)w.push(QB.jsxDEV($,{dimColor:!0,children:" \xB7 "},`sep-${J}`,!1,void 0,this));let k=D(X);w.push(QB.jsxDEV(JE.default.Fragment,{children:[`${R} \u5269 `,QB.jsxDEV($,{color:_v(k),children:[k,"%"]},void 0,!0,void 0,this)]},J,!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(!w.length)return null;return QB.jsxDEV($,{dimColor:!0,children:["\uD83D\uDCB0 ",w]},void 0,!0,void 0,this)}function jv(B,I){let C=[],D=new Set;for(let w of B)if(!w.group)C.push({kind:"flag",opt:w});else if(!D.has(w.group)){D.add(w.group);let N=w.group==="model"?I?"\u6A21\u578B":"Model":w.group;C.push({kind:"group",group:w.group,title:N})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function U7(B,I,C){return B.find((D)=>D.group===C&&I.has(D.id))}function iv({clients:B,defaultIdx:I,hasProviders:C,onResult:D}){let[w,N]=JE.useState(I),[J,R]=JE.useState("projects"),[X,k]=JE.useState(0),[b,p]=JE.useState(0),[y,P]=JE.useState(()=>B[I]?.activeProvIdx||0),[_,z]=JE.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[x,EA]=JE.useState(""),[HA,BA]=JE.useState(null),[WA,MA]=JE.useState(!1),[JA,XA]=JE.useState(0),OA=B[w],yA=OA.projects,FB=OA.providers,dA=lX[OA.client.id]||nX,IB=_0()==="zh",BB=FB[y],dB=JE.default.useMemo(()=>AN(OA.client,BB),[OA.client.id,BB?.id,BB?.type]),cA=JE.default.useMemo(()=>jv(dB,IB),[dB,IB]),rA=BB?.name||(IB?"\u672A\u914D\u7F6E":"N/A"),[wA,mA]=JE.useState(null);return JE.useEffect(()=>{if(!BB){mA(null);return}let uA=!1;return cN(BB).then((AA)=>{if(!uA)mA(AA)}),()=>{uA=!0}},[BB?.id,BB?.type]),JE.useEffect(()=>{k(0),p(0),R("projects"),P(B[w]?.activeProvIdx||0),BA(null),MA(!1),z(new Set(B[w]?.lastSelectedOptionIds??[]))},[w]),JE.useEffect(()=>{let uA=new Set(dB.map((lA)=>lA.id)),AA=new Set(dB.filter((lA)=>lA.group==="model").map((lA)=>lA.id)),hA=BB?.model?`model-${BB.model}`:void 0;z((lA)=>{let c=new Set,j=!1,o=!1;for(let KA of lA)if(uA.has(KA)){if(c.add(KA),AA.has(KA))o=!0}else j=!0;if(!o&&hA&&AA.has(hA))c.add(hA),j=!0;return j?c:lA})},[dB,BB?.model]),LE(JE.useCallback((uA,AA)=>{if(WA){let lA=FB.length+1;if(AA.escape||uA==="q"){MA(!1);return}if(AA.upArrow){XA((c)=>c>0?c-1:lA-1);return}if(AA.downArrow){XA((c)=>c<lA-1?c+1:0);return}if(AA.return)if(JA<FB.length){let c=FB[JA];P(JA),(async()=>{if(await jN(OA.client.id,c.id),OA.client.setupConfigFiles)try{await OA.client.setupConfigFiles(jC(c))}catch(j){EA(IB?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>EA(""),2500);return}OA.activeProvIdx=JA,EA(IB?`\u2713 \u5DF2\u7ED1\u5B9A ${c.name}`:`\u2713 Bound ${c.name}`),setTimeout(()=>EA(""),2000)})(),MA(!1)}else MA(!1),D({type:"providers"});return}if(HA){let lA=dB.filter((j)=>j.group===HA),c=lA.length+1;if(AA.escape||uA==="q"){BA(null);return}if(AA.upArrow){XA((j)=>j>0?j-1:c-1);return}if(AA.downArrow){XA((j)=>j<c-1?j+1:0);return}if(AA.return){if(JA===0)z((j)=>{let o=new Set(j);for(let KA of lA)o.delete(KA.id);return o});else{let j=lA[JA-1];z((o)=>{let KA=new Set(o);for(let VA of lA)KA.delete(VA.id);return KA.add(j.id),KA})}BA(null)}return}if(uA==="q"){D({type:"exit"});return}if(uA==="a"){D({type:"agent"});return}if(uA==="s"){D({type:"stats"});return}if(uA==="c"){D({type:"config"});return}if(uA==="l"){D({type:"language"});return}if(uA==="p"){D({type:"providers"});return}let hA=parseInt(uA);if(hA>=1&&hA<=B.length){N(hA-1);return}if(AA.leftArrow){N((lA)=>lA>0?lA-1:B.length-1);return}if(AA.rightArrow){N((lA)=>lA<B.length-1?lA+1:0);return}if(J==="projects"){if(AA.downArrow){if(X<yA.length-1)k((lA)=>lA+1);else if(cA.length>0)R("options"),p(0);return}if(AA.upArrow){if(X>0)k((lA)=>lA-1);return}}if(J==="options"){if(AA.downArrow){if(b<cA.length-1)p((lA)=>lA+1);return}if(AA.upArrow){if(b>0)p((lA)=>lA-1);else R("projects"),k(yA.length-1);return}}if(uA===" "&&J==="options"&&cA.length>0){let lA=cA[b];if(lA.kind==="flag")z((c)=>{let j=new Set(c);if(j.has(lA.opt.id))j.delete(lA.opt.id);else j.add(lA.opt.id);return j});else if(lA.kind==="group"){let c=U7(dB,_,lA.group),j=dB.filter((KA)=>KA.group===lA.group),o=c?j.findIndex((KA)=>KA.id===c.id)+1:0;XA(Math.max(0,o)),BA(lA.group)}else XA(y),MA(!0);return}if(AA.return){if(J==="options"&&cA.length>0){let KA=cA[b];if(KA.kind==="group"){let VA=U7(dB,_,KA.group),EB=dB.filter((jA)=>jA.group===KA.group),YA=VA?EB.findIndex((jA)=>jA.id===VA.id)+1:0;XA(Math.max(0,YA)),BA(KA.group);return}if(KA.kind==="provider"){XA(y),MA(!0);return}}let lA=yA[X],c=[],j={},o=[];for(let KA of dB)if(_.has(KA.id)){if(c.push(...KA.args),KA.envVars)Object.assign(j,KA.envVars);o.push(KA.id)}D({type:"launch",clientId:OA.client.id,projectPath:lA.path,args:c,envVars:j,selectedOptionIds:o})}},[J,w,X,b,y,FB,BB,OA,yA,dB,cA,_,B,D,IB,HA,WA,JA])),QB.jsxDEV(UA,{flexDirection:"column",paddingX:0,paddingY:1,children:[QB.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:dA.color,paddingX:2,paddingY:1,children:[QB.jsxDEV(UA,{justifyContent:"space-between",children:[QB.jsxDEV(UA,{gap:1,children:[QB.jsxDEV($,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:["v",hv]},void 0,!0,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV(Vv,{provider:BB,zh:IB},void 0,!1,void 0,this)]},void 0,!0,void 0,this),QB.jsxDEV(UA,{children:[x&&QB.jsxDEV($,{color:"green",children:x},void 0,!1,void 0,this),!x&&wA&&QB.jsxDEV(bv,{quota:wA,zh:IB},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&QB.jsxDEV(UA,{marginTop:1,justifyContent:"center",gap:1,children:[QB.jsxDEV($,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\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),QB.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:[QB.jsxDEV($,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((uA,AA)=>{let hA=lX[uA.client.id]||nX;return AA===w?QB.jsxDEV(UA,{borderStyle:"bold",borderColor:hA.color,paddingX:1,children:QB.jsxDEV($,{color:hA.color,bold:!0,children:[hA.icon," ",uA.client.name]},void 0,!0,void 0,this)},uA.client.id,!1,void 0,this):QB.jsxDEV(UA,{borderStyle:"single",borderColor:"gray",paddingX:1,children:QB.jsxDEV($,{dimColor:!0,children:[hA.icon," ",uA.client.name]},void 0,!0,void 0,this)},uA.client.id,!1,void 0,this)}),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),QB.jsxDEV(sX,{color:dA.color},void 0,!1,void 0,this),WA?QB.jsxDEV(oX,{provs:FB,provIdx:y,pickerIdx:JA,color:dA.color,zh:IB},void 0,!1,void 0,this):HA?QB.jsxDEV(cX,{group:HA,options:dB,enabled:_,pickerIdx:JA,color:dA.color,zh:IB},void 0,!1,void 0,this):QB.jsxDEV(QB.Fragment,{children:[yA.map((uA,AA)=>{let hA=J==="projects"&&AA===X;return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:uA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),uA.hint?QB.jsxDEV($,{dimColor:!0,children:uA.hint},void 0,!1,void 0,this):null]},AA,!0,void 0,this)}),cA.length>0&&QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV(sX,{color:dA.color},void 0,!1,void 0,this),cA.map((uA,AA)=>{let hA=J==="options"&&AA===b;if(uA.kind==="flag"){let lA=uA.opt,c=_.has(lA.id);return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{color:c?dA.color:void 0,bold:c,children:c?"\u25C9":"\u25CB"},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:lA.label[IB?"zh":"en"]||lA.label.en},void 0,!1,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:lA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:lA.description[IB?"zh":"en"]||lA.description.en},void 0,!1,void 0,this)]},lA.id,!0,void 0,this)}if(uA.kind==="group"){let lA=U7(dB,_,uA.group),c=lA?lA.shortLabel:IB?"\u9ED8\u8BA4":"Default";return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:[uA.title,":"]},void 0,!0,void 0,this),QB.jsxDEV($,{color:lA?dA.color:void 0,children:c},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:IB?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${uA.group}`,!0,void 0,this)}return QB.jsxDEV(UA,{paddingLeft:1,children:[QB.jsxDEV(UA,{flexGrow:1,gap:1,children:[QB.jsxDEV($,{color:hA?dA.color:void 0,bold:hA,children:hA?"\u25B8":" "},void 0,!1,void 0,this),QB.jsxDEV($,{bold:hA,color:hA?dA.color:void 0,children:[uA.title,":"]},void 0,!0,void 0,this),QB.jsxDEV($,{color:BB?dA.color:"yellow",children:BB?rA:IB?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),QB.jsxDEV($,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hA&&QB.jsxDEV($,{dimColor:!0,children:IB?"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),QB.jsxDEV(UA,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:J==="options"?QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):QB.jsxDEV(QB.Fragment,{children:[QB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),QB.jsxDEV($,{dimColor:!0,children:IB?"\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 rX({onResult:B}){let[I,C]=JE.useState(null);if(JE.useEffect(()=>{Pv().then(C)},[]),!I)return QB.jsxDEV($,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return QB.jsxDEV(iv,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,onResult:B},void 0,!1,void 0,this)}rE();$D();await uC();var aI=ZB(hQ(),1);fw();fw();W2();fw();await uC();var MB=ZB(yI(),1),K2={"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"}},R7={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},lN=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function tX({provider:B,focused:I,bound:C,isDefault:D,zh:w}){let N=K2[B.type]||K2.custom,J=w?jg[B.type]?.zh:jg[B.type]?.en;return MB.jsxDEV(UA,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?N.color:C?N.color:"gray",paddingX:2,paddingY:0,children:[MB.jsxDEV(UA,{justifyContent:"space-between",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:I||C,color:I?N.color:void 0,children:B.name},void 0,!1,void 0,this),D&&MB.jsxDEV($,{color:"yellow",children:["\u2605 ",w?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&MB.jsxDEV($,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{gap:1,children:C?MB.jsxDEV($,{color:N.color,bold:!0,children:["\u25CF ",w?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):MB.jsxDEV($,{dimColor:!0,children:["\u25CB ",w?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:J},void 0,!1,void 0,this),B.model&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&MB.jsxDEV($,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&MB.jsxDEV($,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&MB.jsxDEV($,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&MB.jsxDEV($,{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&&MB.jsxDEV(UA,{marginTop:0,children:MB.jsxDEV($,{color:N.color,dimColor:!0,children:["Enter ",w?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",w?"\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 eX({screen:B,addType:I,addKey:C,addUrl:D,addModel:w,addCtx:N,rowIdx:J,zh:R}){let X=K2[I]||K2.custom,k=R?jg[I]?.zh:jg[I]?.en,b=B==="add-model"?EN(I):void 0;if(b)return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:X.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,marginBottom:1,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:X.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:X.color,children:k},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:["\u2014 ",R?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),b.map((z,x)=>{let EA=J===x;return MB.jsxDEV(UA,{paddingLeft:1,gap:1,children:[MB.jsxDEV($,{color:EA?X.color:void 0,bold:EA,children:EA?"\u25B8":" "},void 0,!1,void 0,this),MB.jsxDEV($,{bold:EA,color:EA?X.color:void 0,children:z},void 0,!1,void 0,this)]},z,!0,void 0,this)})]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u9009\u62E9":"select"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let p=B==="add-key"?R?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?R?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":R?"\u6A21\u578B":"Model",y=B==="add-key"?C:B==="add-url"?D:B==="add-ctx"?N??"":w,P=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?R?"\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"?G4(I)||(R?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,_=B==="add-url"?R?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?R?"\u4FDD\u5B58":"save":B==="add-model"?R?"\u4FDD\u5B58":"save":R?"\u786E\u8BA4":"confirm";return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:X.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,marginBottom:1,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:X.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:X.color,children:k},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:["\u2014 ",p]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&MB.jsxDEV($,{dimColor:!0,children:[" ",R?"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),P&&MB.jsxDEV($,{dimColor:!0,children:[" ",R?"\u9ED8\u8BA4":"Default",": ",P]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:P?1:0,children:[MB.jsxDEV($,{color:X.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),MB.jsxDEV($,{children:y||P||""},void 0,!1,void 0,this),MB.jsxDEV($,{color:X.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:_},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:R?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Aq({provider:B,defaultId:I,detailActions:C,detailIdx:D,zh:w}){let N=K2[B.type]||K2.custom,J=w?jg[B.type]?.zh:jg[B.type]?.en;return MB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[MB.jsxDEV(UA,{borderStyle:"bold",borderColor:N.color,paddingX:3,paddingY:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{color:N.color,bold:!0,children:N.icon},void 0,!1,void 0,this),MB.jsxDEV($,{bold:!0,color:N.color,children:B.name},void 0,!1,void 0,this),B.id===I&&MB.jsxDEV($,{color:"yellow",children:[" \u2605 ",w?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),MB.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:[MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:[w?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),MB.jsxDEV($,{children:J},void 0,!1,void 0,this),B.builtin&&MB.jsxDEV($,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:[w?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),MB.jsxDEV($,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),MB.jsxDEV($,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),MB.jsxDEV($,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&MB.jsxDEV(UA,{gap:1,children:[MB.jsxDEV($,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),MB.jsxDEV($,{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),MB.jsxDEV(UA,{gap:1,marginTop:1,children:C.map((R,X)=>{let k=R==="default"?`\u2B50 ${w?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:R==="rekey"?`\uD83D\uDD11 ${w?"\u4FEE\u6539 Key":"Change Key"}`:R==="relogin"?`\uD83D\uDD04 ${w?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:R==="delete"?`\uD83D\uDDD1\uFE0F ${w?"\u5220\u9664":"Delete"}`:`\u2190 ${w?"\u8FD4\u56DE":"Back"}`,b=X===D;return MB.jsxDEV(UA,{borderStyle:b?"bold":"round",borderColor:b?"cyan":"gray",paddingX:2,children:MB.jsxDEV($,{bold:b,color:b?"cyan":void 0,dimColor:!b,children:k},void 0,!1,void 0,this)},R,!1,void 0,this)})},void 0,!1,void 0,this),MB.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[MB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u9009\u62E9":"select"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),MB.jsxDEV($,{dimColor:!0,children:w?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var gQ=ZB(yI(),1);function Bq({onDone:B}){let[I,C]=aI.useState("list"),[D,w]=aI.useState([]),[N,J]=aI.useState(),[R,X]=aI.useState({}),[k,b]=aI.useState(0),[p,y]=aI.useState(0),[P,_]=aI.useState(0),[z,x]=aI.useState(""),[EA,HA]=aI.useState(""),[BA,WA]=aI.useState("tako"),[MA,JA]=aI.useState(""),[XA,OA]=aI.useState(""),[yA,FB]=aI.useState(""),[dA,IB]=aI.useState(""),BB=_0()==="zh",dB=x1(),cA=dB[k],rA=R7[cA?.id]?.color||"white",wA=cA?D.filter((YA)=>u4(YA,cA.id)):[],mA=R[cA?.id]||N,uA=wA.length+4,AA=D.find((YA)=>YA.id===z),hA=AA?.type==="claude-subscription"||AA?.type==="codex-subscription",lA=AA?[...AA.id!==N?["default"]:[],...hA?["relogin"]:[],...AA.builtin?["rekey"]:["delete"],"back"]:["back"],c=aI.useCallback(async()=>{let YA=await bC(),jA=await Hg();w(YA),J(jA?.id);let qA={};for(let xA of x1()){let HB=await SF(xA.id);qA[xA.id]=HB?.id}X(qA)},[]);aI.useEffect(()=>{c()},[c]),aI.useEffect(()=>{y(0)},[k]),aI.useEffect(()=>{if(EA){let YA=setTimeout(()=>HA(""),3000);return()=>clearTimeout(YA)}},[EA]);let j=aI.useCallback(async()=>{if(z&&D.find((AB)=>AB.id===z)?.builtin){await C8(z,{apiKey:MA}),HA(BB?"Key \u5DF2\u66F4\u65B0":"Key updated"),await c(),C("list"),y(0);return}let YA=jg[BA]?.[BB?"zh":"en"]||BA,jA=XA||eL(BA),qA=yA||G4(BA),xA=dA?parseInt(dA,10):NaN,HB=Number.isFinite(xA)&&xA>0?xA:void 0;await E8({name:YA,type:BA,apiKey:MA,baseUrl:jA,model:qA,modelContextWindow:HB,supportedClients:ug(BA)}),u0("provider_added",{provider_type:BA,method:"manual"}),yF(),vD(),HA(BB?"\u5DF2\u6DFB\u52A0":"Added"),IB(""),await c(),C("list"),y(0)},[BA,MA,XA,yA,dA,BB,c,z,D]),o=aI.useCallback(async()=>{C("scanning");let YA=await iN(),jA=await xN(YA);if(jA>0)yF(),vD();HA(BB?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${jA} \u4E2A`:`Scan done, ${jA} added`),await c(),C("list"),y(0)},[c,BB]),[KA,VA]=aI.useState("claude"),EB=aI.useCallback(async(YA)=>{VA(YA),C("logging-in");let jA=YA==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(jA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:xA}=await Promise.resolve().then(() => (_M(),aX));if(YA==="claude")try{let HB=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),AB=await new Response(HB.stdout).text();await HB.exited;let VB=JSON.parse(AB.trim());if(VB.loggedIn&&VB.authMethod==="claude.ai"){let l=VB.email||"",zA=VB.subscriptionType||"pro",nA=`Claude ${zA.charAt(0).toUpperCase()+zA.slice(1)}${l?` (${l})`:""}`,{readClaudeAuth:bB}=await Promise.resolve().then(() => ($M(),zM)),QQ=await bB(),DQ=QQ.credentials||QQ.oauthAccount?{credentials:QQ.credentials,oauthAccount:QQ.oauthAccount}:void 0,PQ=D.find((PI)=>PI.type==="claude-subscription"&&PI.email===l);if(!PQ)await E8({name:nA,type:"claude-subscription",email:l,subscriptionType:zA,supportedClients:ug("claude-subscription"),authData:DQ}),HA(BB?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await C8(PQ.id,{authData:DQ}),xA(PQ.id,"claude-subscription"),HA(BB?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else HA(BB?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{HA(BB?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let HB=await import("fs/promises"),{homedir:AB}=await import("os"),{join:VB}=await import("path"),l=JSON.parse(await HB.readFile(VB(AB(),".codex","auth.json"),"utf-8"));if(l.auth_mode==="chatgpt"&&l.tokens?.access_token){let zA="";try{zA=JSON.parse(atob(l.tokens.id_token.split(".")[1])).email||""}catch{}let nA=D.find((bB)=>bB.type==="codex-subscription"&&bB.email===zA);if(!nA)await E8({name:zA?`Codex Plus (${zA})`:"Codex Subscription",type:"codex-subscription",email:zA||void 0,supportedClients:ug("codex-subscription"),authData:l}),HA(BB?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await C8(nA.id,{authData:l}),xA(nA.id,"codex-subscription"),HA(BB?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else HA(BB?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{HA(BB?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await c(),C("list"),y(0)},[D,BB,c]);if(LE(aI.useCallback((YA,jA)=>{if(I==="list"){if(jA.escape||YA==="q"){B();return}if(jA.leftArrow){b((xA)=>xA>0?xA-1:dB.length-1);return}if(jA.rightArrow){b((xA)=>xA<dB.length-1?xA+1:0);return}let qA=parseInt(YA);if(qA>=1&&qA<=dB.length){b(qA-1);return}if(jA.upArrow){y((xA)=>xA>0?xA-1:uA-1);return}if(jA.downArrow){y((xA)=>xA<uA-1?xA+1:0);return}if(jA.return){if(p<wA.length){let xA=wA[p];jN(cA.id,xA.id).then(()=>{B()})}else if(p===wA.length)C("add-type"),y(0);else if(p===wA.length+1)o();else if(p===wA.length+2)B("client-versions");else B();return}if((YA==="d"||YA==="e")&&p<wA.length)x(wA[p].id),C("detail"),_(0);return}if(I==="detail"){if(jA.leftArrow){_((qA)=>qA>0?qA-1:lA.length-1);return}if(jA.rightArrow){_((qA)=>qA<lA.length-1?qA+1:0);return}if(jA.escape){C("list"),y(0);return}if(jA.return){let qA=lA[P];if(qA==="back"){C("list"),y(0);return}if(qA==="default")sU(z).then(()=>{HA(BB?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),c(),C("list"),y(0)});if(qA==="delete")nU(z).then(()=>{HA(BB?"\u5DF2\u5220\u9664":"Deleted"),c(),C("list"),y(0)});if(qA==="rekey")WA(AA?.type||"tako"),JA(""),C("add-key"),y(0);if(qA==="relogin"){let xA=AA?.type==="codex-subscription"?"codex":"claude";C("list"),y(0),EB(xA)}}return}if(I==="add-type"){if(jA.upArrow){y((qA)=>qA>0?qA-1:lN.length-1);return}if(jA.downArrow){y((qA)=>qA<lN.length-1?qA+1:0);return}if(jA.escape){C("list"),y(0);return}if(jA.return){let qA=lN[p];if(WA(qA),qA==="claude-subscription"){EB("claude");return}if(qA==="codex-subscription"){EB("codex");return}JA(""),OA(""),FB(G4(qA)||""),C("add-key"),y(0)}return}if(I==="add-key"){if(jA.escape){C("list"),y(0);return}if(jA.return&&MA){if(BA==="custom")C("add-url");else if(BA==="deepseek"||BA==="anthropic"||BA==="tako"||BA==="xiaomi")C("add-model"),y(0);else j();return}if(jA.backspace||jA.delete){JA((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl)JA((qA)=>qA+YA);return}if(I==="add-url"){if(jA.escape){C("list"),y(0);return}if(jA.return){C("add-model"),y(0);return}if(jA.backspace||jA.delete){OA((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl)OA((qA)=>qA+YA);return}if(I==="add-model"){let qA=EN(BA);if(jA.escape){C("list"),y(0);return}if(qA){if(jA.upArrow){y((xA)=>xA>0?xA-1:qA.length-1);return}if(jA.downArrow){y((xA)=>xA<qA.length-1?xA+1:0);return}if(jA.return){FB(qA[p]),setTimeout(()=>j(),0);return}}else{if(jA.return){let xA=yA.trim();if(xA&&VC.some((HB)=>HB.id===xA))j();else C("add-ctx");return}if(jA.backspace||jA.delete){FB((xA)=>xA.slice(0,-1));return}if(YA&&!jA.ctrl)FB((xA)=>xA+YA)}return}if(I==="add-ctx"){if(jA.escape){C("list"),y(0);return}if(jA.return){j();return}if(jA.backspace||jA.delete){IB((qA)=>qA.slice(0,-1));return}if(YA&&!jA.ctrl&&/^[0-9]$/.test(YA))IB((qA)=>qA+YA);return}},[I,p,P,wA,uA,dB.length,cA,z,AA,lA,BA,MA,XA,yA,dA,B,o,EB,j,c,BB])),I==="scanning"||I==="logging-in"){let YA=I==="logging-in"?K2[KA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},jA=I==="scanning"?BB?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":BB?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:gQ.jsxDEV(UA,{borderStyle:"round",borderColor:YA.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[gQ.jsxDEV($,{color:YA.color,bold:!0,children:[YA.icon," ",jA]},void 0,!0,void 0,this),I==="logging-in"&&gQ.jsxDEV($,{dimColor:!0,children:BB?"\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 gQ.jsxDEV(eX,{screen:I,addType:BA,addKey:MA,addUrl:XA,addModel:yA,addCtx:dA,rowIdx:p,zh:BB},void 0,!1,void 0,this);if(I==="add-type")return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[gQ.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:gQ.jsxDEV($,{bold:!0,children:["\u2795 ",BB?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),gQ.jsxDEV(UA,{flexDirection:"column",marginTop:1,gap:0,children:lN.map((YA,jA)=>{let qA=K2[YA]||K2.custom,xA=p===jA,HB=BB?jg[YA]?.zh:jg[YA]?.en,AB=YA==="claude-subscription"||YA==="codex-subscription";return gQ.jsxDEV(UA,{borderStyle:xA?"bold":"round",borderColor:xA?qA.color:"gray",paddingX:2,paddingY:0,children:gQ.jsxDEV(UA,{gap:1,children:[gQ.jsxDEV($,{color:qA.color,bold:!0,children:qA.icon},void 0,!1,void 0,this),gQ.jsxDEV($,{bold:xA,color:xA?qA.color:void 0,children:HB},void 0,!1,void 0,this),AB&&gQ.jsxDEV($,{dimColor:!0,children:["(",BB?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!AB&&gQ.jsxDEV($,{dimColor:!0,children:["(",BB?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},YA,!1,void 0,this)})},void 0,!1,void 0,this),gQ.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&AA)return gQ.jsxDEV(Aq,{provider:AA,defaultId:N,detailActions:lA,detailIdx:P,zh:BB},void 0,!1,void 0,this);return gQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[gQ.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[gQ.jsxDEV($,{bold:!0,children:["\u26A1 ",BB?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),EA&&gQ.jsxDEV($,{color:"green",children:[" \u2713 ",EA]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:[gQ.jsxDEV($,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),dB.map((YA,jA)=>{let qA=R7[YA.id]||{icon:"\u25AA",color:"white"},xA=jA===k;return gQ.jsxDEV(UA,{borderStyle:xA?"bold":"single",borderColor:xA?qA.color:"gray",paddingX:2,children:gQ.jsxDEV($,{color:xA?qA.color:void 0,bold:xA,dimColor:!xA,children:[qA.icon," ",YA.name]},void 0,!0,void 0,this)},YA.id,!1,void 0,this)}),gQ.jsxDEV($,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:rA,paddingX:1,paddingY:1,children:[wA.length===0&&gQ.jsxDEV(UA,{paddingX:2,paddingY:1,justifyContent:"center",children:gQ.jsxDEV($,{dimColor:!0,children:BB?"\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),wA.map((YA,jA)=>gQ.jsxDEV(tX,{provider:YA,focused:p===jA,bound:YA.id===mA,isDefault:YA.id===N,zh:BB},YA.id,!1,void 0,this))]},void 0,!0,void 0,this),gQ.jsxDEV(UA,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:BB?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:BB?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:BB?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:BB?"\u8FD4\u56DE":"Back"}].map((YA)=>{let jA=p===wA.length+YA.offset;return gQ.jsxDEV(UA,{borderStyle:jA?"bold":"round",borderColor:jA?"cyan":"gray",paddingX:2,children:gQ.jsxDEV($,{bold:jA,color:jA?"cyan":void 0,dimColor:!jA,children:[YA.icon," ",YA.label]},void 0,!0,void 0,this)},YA.id,!1,void 0,this)})},void 0,!1,void 0,this),gQ.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u9009\u62E9":"select"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),gQ.jsxDEV($,{dimColor:!0,children:BB?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}rE();await uC();var OF=ZB(hQ(),1);jE();async function Qq(){try{let B=await i1();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${wC}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),w=await(await fetch(`${wC}/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=(w.data||[]).map((J)=>({model:J.model,requests:J.requests,cost:J.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 Iq(B){return B.toLocaleString("en-US")}var iC=ZB(yI(),1);function Eq({onExit:B}){let[I,C]=OF.useState(null),[D,w]=OF.useState(!0),[N,J]=OF.useState(10),R=OF.useCallback(async()=>{w(!0);let k=await Qq();if(k.success&&k.data)C(k.data);w(!1)},[]);OF.useEffect(()=>{R()},[R]),OF.useEffect(()=>{let k=setInterval(()=>{J((b)=>{if(b<=1)return R(),10;return b-1})},1000);return()=>clearInterval(k)},[R]),LE((k,b)=>{if(k==="q"||b.escape)B()});let X=_0()==="zh";return iC.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[iC.jsxDEV($,{bold:!0,children:AQ("stats.title")},void 0,!1,void 0,this),D&&!I?iC.jsxDEV($,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?iC.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[iC.jsxDEV($,{children:AQ("stats.totalRequests",{count:Iq(I.totalRequests)})},void 0,!1,void 0,this),iC.jsxDEV($,{children:AQ("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),iC.jsxDEV($,{children:AQ("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&iC.jsxDEV(UA,{flexDirection:"column",marginTop:1,children:[iC.jsxDEV($,{bold:!0,dimColor:!0,children:X?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((k,b)=>iC.jsxDEV($,{dimColor:!0,children:[b===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",k.model.padEnd(25)," ",String(k.requests).padStart(5)," ",k.cost]},k.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):iC.jsxDEV($,{color:"red",children:X?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),iC.jsxDEV(UA,{marginTop:1,children:iC.jsxDEV($,{dimColor:!0,children:X?`${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)}rE();await uC();var iw=ZB(hQ(),1);jE();rE();W2();$D();fw();function xv(B){return B.startsWith("cr_")&&B.length>10}async function pv(B){try{let C=await(await fetch(`${wC}/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||AQ("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:AQ("auth.networkError")}}}async function Cq(B){if(!xv(B))return u0("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:AQ("auth.invalidFormat")};let I=await pv(B);if(!I.valid)return u0("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await j1({apiKey:B,apiId:I.apiId}),await av(B,I.apiId),u0("api_key_validated",{success:!0}),yF(),vD(),{success:!0}}async function av(B,I){let D=(await bC()).find((w)=>w.type==="tako");if(D)await C8(D.id,{apiKey:B,apiId:I});else await E8({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:wC,apiId:I,supportedClients:ug("tako"),builtin:!0})}W2();var dg=ZB(yI(),1);function gq({isReconfigure:B,onDone:I}){let[C,D]=iw.useState(""),[w,N]=iw.useState("idle"),[J,R]=iw.useState(""),{stdin:X,setRawMode:k}=$4();iw.useEffect(()=>{if(!X)return;k(!0);let P=(_)=>{let z=_.toString();if(z.length>1&&!z.startsWith("\x1B"))D((x)=>x+z.replace(/[\r\n]/g,""))};return X.on("data",P),()=>{X.off("data",P)}},[X,k]);let b=iw.useCallback(async()=>{if(!C||w==="validating")return;N("validating");let P=await Cq(C);if(P.success)N("success"),yF(),vD(),setTimeout(()=>I(!0),500);else N("error"),R(P.error||"Validation failed")},[C,w,I]);LE((P,_)=>{if(_.escape){I(!1);return}if(_.return){b();return}if(_.backspace||_.delete){D((z)=>z.slice(0,-1)),N("idle");return}if(P&&!_.ctrl&&P.length===1)D((z)=>z+P),N("idle")});let p=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,y=_0()==="zh";return dg.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[dg.jsxDEV($,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?AQ("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),dg.jsxDEV(UA,{marginTop:1,children:[dg.jsxDEV($,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),dg.jsxDEV($,{children:p},void 0,!1,void 0,this),w==="idle"&&dg.jsxDEV($,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w==="validating"&&dg.jsxDEV($,{color:"yellow",children:["\u23F3 ",AQ("prompts.validating")]},void 0,!0,void 0,this),w==="success"&&dg.jsxDEV($,{color:"green",children:["\u2713 ",AQ("prompts.keyConfigured")]},void 0,!0,void 0,this),w==="error"&&dg.jsxDEV($,{color:"red",children:["\u2717 ",J]},void 0,!0,void 0,this),dg.jsxDEV(UA,{marginTop:1,children:dg.jsxDEV($,{dimColor:!0,children:["Enter ",y?"\u63D0\u4EA4":"submit"," Esc ",y?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}rE();await uC();var Dq=ZB(hQ(),1),mF=ZB(yI(),1),nN=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function Fq({onDone:B}){let[I,C]=Dq.useState(nN.findIndex((D)=>D.value===_0()));return LE((D,w)=>{if(w.upArrow)C((N)=>N>0?N-1:nN.length-1);if(w.downArrow)C((N)=>N<nN.length-1?N+1:0);if(w.return)oU(nN[I].value),B();if(w.escape)B()}),mF.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[mF.jsxDEV($,{bold:!0,children:["\uD83C\uDF10 ",AQ("menu.changeLanguage")]},void 0,!0,void 0,this),nN.map((D,w)=>mF.jsxDEV(UA,{gap:1,marginTop:w===0?1:0,children:[mF.jsxDEV($,{color:"cyan",bold:w===I,children:w===I?"\u25B8":" "},void 0,!1,void 0,this),mF.jsxDEV($,{bold:w===I,children:D.label},void 0,!1,void 0,this),D.value===_0()&&mF.jsxDEV($,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},D.value,!0,void 0,this)),mF.jsxDEV(UA,{marginTop:1,children:mF.jsxDEV($,{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)}jE();jE();rE();await uC();var bM=ZB(hQ(),1),XE=ZB(yI(),1);import{join as dv}from"path";var Gq=dv(w0,".key-prompt.json");async function ov(){try{return await Bun.file(Gq).json()}catch{return{}}}async function wq(B){await Bun.write(Gq,JSON.stringify(B))}async function uq(){if(await hL())return!1;let B=await ov();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function Nq(B){if(B==="never")await wq({never:!0});else{let I=new Date().toISOString().slice(0,10);await wq({dismissed:I})}}var VM=[{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 Hq({onDone:B}){let[I,C]=bM.useState(0),D=_0()==="zh";return LE(bM.useCallback((w,N)=>{if(N.upArrow){C((J)=>J>0?J-1:VM.length-1);return}if(N.downArrow){C((J)=>J<VM.length-1?J+1:0);return}if(N.escape){B("skip");return}if(N.return){B(VM[I].id);return}},[I,B])),XE.jsxDEV(UA,{flexDirection:"column",paddingX:0,paddingY:1,children:[XE.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[XE.jsxDEV(UA,{gap:1,children:[XE.jsxDEV($,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),XE.jsxDEV($,{bold:!0,children:D?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XE.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:[XE.jsxDEV($,{dimColor:!0,children:D?"\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),XE.jsxDEV($,{dimColor:!0,children:D?"\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),XE.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:VM.map((w,N)=>{let J=N===I;return XE.jsxDEV(UA,{paddingLeft:1,gap:1,children:[XE.jsxDEV($,{color:J?w.color||"white":void 0,bold:J,children:J?"\u25B8":" "},void 0,!1,void 0,this),XE.jsxDEV($,{bold:J,color:J?w.color||"white":void 0,children:D?w.label.zh:w.label.en},void 0,!1,void 0,this),J&&XE.jsxDEV($,{dimColor:!0,children:D?w.hint.zh:w.hint.en},void 0,!1,void 0,this)]},w.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XE.jsxDEV(UA,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[XE.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u9009\u62E9":"select"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),XE.jsxDEV($,{dimColor:!0,children:D?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}await uC();var xC=ZB(hQ(),1);_C();jE();f4();import{join as jM}from"path";async function iM(B){let C=`${await Mg()}/${encodeURIComponent(B).replace("%40","@")}`,D=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!D.ok)throw Error(`registry http ${D.status}`);let w=await D.json(),N=Object.keys(w.versions??{});if(!N.length)throw Error("no versions found");let J=w.time??{},R=N.map((X)=>({version:X,publishedAt:J[X],isCurrent:!1}));return R.sort((X,k)=>{let b=X.publishedAt?Date.parse(X.publishedAt):0;return(k.publishedAt?Date.parse(k.publishedAt):0)-b}),R}async function xM(B,I){let C=await import("fs/promises"),D=WF(B.id);await C.mkdir(D,{recursive:!0});let w=jM(D,"bun.lock"),N=jM(D,"node_modules");await C.rm(w,{force:!0}).catch(()=>{}),await C.rm(N,{recursive:!0,force:!0}).catch(()=>{});let J=jM(D,"package.json");await Bun.write(J,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let R=await Mg(),{detectRegion:X}=await Promise.resolve().then(() => (f4(),DX)),k=await X(),{log:b}=await Promise.resolve().then(() => (YF(),rR));b.info(`\u7F51\u7EDC\u73AF\u5883: ${k==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${R}`);let p=Bun.spawn([P0,"add",`${B.package}@${I}`],{cwd:D,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:R}});if(await p.exited,p.exitCode!==0){let P=await new Response(p.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${P.slice(0,500).trim()}`)}let y=await vQ();await j1({installedClients:{...y.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function pM(B){let I=WF(B.id),C=jM(I,"node_modules",B.package,"package.json");try{let w=Bun.file(C);if(await w.exists()){let N=await w.json();if(N.version)return N.version}}catch{}return(await vQ()).installedClients[B.id]?.version??null}rE();var GI=ZB(yI(),1),W7=12,Mq={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function Lq({onDone:B}){let I=x1(),C=_0()==="zh",[D,w]=xC.useState(0),[N,J]=xC.useState(0),[R,X]=xC.useState(0),[k,b]=xC.useState({}),[p,y]=xC.useState(null),[P,_]=xC.useState(""),z=I[D],x=xC.useCallback(async(JA)=>{b((OA)=>({...OA,[JA]:{loading:!0,versions:[],current:null}}));let XA=I.find((OA)=>OA.id===JA);if(!XA)return;try{let[OA,yA]=await Promise.all([iM(XA.package),pM(XA)]),FB=OA.map((dA)=>({...dA,isCurrent:dA.version===yA}));b((dA)=>({...dA,[JA]:{loading:!1,versions:FB,current:yA}}))}catch(OA){b((yA)=>({...yA,[JA]:{loading:!1,error:OA.message,versions:[],current:null}}))}},[I]);xC.useEffect(()=>{if(!z)return;if(!k[z.id])x(z.id)},[D,z?.id]),xC.useEffect(()=>{J(0),X(0)},[D]),xC.useEffect(()=>{if(!P)return;let JA=setTimeout(()=>_(""),3000);return()=>clearTimeout(JA)},[P]);let EA=z?k[z.id]:void 0,HA=EA?.versions??[],BA=xC.useCallback(async(JA)=>{if(!z||p)return;y(JA);try{await xM(z,JA),_(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${JA}`:`\u2713 Switched to ${JA}`),await x(z.id)}catch(XA){_(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${XA.message}`:`\u2717 Install failed: ${XA.message}`)}finally{y(null)}},[z,p,x,C]);LE((JA,XA)=>{if(p)return;if(XA.escape||JA==="q"){B();return}if(XA.leftArrow){w((yA)=>yA>0?yA-1:I.length-1);return}if(XA.rightArrow){w((yA)=>yA<I.length-1?yA+1:0);return}if(JA==="r"){if(z)x(z.id);return}if(!HA.length)return;let OA=HA.length-1;if(XA.upArrow){J((yA)=>{let FB=Math.max(0,yA-1);if(FB<R)X(FB);return FB});return}if(XA.downArrow){J((yA)=>{let FB=Math.min(OA,yA+1);if(FB>=R+W7)X(FB-W7+1);return FB});return}if(XA.return){let yA=HA[N];if(yA&&!yA.isCurrent)BA(yA.version)}});let WA=Mq[z?.id]?.color||"white",MA=HA.slice(R,R+W7);return GI.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[GI.jsxDEV(UA,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[GI.jsxDEV($,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),P&&GI.jsxDEV($,{color:P.startsWith("\u2713")?"green":"red",children:[" ",P]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GI.jsxDEV(UA,{marginTop:1,gap:1,justifyContent:"center",children:I.map((JA,XA)=>{let OA=Mq[JA.id]||{icon:"\u25AA",color:"white"},yA=XA===D;return GI.jsxDEV(UA,{borderStyle:yA?"bold":"single",borderColor:yA?OA.color:"gray",paddingX:2,children:GI.jsxDEV($,{bold:yA,color:yA?OA.color:void 0,dimColor:!yA,children:[OA.icon," ",JA.name]},void 0,!0,void 0,this)},JA.id,!1,void 0,this)})},void 0,!1,void 0,this),GI.jsxDEV(UA,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:WA,paddingX:2,paddingY:1,children:!EA||EA.loading?GI.jsxDEV($,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):EA.error?GI.jsxDEV($,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",EA.error]},void 0,!0,void 0,this):HA.length===0?GI.jsxDEV($,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):GI.jsxDEV(UA,{flexDirection:"column",children:[GI.jsxDEV($,{dimColor:!0,children:[C?`\u5171 ${HA.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${HA.length} versions, current: `,GI.jsxDEV($,{color:WA,children:EA.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GI.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:MA.map((JA,XA)=>{let yA=R+XA===N,FB=JA.publishedAt?JA.publishedAt.slice(0,10):"",dA=JA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",IB=p===JA.version,BB=yA?WA:JA.isCurrent?"green":void 0;return GI.jsxDEV(UA,{paddingLeft:1,children:GI.jsxDEV($,{color:BB,bold:yA,dimColor:!yA&&!JA.isCurrent,children:[yA?"\u25B6 ":" ",JA.version.padEnd(16),FB.padEnd(14),dA,IB?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},JA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),GI.jsxDEV(UA,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GI.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GI.jsxDEV($,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GI.jsxDEV($,{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)}rE();await I4([uC(),Q9()]);var N0=ZB(hQ(),1);rE();D8();await I4([uC(),Q9()]);var V0=ZB(hQ(),1),rQ=ZB(yI(),1),bq=300,jq=200;function Hf(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 iq({sid:B,onBack:I}){let C=ag()==="zh",[D,w]=V0.useState(null),[N,J]=V0.useState([]),[R,X]=V0.useState(""),[k,b]=V0.useState("idle"),[p,y]=V0.useState(null),[P,_]=V0.useState([]),z=V0.useRef(0),x=V0.useCallback(async()=>{let WA=await b4(B,jq);if(!WA)return;w(WA.meta),J(WA.log);try{let JA=await(await import("fs/promises")).stat(n0(B));z.current=JA.size}catch{z.current=0}},[B]);V0.useEffect(()=>{x()},[x]),V0.useEffect(()=>{let WA=!1,MA=null,JA=async()=>{if(WA)return;try{let XA=await import("fs/promises"),OA=await XA.stat(n0(B));if(OA.size>z.current){let yA=await XA.open(n0(B),"r"),FB=Buffer.alloc(OA.size-z.current);await yA.read(FB,0,FB.length,z.current),await yA.close(),z.current=OA.size;let dA=[];for(let IB of FB.toString("utf-8").split(`
|
|
826
826
|
`)){if(!IB.trim())continue;try{dA.push(JSON.parse(IB))}catch{}}if(dA.length)J((IB)=>[...IB,...dA].slice(-jq))}if(Math.random()<0.1){let yA=await b4(B,0);if(yA)w(yA.meta)}_(await eN(B))}catch{}MA=setTimeout(JA,bq)};return MA=setTimeout(JA,bq),()=>{if(WA=!0,MA)clearTimeout(MA)}},[B]);let EA=V0.useCallback(async()=>{if(k!=="idle"||!R.trim())return;let WA=R;X(""),y(null),b("sending");try{await tM(B,WA)}catch(MA){y(MA instanceof Error?MA.message:String(MA))}finally{b("idle");let MA=await b4(B,0);if(MA)w(MA.meta)}},[B,R,k]),HA=V0.useCallback(async()=>{if(k!=="sending")return I();b("cancelling"),await eM(B).catch(()=>{})},[k,B,I]),BA=V0.useCallback(async(WA)=>{let MA=P[0];if(!MA)return;await dM(B,MA.approvalId,{decision:WA?"allow":"deny",by:"tui",decidedAt:Date.now()}),_((JA)=>JA.filter((XA)=>XA.approvalId!==MA.approvalId))},[P,B]);if(LE((WA,MA)=>{if(MA.ctrl&&WA==="y"){BA(!0);return}if(MA.ctrl&&WA==="n"){BA(!1);return}if(MA.escape){HA();return}if(MA.ctrl&&WA==="c"){HA();return}if(MA.ctrl&&WA==="d"){I();return}if(MA.return){EA();return}if(MA.backspace||MA.delete){X((JA)=>JA.slice(0,-1));return}if(R.length===0&&WA==="q"){I();return}if(WA&&!MA.ctrl&&WA.length===1)X((JA)=>JA+WA)}),!D)return rQ.jsxDEV(UA,{paddingX:2,paddingY:1,children:rQ.jsxDEV($,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return rQ.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[rQ.jsxDEV(UA,{children:[rQ.jsxDEV($,{bold:!0,children:"Session "},void 0,!1,void 0,this),rQ.jsxDEV($,{color:"cyan",children:D.sid.slice(0,8)},void 0,!1,void 0,this),rQ.jsxDEV($,{children:" "},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,children:D.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rQ.jsxDEV(UA,{children:rQ.jsxDEV($,{dimColor:!0,children:[D.backend," \xB7 ",D.model??"-"," \xB7 status=",D.status," \xB7 turns=",D.turnCount]},void 0,!0,void 0,this)},void 0,!1,void 0,this),rQ.jsxDEV(UA,{children:rQ.jsxDEV($,{dimColor:!0,children:[C?"\u5DE5\u4F5C\u76EE\u5F55\uFF1A":"cwd: ",D.workdir]},void 0,!0,void 0,this)},void 0,!1,void 0,this),P.length>0&&rQ.jsxDEV(UA,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:1,children:[rQ.jsxDEV($,{color:"magenta",bold:!0,children:["\u26A0 ",P.length," ",C?"\u4E2A\u5F85\u5BA1\u6279":"pending"," \u2014 ",rQ.jsxDEV($,{bold:!0,children:"Ctrl-Y"},void 0,!1,void 0,this)," ",C?"\u6279\u51C6":"allow"," / ",rQ.jsxDEV($,{bold:!0,children:"Ctrl-N"},void 0,!1,void 0,this)," ",C?"\u62D2\u7EDD":"deny"]},void 0,!0,void 0,this),P.slice(0,3).map((WA,MA)=>rQ.jsxDEV($,{color:MA===0?"magenta":void 0,dimColor:MA!==0,children:[MA===0?"\u25B6 ":" ","[",WA.approvalType,"] ",WA.approvalId.slice(0,12)]},WA.approvalId,!0,void 0,this))]},void 0,!0,void 0,this),rQ.jsxDEV(UA,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:1,children:N.length===0?rQ.jsxDEV($,{dimColor:!0,children:C?"\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09":"(no log yet)"},void 0,!1,void 0,this):N.slice(-30).map((WA,MA)=>{let JA=Hf(WA);return rQ.jsxDEV($,{color:JA.color,dimColor:JA.dim,children:JA.text||" "},MA,!1,void 0,this)})},void 0,!1,void 0,this),p&&rQ.jsxDEV(UA,{marginTop:1,children:rQ.jsxDEV($,{color:"red",children:["\u2717 ",p]},void 0,!0,void 0,this)},void 0,!1,void 0,this),rQ.jsxDEV(UA,{marginTop:1,children:[rQ.jsxDEV($,{color:"cyan",bold:!0,children:k==="sending"?"\u23F3 ":k==="cancelling"?"\u270B ":"\u25B6 "},void 0,!1,void 0,this),rQ.jsxDEV($,{children:R},void 0,!1,void 0,this),k==="idle"&&rQ.jsxDEV($,{inverse:!0,children:" "},void 0,!1,void 0,this),k==="sending"&&rQ.jsxDEV($,{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),rQ.jsxDEV(UA,{marginTop:1,gap:2,children:[rQ.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,children:C?"\u53D1\u9001":"send"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,bold:!0,children:"^Y/^N"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,children:C?"\u6279/\u62D2":"allow/deny"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),rQ.jsxDEV($,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),rQ.jsxDEV($,{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 PB=ZB(yI(),1);function xq(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 Mf(B){switch(B){case"running":return"yellow";case"idle":return"green";case"closed":return"gray";case"dead":return"red";default:return"white"}}function pq({onDone:B}){let I=ag()==="zh",[C,D]=N0.useState(null),[w,N]=N0.useState({}),[J,R]=N0.useState(0),[X,k]=N0.useState(null),[b,p]=N0.useState(0),[y,P]=N0.useState({kind:"list"}),_=N0.useCallback(async()=>{let[z,x]=await Promise.all([Q6(),B9()]);D(z),N(x),R((EA)=>Math.max(0,Math.min(EA,z.length-1)))},[]);if(N0.useEffect(()=>{_()},[_,b]),N0.useEffect(()=>{let z=setInterval(()=>p((x)=>x+1),5000);return()=>clearInterval(z)},[]),LE((z,x)=>{if(X)return;if(y.kind!=="list")return;if(x.escape||z==="q"){B();return}if(z==="n"){P({kind:"new",backend:"claude",model:"",name:"",field:"backend"});return}if(!C||C.length===0){if(z==="r")p((HA)=>HA+1);return}if(x.upArrow||z==="k"){R((HA)=>Math.max(0,HA-1));return}if(x.downArrow||z==="j"){R((HA)=>Math.min(C.length-1,HA+1));return}if(z==="r"){p((HA)=>HA+1);return}if(z==="p"){k(I?"\u6E05\u7406\u4E2D...":"purging..."),A9().then(()=>{k(null),_()});return}let EA=C[J];if(!EA)return;if(x.return||z==="o"){P({kind:"detail",sid:EA.sid});return}if(z==="d"){k(`closing ${EA.sid.slice(0,8)}...`),B6(EA.sid,!1).then(()=>{k(null),_()});return}if(z==="x"){k(`purging ${EA.sid.slice(0,8)}...`),B6(EA.sid,!0).then(()=>{k(null),_()});return}}),y.kind==="detail")return PB.jsxDEV(iq,{sid:y.sid,onBack:()=>{P({kind:"list"}),_()}},void 0,!1,void 0,this);if(y.kind==="new")return PB.jsxDEV(Lf,{initial:y,onCancel:()=>P({kind:"list"}),onCreated:(z)=>{P({kind:"detail",sid:z})}},void 0,!1,void 0,this);if(!C)return PB.jsxDEV(UA,{paddingX:2,paddingY:1,children:PB.jsxDEV($,{dimColor:!0,children:I?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return PB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[PB.jsxDEV($,{bold:!0,children:I?"Agent \u4F1A\u8BDD\u7BA1\u7406":"Agent Sessions"},void 0,!1,void 0,this),PB.jsxDEV(UA,{marginTop:1,children:PB.jsxDEV($,{dimColor:!0,children:[I?"\u9ED8\u8BA4 Provider\uFF1A":"Defaults: ",Object.keys(w).length===0?I?"\uFF08\u672A\u8BBE\u7F6E\uFF09":"(unset)":Object.entries(w).map(([z,x])=>`${z}=${x.slice(0,8)}`).join(" \u2502 ")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.length===0?PB.jsxDEV(UA,{marginTop:2,flexDirection:"column",children:PB.jsxDEV($,{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):PB.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:[PB.jsxDEV(UA,{children:PB.jsxDEV($,{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((z,x)=>{let EA=x===J;return PB.jsxDEV(UA,{children:[PB.jsxDEV($,{color:EA?"cyan":void 0,inverse:EA,children:EA?"\u25B6 ":" "},void 0,!1,void 0,this),PB.jsxDEV($,{color:EA?"cyan":void 0,children:z.sid.slice(0,8).padEnd(10)},void 0,!1,void 0,this),PB.jsxDEV($,{children:z.backend.padEnd(9)},void 0,!1,void 0,this),PB.jsxDEV($,{children:(z.name??"").slice(0,18).padEnd(20)},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:(z.model??"-").slice(0,20).padEnd(22)},void 0,!1,void 0,this),PB.jsxDEV($,{color:Mf(z.status),children:z.status.padEnd(9)},void 0,!1,void 0,this),PB.jsxDEV($,{children:String(z.turnCount).padEnd(7)},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:xq(Date.now()-z.createdAt).padEnd(6)},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:xq(Date.now()-z.lastActiveAt)},void 0,!1,void 0,this)]},z.sid,!0,void 0,this)})]},void 0,!0,void 0,this),X&&PB.jsxDEV(UA,{marginTop:1,children:PB.jsxDEV($,{color:"yellow",children:["\u23F3 ",X]},void 0,!0,void 0,this)},void 0,!1,void 0,this),PB.jsxDEV(UA,{marginTop:2,gap:2,children:[PB.jsxDEV($,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u9009\u62E9":"select"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u8FDB\u5165":"open"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"n"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u65B0\u5EFA":"new"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u5173\u95ED":"close"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"x"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u5220\u9664":"purge"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:I?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),PB.jsxDEV($,{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 Lf({initial:B,onCancel:I,onCreated:C}){let D=ag()==="zh",[w,N]=N0.useState(B.backend),[J,R]=N0.useState(B.model),[X,k]=N0.useState(B.name),[b,p]=N0.useState(B.field),[y,P]=N0.useState(!1),[_,z]=N0.useState(null),x=N0.useCallback(async()=>{if(y)return;P(!0),z(null);try{let EA=await rM({backend:w,model:J.trim()||void 0,name:X.trim()||void 0});C(EA.sid)}catch(EA){z(EA instanceof Error?EA.message:String(EA)),P(!1)}},[w,J,X,y,C]);return LE((EA,HA)=>{if(y)return;if(HA.escape){I();return}if(HA.tab||HA.downArrow){p((BA)=>BA==="backend"?"model":BA==="model"?"name":"backend");return}if(HA.upArrow){p((BA)=>BA==="backend"?"name":BA==="model"?"backend":"model");return}if(b==="backend"){if(HA.leftArrow||HA.rightArrow||EA===" "){N((BA)=>BA==="claude"?"codex":"claude");return}if(HA.return){x();return}return}if(b==="model"){if(HA.return){p("name");return}if(HA.backspace||HA.delete){R((BA)=>BA.slice(0,-1));return}if(EA&&!HA.ctrl&&EA.length===1)R((BA)=>BA+EA);return}if(b==="name"){if(HA.return){x();return}if(HA.backspace||HA.delete){k((BA)=>BA.slice(0,-1));return}if(EA&&!HA.ctrl&&EA.length===1)k((BA)=>BA+EA)}}),PB.jsxDEV(UA,{flexDirection:"column",paddingX:2,paddingY:1,children:[PB.jsxDEV($,{bold:!0,children:D?"\u65B0\u5EFA Agent Session":"New agent session"},void 0,!1,void 0,this),PB.jsxDEV(UA,{marginTop:1,children:PB.jsxDEV($,{color:b==="backend"?"cyan":void 0,bold:b==="backend",children:[b==="backend"?"\u25B6 ":" ",D?"\u540E\u7AEF":"backend",": ",w==="claude"?"\u25CF claude \u25CB codex":"\u25CB claude \u25CF codex"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),PB.jsxDEV(UA,{children:PB.jsxDEV($,{color:b==="model"?"cyan":void 0,bold:b==="model",children:[b==="model"?"\u25B6 ":" ",D?"\u6A21\u578B":"model",": ",J||(D?"\uFF08\u7559\u7A7A\u8D70\u9ED8\u8BA4\uFF09":"(default)"),b==="model"&&PB.jsxDEV($,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),PB.jsxDEV(UA,{children:PB.jsxDEV($,{color:b==="name"?"cyan":void 0,bold:b==="name",children:[b==="name"?"\u25B6 ":" ",D?"\u540D\u5B57":"name",": ",X||(D?"\uFF08\u7559\u7A7A\u81EA\u52A8\uFF09":"(auto)"),b==="name"&&PB.jsxDEV($,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),_&&PB.jsxDEV(UA,{marginTop:1,children:PB.jsxDEV($,{color:"red",children:["\u2717 ",_]},void 0,!0,void 0,this)},void 0,!1,void 0,this),y&&PB.jsxDEV(UA,{marginTop:1,children:PB.jsxDEV($,{color:"yellow",children:["\u23F3 ",D?"\u521B\u5EFA\u4E2D...":"creating..."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),PB.jsxDEV(UA,{marginTop:1,gap:2,children:[PB.jsxDEV($,{dimColor:!0,bold:!0,children:"Tab/\u2191\u2193"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:D?"\u5207\u5B57\u6BB5":"switch"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:D?"\u521B\u5EFA":"create"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),PB.jsxDEV($,{dimColor:!0,children:D?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}YF();var Jg=ZB(yI(),1);function Jf({onLaunch:B,onExit:I,initialView:C="launcher"}){let[D,w]=og.useState(C),[N,J]=og.useState([]),R=og.useRef(null),X=og.useRef(!1);og.useEffect(()=>{if(X.current||C!=="launcher")return;X.current=!0,uq().then((_)=>{if(_)w("key-guide")})},[C]);let k=og.useCallback((_)=>{if(J((z)=>[...z.slice(-4),_]),R.current)clearTimeout(R.current);R.current=setTimeout(()=>J([]),5000)},[]);og.useEffect(()=>{let _=0;return IJ({info:(z)=>k({text:z,type:"info"}),warn:(z)=>k({text:z,type:"warn"}),error:(z)=>k({text:z,type:"error"}),success:(z)=>k({text:z,type:"success"}),spin:(z)=>{let x=++_;return k({id:x,text:z,type:"spin"}),{stop:(EA)=>{if(J((HA)=>{let BA=HA.filter((WA)=>WA.id!==x);if(EA)BA.push({text:EA,type:"success"});return BA.slice(-5)}),R.current)clearTimeout(R.current);R.current=setTimeout(()=>J([]),5000)},update:(EA)=>{if(J((HA)=>HA.map((BA)=>BA.id===x?{...BA,text:EA}:BA)),R.current)clearTimeout(R.current);R.current=setTimeout(()=>J([]),5000)}}}}),()=>CN()},[k]);let b=og.useCallback(()=>w("launcher"),[]),p={info:"cyan",warn:"yellow",error:"red",success:"green",spin:"yellow"},y={info:"\u2139",warn:"\u26A0",error:"\u2717",success:"\u2713",spin:"\u23F3"},P=(()=>{switch(D){case"launcher":return Jg.jsxDEV(rX,{onResult:(_)=>{switch(_.type){case"launch":B(_);break;case"agent":w("agents");break;case"providers":w("providers");break;case"stats":w("stats");break;case"config":w("config");break;case"language":w("language");break;case"exit":I();break}}},void 0,!1,void 0,this);case"providers":return Jg.jsxDEV(Bq,{onDone:(_)=>{if(_==="client-versions")w("client-versions");else b()}},void 0,!1,void 0,this);case"agents":return Jg.jsxDEV(pq,{onDone:b},void 0,!1,void 0,this);case"client-versions":return Jg.jsxDEV(Lq,{onDone:()=>w("providers")},void 0,!1,void 0,this);case"stats":return Jg.jsxDEV(Eq,{onExit:b},void 0,!1,void 0,this);case"config":return Jg.jsxDEV(gq,{isReconfigure:!0,onDone:b},void 0,!1,void 0,this);case"language":return Jg.jsxDEV(Fq,{onDone:b},void 0,!1,void 0,this);case"key-guide":return Jg.jsxDEV(Hq,{onDone:(_)=>{if(_==="configure")w("config");else Nq(_).then(()=>w("launcher"))}},void 0,!1,void 0,this)}})();return Jg.jsxDEV(UA,{flexDirection:"column",children:[N.length>0&&Jg.jsxDEV(UA,{flexDirection:"column",paddingX:2,children:N.map((_,z)=>Jg.jsxDEV($,{color:p[_.type],dimColor:_.type==="info",children:[y[_.type]," ",_.text]},z,!0,void 0,this))},void 0,!1,void 0,this),P]},void 0,!0,void 0,this)}function h7(){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 D(N){I?.clear(),I?.unmount(),I=null,C(),CN(),B(N)}function w(){I?.clear(),I?.unmount(),I=null,C(),CN(),B(null)}I=Q8(Jg.jsxDEV(Jf,{onLaunch:D,onExit:w},void 0,!1,void 0,this))})}jE();$D();await uC();var zF=ZB(yI(),1),Uf={info:"cyan",success:"green",warning:"yellow",danger:"red"};function Rf(B){return Uf[B??"info"]??"cyan"}function Wf({ann:B,onClose:I}){LE((w,N)=>{if(N.return||N.escape||w==="q")I()});let C=Rf(B.type),D=B.content.split(/\r?\n/);return zF.jsxDEV(UA,{flexDirection:"column",borderStyle:"round",borderColor:C,paddingX:2,paddingY:1,children:[zF.jsxDEV(UA,{children:zF.jsxDEV($,{color:C,bold:!0,children:["\uD83D\uDCE3 ",B.title]},void 0,!0,void 0,this)},void 0,!1,void 0,this),zF.jsxDEV(UA,{marginTop:1,flexDirection:"column",children:D.map((w,N)=>zF.jsxDEV($,{children:w||" "},N,!1,void 0,this))},void 0,!1,void 0,this),zF.jsxDEV(UA,{marginTop:1,children:zF.jsxDEV($,{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 aq(B){return new Promise((I)=>{let C=null;C=Q8(zF.jsxDEV(Wf,{ann:B,onClose:()=>{C?.clear(),C?.unmount(),C=null,I()}},void 0,!1,void 0,this))})}var Kf=2000,dq=100;function Z2(B){if(eu||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${B}
|
|
827
|
-
`)}function oq(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 Yf(B,I){let C=`${B}/v1/announcements/popup`;try{let D=await fetch(C,{headers:{Authorization:`Bearer ${I}`},signal:AbortSignal.timeout(Kf)});if(!D.ok)return Z2(`HTTP ${D.status} from ${C}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let N=(await D.json())?.announcement;if(!N)return Z2("\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 Z2(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(N)}`),null;return Z2(`\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(D){return Z2(`fetch \u5931\u8D25\uFF1A${D instanceof Error?D.message:String(D)}`),null}}async function Zf(B){return((await vQ()).seenAnnouncementIds??[]).includes(B)}async function Xf(B){let I=await vQ(),C=I.seenAnnouncementIds??[];if(C.includes(B))return;let D=[...C,B];if(D.length>dq)D.splice(0,D.length-dq);I.seenAnnouncementIds=D,await GC(I)}async function qf(){let B=oq(await Hg());if(B)return B;for(let I of await bC()){let C=oq(I);if(C)return C}return null}async function cq(){let B=await qf();if(!B){Z2("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}Z2(`\u67E5\u8BE2\u516C\u544A\uFF1A${B.baseUrl}/v1/announcements/popup`);let I=await Yf(B.baseUrl,B.apiKey);if(!I)return;if(I.popup_once&&await Zf(I.id)){Z2(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${I.id}`);return}if(Z2(`\u5F39\u7A97\uFF1A${I.id}`),await aq(I),I.popup_once)await Xf(I.id),Z2(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${I.id}`)}async function lq(){await rU(),await tU(),await vX(),await Promise.race([nL(await bC()),new Promise((B)=>setTimeout(B,3000))]),await cq();while(!0){let B=await h7();if(!B)break;if(B.type==="agent")continue;let I=wg(B.clientId);if(!I)continue;u0("menu_action",{action:"launch",client_id:B.clientId});let C=await PM(B.clientId);if(!C){LQ.warn(AQ("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546");continue}let D=await hM(I,{projectPath:B.projectPath,args:B.args,envVars:B.envVars,selectedOptionIds:B.selectedOptionIds,providerContext:C});if(!D.success)LQ.error(D.error||AQ("cli.launchFailed"))}}YF();f4();jE();rE();W2();C7();import{join as X2}from"path";var P7="tako-cli",I6="0.
|
|
827
|
+
`)}function oq(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 Yf(B,I){let C=`${B}/v1/announcements/popup`;try{let D=await fetch(C,{headers:{Authorization:`Bearer ${I}`},signal:AbortSignal.timeout(Kf)});if(!D.ok)return Z2(`HTTP ${D.status} from ${C}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let N=(await D.json())?.announcement;if(!N)return Z2("\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 Z2(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(N)}`),null;return Z2(`\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(D){return Z2(`fetch \u5931\u8D25\uFF1A${D instanceof Error?D.message:String(D)}`),null}}async function Zf(B){return((await vQ()).seenAnnouncementIds??[]).includes(B)}async function Xf(B){let I=await vQ(),C=I.seenAnnouncementIds??[];if(C.includes(B))return;let D=[...C,B];if(D.length>dq)D.splice(0,D.length-dq);I.seenAnnouncementIds=D,await GC(I)}async function qf(){let B=oq(await Hg());if(B)return B;for(let I of await bC()){let C=oq(I);if(C)return C}return null}async function cq(){let B=await qf();if(!B){Z2("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}Z2(`\u67E5\u8BE2\u516C\u544A\uFF1A${B.baseUrl}/v1/announcements/popup`);let I=await Yf(B.baseUrl,B.apiKey);if(!I)return;if(I.popup_once&&await Zf(I.id)){Z2(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${I.id}`);return}if(Z2(`\u5F39\u7A97\uFF1A${I.id}`),await aq(I),I.popup_once)await Xf(I.id),Z2(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${I.id}`)}async function lq(){await rU(),await tU(),await vX(),await Promise.race([nL(await bC()),new Promise((B)=>setTimeout(B,3000))]),await cq();while(!0){let B=await h7();if(!B)break;if(B.type==="agent")continue;let I=wg(B.clientId);if(!I)continue;u0("menu_action",{action:"launch",client_id:B.clientId});let C=await PM(B.clientId);if(!C){LQ.warn(AQ("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546");continue}let D=await hM(I,{projectPath:B.projectPath,args:B.args,envVars:B.envVars,selectedOptionIds:B.selectedOptionIds,providerContext:C});if(!D.success)LQ.error(D.error||AQ("cli.launchFailed"))}}YF();f4();jE();rE();W2();C7();import{join as X2}from"path";var P7="tako-cli",I6="0.3.1";function Sf(B,I){let C=B.split(".").map(Number),D=I.split(".").map(Number);for(let w=0;w<3;w++){let N=C[w]||0,J=D[w]||0;if(N>J)return 1;if(N<J)return-1}return 0}async function yf(){try{let B=await Mg(),I=await fetch(`${B}/${P7}/latest`,{signal:AbortSignal.timeout(5000)});if(!I.ok)return null;return(await I.json()).version||null}catch{return null}}async function kf(){let B=await yf();if(!B)return{hasUpdate:!1,currentVersion:I6};return{hasUpdate:Sf(B,I6)>0,latestVersion:B,currentVersion:I6}}async function nq(){let B=await import("fs/promises"),I=X2(w0,"bin"),C=X2(I,"tako"),D=X2(kD,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32"){let N=`@echo off\r
|
|
828
828
|
"${P0}" "${D}" %*\r
|
|
829
829
|
`;await B.writeFile(X2(I,"tako.cmd"),N)}else{let N=`#!/bin/bash
|
|
830
830
|
exec "${P0}" "${D}" "$@"
|
|
831
831
|
`;await B.writeFile(C,N,{mode:493})}}async function Of(B){let I=p1(),C=`\u6B63\u5728\u66F4\u65B0\u5230 v${B}`;I.start(C);try{let D=await Mg(),w=await import("fs/promises");await w.mkdir(kD,{recursive:!0});let N=X2(kD,"package.json");try{await w.access(N)}catch{await w.writeFile(N,JSON.stringify({name:"tako-local",private:!0},null,2))}let J=Bun.spawn([P0,"update",P7,"--latest"],{cwd:kD,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:D}}),R=await TM(J,C,(X)=>I.update(X));if(await J.exited,J.exitCode===0)return await nq(),u0("cli_updated",{from_version:I6,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: ${R||"\u672A\u77E5\u9519\u8BEF"}`),!1}catch(D){return I.stop(`\u66F4\u65B0\u5931\u8D25: ${D instanceof Error?D.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function mf(){let B=await import("fs/promises"),I=X2(kD,"bun.lock");try{await B.unlink(I)}catch{}}async function zf(){let B=await import("fs/promises");try{let I=await Mg();await B.mkdir(kD,{recursive:!0});let C=X2(kD,"package.json");try{await B.access(C)}catch{await B.writeFile(C,JSON.stringify({name:"tako-local",private:!0},null,2))}await mf();let D=Bun.spawn([P0,"add",`${P7}@latest`],{cwd:kD,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:I}});return await D.exited,D.exitCode===0}catch{return!1}}async function $f(){let B=await import("fs/promises"),I=X2(w0,"bin"),C=X2(I,"tako"),D=X2(kD,"node_modules/tako-cli/dist/index.js");try{let w=await B.readFile(C,"utf-8");if(w.includes("bun run tako-cli")||w.includes("run tako-cli")){LQ.info(AQ("updater.migrating"));let N=!1;try{await B.access(D),N=!0}catch{N=!1}if(!N){let J=p1();if(J.start(AQ("updater.installingLocally")),!await zf())return J.stop(AQ("updater.migrationFailed")),!1;J.stop(AQ("updater.installComplete"))}return await nq(),!0}}catch{}return!1}async function E6(){try{if(await $f())LQ.info(AQ("updater.migrationComplete")),process.exit(0);let I=await kf();if(I.hasUpdate&&I.latestVersion){if(LQ.warn(AQ("updater.newVersionAvailable",{version:I.latestVersion,current:I6})),await Of(I.latestVersion))LQ.info(AQ("updater.pleaseRestart")),process.exit(0)}}catch{}}_C();rE();W2();import{homedir as ff}from"os";var uI={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 AE={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var fE={directory:{icon:uI.brightYellow,text:uI.brightGreen},git:{icon:uI.brightBlue,text:uI.brightBlue,clean:uI.brightGreen,dirty:uI.brightYellow,conflict:uI.brightRed},model:{icon:uI.brightCyan,text:uI.brightCyan},version:{icon:uI.brightWhite,text:uI.brightBlack},outputStyle:{icon:uI.brightMagenta,text:uI.brightMagenta},context:{icon:uI.brightMagenta,low:uI.brightGreen,medium:uI.brightYellow,high:uI.brightRed},todayUsage:{icon:uI.brightGreen,text:uI.brightGreen},separator:uI.brightBlack},$F={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 vf(){return!1}function q2(B){let I=$F[B];if(typeof I==="string")return I;return vf()?I.nerd:I.plain}class I9{id="directory";render(B){let I=this.formatPath(B.workspace.current_dir),C=q2("directory");return`${fE.directory.icon}${C}${AE.reset} ${fE.directory.text}${I}${AE.reset}`}formatPath(B){let I=ff();if(B===I)return"~";if(B.startsWith(I+"/"))return"~"+B.slice(I.length);return B}}class E9{id="git";async render(B){let I=B.workspace.current_dir;if(!await this.isGitRepository(I))return null;let D=await this.getBranch(I);if(!D)return null;let{status:w,statusColor:N}=await this.getStatus(I),{ahead:J,behind:R}=await this.getAheadBehind(I),X=q2("git"),k=`${fE.git.icon}${X}${AE.reset} ${fE.git.text}${D}${AE.reset}`;if(k+=` ${N}${w}${AE.reset}`,J>0)k+=` ${fE.git.clean}${$F.gitAhead}${J}${AE.reset}`;if(R>0)k+=` ${fE.git.dirty}${$F.gitBehind}${R}${AE.reset}`;return k}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 w=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),N=await new Response(w.stdout).text();if(await w.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:$F.gitClean,statusColor:fE.git.clean};let w=C.trim();if(!w)return{status:$F.gitClean,statusColor:fE.git.clean};if(w.includes("UU")||w.includes("AA")||w.includes("DD"))return{status:$F.gitConflict,statusColor:fE.git.conflict};return{status:$F.gitDirty,statusColor:fE.git.dirty}}catch{return{status:$F.gitClean,statusColor:fE.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(),w=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"}),J=await new Response(N.stdout).text(),X=await N.exited===0?parseInt(J.trim(),10)||0:0;return{ahead:w,behind:X}}catch{return{ahead:0,behind:0}}}}var Tf={"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 C9{id="model";render(B){let I=B.model.id,C=Tf[I]||this.simplifyModelName(B.model.display_name),D=q2("model");return`${fE.model.icon}${D}${AE.reset} ${fE.model.text}${C}${AE.reset}`}simplifyModelName(B){let I=B.replace(/^Claude\s+/i,"");return I=I.replace(/-\d{8}$/,""),I}}var hf=200000;class S2{id="context";static cache=null;static CACHE_TTL=5000;async render(B){let I=await this.getTokensWithCache(B.transcript_path),D=dL(B.model.id)?.contextWindow??hf,w=Math.round((I??0)/D*100),N=Math.max(0,100-w),J=q2("context"),R=N<=20?uI.brightRed:N<=50?uI.brightYellow:uI.brightGreen;return`${fE.context.icon}${J}${AE.reset} ${R}${N}%${AE.reset}`}async getTokensWithCache(B){let I=Date.now();if(S2.cache&&S2.cache.path===B&&I-S2.cache.timestamp<S2.CACHE_TTL)return S2.cache.tokens;let C=await this.parseTranscriptTokens(B);return S2.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 D=C.split(`
|
|
832
|
-
`).filter((w)=>w.trim());for(let w=D.length-1;w>=0;w--)try{let N=JSON.parse(D[w]);if(N.type==="assistant"&&N.message?.usage){let J=N.message.usage;return(J.input_tokens||0)+(J.output_tokens||0)+(J.cache_creation_input_tokens||0)+(J.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}_M();jE();$D();class g9{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await SF("claude-code")??await Hg();if(!B){let C=await i1().catch(()=>"");if(!C)return null;let D=await oN(C);return this.renderTako(D)}let I=await cN(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 D=C.costUsed??0;return`${this.icon()} ${uI.brightGreen}Day:${this.fmtCost(D)}${AE.reset}`}renderSub(B){let I=(D,w,N)=>{if(D&&D>=1440)return`${Math.round(D/1440)}d`;if(D)return`${Math.round(D/60)}h`;return N?`${N}d`:`${w}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(`${AE.dim} \xB7 ${AE.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?uI.brightRed:I>=70?uI.brightYellow:uI.brightGreen;return`${B}:${C}${I}%${AE.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),D=C<=10?uI.brightRed:C<=30?uI.brightYellow:uI.brightGreen;return`${B} \u5269 ${D}${C}%${AE.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${uI.brightGreen}Session:${this.fmtCost(I)}${AE.reset}`}icon(){return`${fE.todayUsage.icon}${q2("todayUsage")}${AE.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class _7{separator=`${fE.separator} \u2502 ${AE.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let D of I){let w=B.get(D);if(w)C.push(w)}return C.join(this.separator)}}import{join as F8,dirname as Pf}from"path";import{homedir as V7}from"os";import{mkdir as _f}from"fs/promises";var sq=F8(V7(),".tako"),Vf=F8(sq,"cli"),bf=F8(sq,"bin",process.platform==="win32"?"tako.cmd":"tako");function jf(){if(process.platform==="win32")return F8(process.env.APPDATA||F8(V7(),"AppData","Roaming"),"claude","settings.json");return F8(V7(),".claude","settings.json")}var xf=process.platform==="win32",pf="0.1.48";function af(B,I){let C=B.split(".").map(Number),D=I.split(".").map(Number),w=Math.max(C.length,D.length);for(let N=0;N<w;N++){let J=C[N]||0,R=D[N]||0;if(J!==R)return J-R}return 0}async function df(){let B=F8(Vf,"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 of(){let B=await df();if(!B)return!1;return af(B,pf)>=0}function cf(){return bf}function lf(){return`"${nf(cf())}" statusline`}function nf(B){if(xf)return B.replace(/\\/g,"/");return B}async function b7(){if(!await of())return;let I=jf(),C={};try{let N=Bun.file(I);if(await N.exists())C=await N.json()}catch{}let D={type:"command",command:lf(),padding:0},w=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof w==="string"&&w.includes("tako statusline"))return;C.statusLine=D,await _f(Pf(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var sf=[new I9,new E9,new C9,new S2,new g9];async function rf(B){let I=await Promise.all(sf.map(async(w)=>{try{let N=await w.render(B);return{id:w.id,content:N}}catch{return{id:w.id,content:null}}})),C=new Map;for(let{id:w,content:N}of I)C.set(w,N);return new _7().render(C)}async function rq(){try{let B=await Bun.stdin.json(),I=await rf(B);console.log(I)}catch{process.exit(0)}}jE();var c7="0.
|
|
832
|
+
`).filter((w)=>w.trim());for(let w=D.length-1;w>=0;w--)try{let N=JSON.parse(D[w]);if(N.type==="assistant"&&N.message?.usage){let J=N.message.usage;return(J.input_tokens||0)+(J.output_tokens||0)+(J.cache_creation_input_tokens||0)+(J.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}_M();jE();$D();class g9{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await SF("claude-code")??await Hg();if(!B){let C=await i1().catch(()=>"");if(!C)return null;let D=await oN(C);return this.renderTako(D)}let I=await cN(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 D=C.costUsed??0;return`${this.icon()} ${uI.brightGreen}Day:${this.fmtCost(D)}${AE.reset}`}renderSub(B){let I=(D,w,N)=>{if(D&&D>=1440)return`${Math.round(D/1440)}d`;if(D)return`${Math.round(D/60)}h`;return N?`${N}d`:`${w}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(`${AE.dim} \xB7 ${AE.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?uI.brightRed:I>=70?uI.brightYellow:uI.brightGreen;return`${B}:${C}${I}%${AE.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),D=C<=10?uI.brightRed:C<=30?uI.brightYellow:uI.brightGreen;return`${B} \u5269 ${D}${C}%${AE.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${uI.brightGreen}Session:${this.fmtCost(I)}${AE.reset}`}icon(){return`${fE.todayUsage.icon}${q2("todayUsage")}${AE.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class _7{separator=`${fE.separator} \u2502 ${AE.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let D of I){let w=B.get(D);if(w)C.push(w)}return C.join(this.separator)}}import{join as F8,dirname as Pf}from"path";import{homedir as V7}from"os";import{mkdir as _f}from"fs/promises";var sq=F8(V7(),".tako"),Vf=F8(sq,"cli"),bf=F8(sq,"bin",process.platform==="win32"?"tako.cmd":"tako");function jf(){if(process.platform==="win32")return F8(process.env.APPDATA||F8(V7(),"AppData","Roaming"),"claude","settings.json");return F8(V7(),".claude","settings.json")}var xf=process.platform==="win32",pf="0.1.48";function af(B,I){let C=B.split(".").map(Number),D=I.split(".").map(Number),w=Math.max(C.length,D.length);for(let N=0;N<w;N++){let J=C[N]||0,R=D[N]||0;if(J!==R)return J-R}return 0}async function df(){let B=F8(Vf,"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 of(){let B=await df();if(!B)return!1;return af(B,pf)>=0}function cf(){return bf}function lf(){return`"${nf(cf())}" statusline`}function nf(B){if(xf)return B.replace(/\\/g,"/");return B}async function b7(){if(!await of())return;let I=jf(),C={};try{let N=Bun.file(I);if(await N.exists())C=await N.json()}catch{}let D={type:"command",command:lf(),padding:0},w=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof w==="string"&&w.includes("tako statusline"))return;C.statusLine=D,await _f(Pf(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var sf=[new I9,new E9,new C9,new S2,new g9];async function rf(B){let I=await Promise.all(sf.map(async(w)=>{try{let N=await w.render(B);return{id:w.id,content:N}}catch{return{id:w.id,content:null}}})),C=new Map;for(let{id:w,content:N}of I)C.set(w,N);return new _7().render(C)}async function rq(){try{let B=await Bun.stdin.json(),I=await rf(B);console.log(I)}catch{process.exit(0)}}jE();var c7="0.3.1";function WT(){console.log(`
|
|
833
833
|
${AQ("cli.version",{version:c7})}
|
|
834
834
|
|
|
835
835
|
${AQ("cli.usage")}
|