tako-cli 0.3.24 → 0.3.25

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.
Files changed (2) hide show
  1. package/dist/index.js +4 -4
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ var Vq=Object.create;var{getPrototypeOf:mq,defineProperty:hF,getOwnPropertyNames
8
8
  {fields}`,zh:`\u68C0\u6D4B\u5230 Claude Code settings \u4E2D\u5B58\u5728\u4E0E Tako \u51B2\u7A81\u7684\u914D\u7F6E\uFF1A
9
9
  {fields}`},confirmClean:{en:"Clean these settings? Tako will manage them automatically at launch",zh:"\u662F\u5426\u6E05\u7406\u8FD9\u4E9B\u914D\u7F6E\uFF1FTako \u542F\u52A8\u65F6\u4F1A\u81EA\u52A8\u6CE8\u5165\u6B63\u786E\u7684\u503C"},settingsCleaned:{en:"Settings cleaned, Tako will manage these configs automatically",zh:"\u5DF2\u6E05\u7406\u5B8C\u6210\uFF0CTako \u4F1A\u81EA\u52A8\u7BA1\u7406\u8FD9\u4E9B\u914D\u7F6E"},cleanSkipped:{en:"Skipped. Note: hardcoded settings may cause issues with Tako",zh:"\u5DF2\u8DF3\u8FC7\u3002\u6CE8\u610F\uFF1A\u5199\u6B7B\u7684\u914D\u7F6E\u53EF\u80FD\u5BFC\u81F4 Tako \u542F\u52A8\u5F02\u5E38"},usingIsolatedSettings:{en:"Using Tako-managed Claude Code settings for this launch: {path}",zh:"\u672C\u6B21\u542F\u52A8\u5C06\u4F7F\u7528 Tako \u6258\u7BA1\u7684 Claude Code settings\uFF1A{path}"},subscriptionMissingAuth:{en:"Selected Claude account has no captured credentials. Run `claude /login` for that account, then re-detect in Tako.",zh:"\u76EE\u6807 Claude \u8D26\u53F7\u7F3A\u5C11\u51ED\u636E\u3002\u8BF7\u7528 `claude /login` \u767B\u5F55\u8BE5\u8D26\u53F7\u540E\uFF0C\u8BA9 Tako \u91CD\u65B0\u68C0\u6D4B\u4E00\u6B21\u3002"},subscriptionSwitched:{en:"Switched Claude Code login to {email}",zh:"\u5DF2\u5207\u6362 Claude Code \u767B\u5F55\u8D26\u53F7\u4E3A {email}"},unknownCurrentAccount:{en:"Current Claude login ({email}) is not tracked by Tako; its tokens will be overwritten.",zh:"\u5F53\u524D Claude \u767B\u5F55\u8D26\u53F7 ({email}) \u672A\u88AB Tako \u8BB0\u5F55\uFF0C\u5207\u6362\u540E\u8BE5\u8D26\u53F7 token \u5C06\u88AB\u8986\u76D6\u3002"}},recentProjects:{title:{en:"Recent Projects",zh:"\u6700\u8FD1\u9879\u76EE"},launchInCurrent:{en:"Launch in current directory",zh:"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8"}},providers:{management:{en:"Manage Providers",zh:"\u7BA1\u7406\u670D\u52A1\u5546"},selectProvider:{en:"Select provider:",zh:"\u9009\u62E9\u670D\u52A1\u5546\uFF1A"},selectType:{en:"Provider type:",zh:"\u670D\u52A1\u5546\u7C7B\u578B\uFF1A"},enterName:{en:"Provider name:",zh:"\u670D\u52A1\u5546\u540D\u79F0\uFF1A"},enterApiKey:{en:"API Key:",zh:"API Key\uFF1A"},enterBaseUrl:{en:"Base URL:",zh:"\u57FA\u7840 URL\uFF1A"},add:{en:"Add Provider",zh:"\u6DFB\u52A0\u670D\u52A1\u5546"},edit:{en:"Edit Provider",zh:"\u7F16\u8F91\u670D\u52A1\u5546"},delete:{en:"Delete Provider",zh:"\u5220\u9664\u670D\u52A1\u5546"},setDefault:{en:"Set as Default",zh:"\u8BBE\u4E3A\u9ED8\u8BA4"},rescan:{en:"Re-scan Subscriptions",zh:"\u91CD\u65B0\u626B\u63CF\u8BA2\u9605"},back:{en:"Back",zh:"\u8FD4\u56DE"},added:{en:"Provider added",zh:"\u670D\u52A1\u5546\u5DF2\u6DFB\u52A0"},deleted:{en:"Provider deleted",zh:"\u670D\u52A1\u5546\u5DF2\u5220\u9664"},updated:{en:"Provider updated",zh:"\u670D\u52A1\u5546\u5DF2\u66F4\u65B0"},defaultSet:{en:"Default provider set",zh:"\u9ED8\u8BA4\u670D\u52A1\u5546\u5DF2\u8BBE\u7F6E"},noProviders:{en:"No providers configured",zh:"\u672A\u914D\u7F6E\u670D\u52A1\u5546"},noCompatible:{en:"No provider supports {client}",zh:"\u6CA1\u6709\u652F\u6301 {client} \u7684\u670D\u52A1\u5546"},defaultLabel:{en:"(default)",zh:"\uFF08\u9ED8\u8BA4\uFF09"},detected:{en:"Detected: {name}",zh:"\u68C0\u6D4B\u5230\uFF1A{name}"},confirmDelete:{en:"Delete {name}?",zh:"\u786E\u8BA4\u5220\u9664 {name}\uFF1F"},scanComplete:{en:"Scan complete, found {count} new provider(s)",zh:"\u626B\u63CF\u5B8C\u6210\uFF0C\u53D1\u73B0 {count} \u4E2A\u65B0\u670D\u52A1\u5546"}}}});var bw={};wE(bw,{writeClaudeAuth:()=>xO,readClaudeAuth:()=>jO});import{homedir as rU,platform as _O,userInfo as PO}from"os";import{join as qN}from"path";function tU(){return[process.env.USER||(()=>{try{return PO().username}catch{return""}})(),"root"].filter(Boolean)}async function VO(B){let I=Bun.spawn(["security","find-generic-password","-s",sU,"-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 mO(){for(let B of tU()){let I=await VO(B);if(I)return I}return null}async function fO(B){let I=JSON.stringify(B),C=tU()[0],g=Bun.spawn(["security","add-generic-password","-U","-s",sU,"-a",C,"-w",I],{stdout:"pipe",stderr:"pipe"}),F=await g.exited;if(F!==0){let G=await new Response(g.stderr).text();throw Error(`security add-generic-password failed (${F}): ${G.trim()}`)}}async function hO(){try{let B=await import("fs/promises");return JSON.parse(await B.readFile(A7,"utf-8"))}catch{return null}}async function bO(B){let I=await import("fs/promises");await I.mkdir(eU,{recursive:!0}),await I.writeFile(A7,JSON.stringify(B,null,2)+`
10
10
  `,{mode:384})}async function jO(){let B=B7?await mO():await hO(),I;try{let C=await import("fs/promises"),g=JSON.parse(await C.readFile(XN,"utf-8"));if(g.oauthAccount&&typeof g.oauthAccount==="object")I=g.oauthAccount}catch{}return{credentials:B??void 0,oauthAccount:I}}async function xO(B){if(B.credentials)if(B7)await fO(B.credentials);else await bO(B.credentials);if(B.oauthAccount){let I=await import("fs/promises"),C={};try{C=JSON.parse(await I.readFile(XN,"utf-8"))}catch{}C.oauthAccount=B.oauthAccount,await I.writeFile(XN,JSON.stringify(C,null,2)+`
11
- `)}}var sU="Claude Code-credentials",eU,A7,XN,B7;var jw=kB(()=>{eU=qN(rU(),".claude"),A7=qN(eU,".credentials.json"),XN=qN(rU(),".claude.json"),B7=_O()==="darwin"});var Q7={};wE(Q7,{updateProvider:()=>pg,setDefaultProvider:()=>zN,setClientProvider:()=>lF,resolveXiaomiBaseUrl:()=>YN,resolveProviderContext:()=>kI,migrateIfNeeded:()=>SN,mergeDetectedProviders:()=>oF,isProviderCompatible:()=>E2,getProvidersForClient:()=>tE,getProviders:()=>SI,getProvider:()=>pO,getModelChoices:()=>cF,getDefaultSupportedClients:()=>cI,getDefaultProvider:()=>lI,getDefaultModel:()=>I2,getDefaultBaseUrl:()=>KN,getClientProvider:()=>eE,fixupProviders:()=>kN,detectProviders:()=>aF,deleteProvider:()=>ON,addProvider:()=>xg,XIAOMI_TOKEN_PLAN_URL:()=>lU,XIAOMI_ANTHROPIC_URL:()=>WN,PROVIDER_TYPE_NAMES:()=>D0,DEEPSEEK_ANTHROPIC_URL:()=>RN});async function SI(){return(await QB()).providers??[]}async function pO(B){return(await SI()).find((C)=>C.id===B)}async function lI(){let B=await QB(),I=B.providers??[];if(I.length===0)return;if(B.defaultProviderId){let C=I.find((g)=>g.id===B.defaultProviderId);if(C)return C}return I[0]}async function tE(B){return(await SI()).filter((g)=>E2(g,B)).sort((g,F)=>{let G=g.lastUsedAt?new Date(g.lastUsedAt).getTime():0,H=F.lastUsedAt?new Date(F.lastUsedAt).getTime():0;if(G!==H)return H-G;return new Date(F.createdAt).getTime()-new Date(g.createdAt).getTime()})}async function xg(B){let I=await QB(),C={...B,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(I.providers=[...I.providers??[],C],!I.defaultProviderId)I.defaultProviderId=C.id;return await RI(I),C}async function pg(B,I){let C=await QB(),g=C.providers??[],F=g.findIndex((G)=>G.id===B);if(F===-1)return;g[F]={...g[F],...I},C.providers=g,await RI(C)}async function ON(B){let I=await QB();if((I.providers??[]).find((g)=>g.id===B)?.builtin)return;if(I.providers=(I.providers??[]).filter((g)=>g.id!==B),I.defaultProviderId===B)I.defaultProviderId=I.providers[0]?.id;if(I.clientProviderMap){for(let[g,F]of Object.entries(I.clientProviderMap))if(F===B)delete I.clientProviderMap[g]}await RI(I)}async function zN(B){let I=await QB();if(!(I.providers??[]).some((g)=>g.id===B))return;I.defaultProviderId=B,await RI(I)}async function eE(B){let I=await QB(),C=I.clientProviderMap?.[B];if(C){let g=(I.providers??[]).find((F)=>F.id===C);if(g&&E2(g,B))return g}return}async function lF(B,I){let C=await QB();C.clientProviderMap={...C.clientProviderMap,[B]:I};let g=C.providers??[],F=g.findIndex((G)=>G.id===I);if(F!==-1)g[F]={...g[F],lastUsedAt:new Date().toISOString()},C.providers=g;await RI(C)}function kI(B){return{type:B.type,apiKey:B.apiKey,baseUrl:B.baseUrl,authData:B.authData,model:B.model,modelContextWindow:B.modelContextWindow}}async function iO(){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 g=JSON.parse(I.trim());if(!g.loggedIn||g.authMethod!=="claude.ai")return null;let F=g.subscriptionType||"pro",G=g.email||"",H=`Claude ${F.charAt(0).toUpperCase()+F.slice(1)}${G?` (${G})`:""}`,{readClaudeAuth:M}=await Promise.resolve().then(() => (jw(),bw)),L=await M(),u=L.credentials||L.oauthAccount?{credentials:L.credentials,oauthAccount:L.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:H,type:"claude-subscription",supportedClients:cI("claude-subscription"),createdAt:new Date().toISOString(),email:G,subscriptionType:F,authData:u}}catch{return null}}async function dO(){try{let{homedir:B}=await import("os"),{join:I}=await import("path"),C=await import("fs/promises"),g=I(B(),".codex","auth.json"),F=JSON.parse(await C.readFile(g,"utf-8"));if(F.auth_mode!=="chatgpt"||!F.tokens?.access_token)return null;let G="";try{G=JSON.parse(atob(F.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:F,email:G}}catch{return null}}async function cO(){let B=await dO();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:cI("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:cI("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function aF(){let B=[],[I,C]=await Promise.all([iO(),cO()]);if(I)B.push(I);if(C)B.push(C);return B}async function oF(B){let I=await QB(),C=I.providers??[],g=new Set(C.map((G)=>`${G.type}:${G.email||""}`)),F=0;for(let G of B){let H=`${G.type}:${G.email||""}`;if(!g.has(H))C.push(G),g.add(H),F++;else if(G.authData){let M=C.find((L)=>L.type===G.type&&L.email===G.email);if(M)M.authData=G.authData}}if(F>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await RI(I)}return F}async function SN(){let B=await QB();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:sQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await RI(B),!0}async function kN(){let B=await QB(),I=B.providers??[],C=!1;for(let g of I)if(g.type==="tako"&&!g.builtin)g.builtin=!0,C=!0;if(B.apiKey&&!I.some((g)=>g.type==="tako")){if(I.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:sQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0}),!B.defaultProviderId)B.defaultProviderId=I[I.length-1].id;C=!0}if(C)B.providers=I,await RI(B)}var w0=kB(()=>{cB();iC();iC()});import{readFileSync as Jz,writeFileSync as Mz,mkdirSync as Lz}from"fs";import{join as w7}from"path";import{homedir as G7}from"os";function uz(){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 Kz(){try{let B=Jz(N7,"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>Uz)return null;return I.region}catch{return null}}function F7(B){try{Lz(w7(G7(),".tako"),{recursive:!0}),Mz(N7,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function Rz(){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 Wz(){if(xw)return xw;return xw=(async()=>{let I=[Yz,Zz,Xz,qz].map((C)=>C().then((g)=>g?g:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((g,F)=>setTimeout(()=>F(Error("net-timeout")),1200))])}catch{return"cn"}})(),xw}async function AC(){if(g2)return g2;let B=uz();if(B)return g2=B,B;let I=Kz();if(I)return g2=I,I;let C=Rz();if(C)return g2=C,F7(C),C;let g=await Wz();return g2=g,F7(g),g}async function Yz(){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 Zz(){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 Xz(){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 qz(){let B=[async()=>{let I=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.json(),g=C?.data?.location;if(Array.isArray(g)&&g[0]==="\u4E2D\u56FD")return"cn";let F=C?.data?.country_code;return F==="CN"?"cn":F?"global":null},async()=>{let I=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.text();try{let g=JSON.parse(C.trim());if(g.proCode&&/^\d{6}$/.test(g.proCode))return"cn"}catch{}return null},async()=>{let I=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!I.ok)return null;let C=(await I.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(C))return"cn";return null}];try{return await Promise.any(B.map((I)=>I().then((C)=>C??Promise.reject())))}catch{return null}}async function Oz(){let B=await AC();return pw[B]}async function G0(){return(await Oz()).npm}function H7(){return"curl -fsSL https://bun.sh/install | bash"}async function zz(){let B=pw.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let g=(await I.json()).map((F)=>F.name.replace(/\/$/,"")).filter((F)=>/^bun-v\d+\.\d+\.\d+$/.test(F)).sort((F,G)=>{let H=F.replace("bun-v","").split(".").map(Number),M=G.replace("bun-v","").split(".").map(Number);for(let L=0;L<3;L++)if(H[L]!==M[L])return M[L]-H[L];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function J7(){let B=pw.cn.bunBinary,I=await zz(),g={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",F=process.arch==="arm64"?"aarch64":"x64",G=`bun-${g}-${F}`;return`${B}/${I}/${G}.zip`}async function M7(){let B=await AC(),I=pw[B];if(B==="cn")iA.info(`${bA("region.usingChinaMirror")} npm: ${I.npm}`);else iA.info(bA("region.usingGlobalMirror"))}var g2=null,xw=null,N7,Uz=2592000000,pw;var nF=kB(()=>{YQ();sE();N7=w7(G7(),".tako","region.json"),pw={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Sz=class{constructor(B){this.baseUrl=B.baseUrl,this.headers={"Content-Type":"application/json",...B.defaultHeaders},this.maxRetries=B.maxRetries??3,this.initialRetryDelay=B.initialRetryDelay??500}async resolveHeaders(){let B={};for(let[I,C]of Object.entries(this.headers)){let g=await C;g!==null&&(B[I]=g)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,g){try{let F=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(F.status===401)return null;if(F.status!==200&&F.status!==202)throw Error(`HTTP error! status: ${F.status}`);let G=await F.text();return G?JSON.parse(G):null}catch(F){if(g<this.maxRetries){let G=this.initialRetryDelay*2**g;return await new Promise((H)=>setTimeout(H,G)),this.post(B,I,C,g+1)}return console.error("Max retries reached:",F),null}}async fetch(B,I,C={}){let g=`${this.baseUrl}${B}`;return this.post(g,I,C,0)}},L7=class{constructor(B){this.groups=[],this.queue=[],this.options=B;let I={"openpanel-client-id":B.clientId};B.clientSecret&&(I["openpanel-client-secret"]=B.clientSecret),I["openpanel-sdk-name"]=B.sdk||"node",I["openpanel-sdk-version"]=B.sdkVersion||"1.3.1",this.api=new Sz({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(B){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||B.type==="replay"&&!this.sessionId)}addQueue(B){B.type==="track"&&(B.payload.properties={...B.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(B)}async send(B){if(this.options.filter&&!this.options.filter(B))return Promise.resolve();if(this.shouldQueue(B))return this.addQueue(B),Promise.resolve();let I=await this.api.fetch("/track",B,{keepalive:B.type!=="replay"});this.deviceId=I?.deviceId;let C=!!this.sessionId;return this.sessionId=I?.sessionId,!C&&this.sessionId&&this.flush(),I}setGlobalProperties(B){this.global={...this.global,...B}}track(B,I){this.log("track event",B,I);let{groups:C,profileId:g,...F}=I??{},G=[...new Set([...this.groups,...C??[]])];return this.send({type:"track",payload:{name:B,profileId:g??this.profileId,groups:G.length>0?G:void 0,properties:{...this.global??{},...F}}})}identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),B.profileId&&Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}upsertGroup(B){return this.log("upsert group",B),this.send({type:"group",payload:B})}setGroup(B){return this.log("set group",B),this.groups.includes(B)||(this.groups=[...this.groups,B]),this.send({type:"assign_group",payload:{groupIds:[B],profileId:this.profileId}})}setGroups(B){return this.log("set groups",B),this.groups=[...new Set([...this.groups,...B])],this.send({type:"assign_group",payload:{groupIds:B,profileId:this.profileId}})}alias(B){}increment(B){return this.send({type:"increment",payload:B})}decrement(B){return this.send({type:"decrement",payload:B})}revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(B){if(B.type==="replay")return B.payload;if(B.type==="track"){let I="groups"in B.payload?B.payload.groups??[]:[],C=[...new Set([...this.groups,...I])];return{...B.payload,profileId:B.payload.profileId??this.profileId,groups:C.length>0?C:void 0}}return B.type==="identify"||B.type==="increment"||B.type==="decrement"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.type==="assign_group"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.payload}flush(){let B=[];for(let I of this.queue){if(this.shouldQueue(I)){B.push(I);continue}let C=this.buildFlushPayload(I);this.send({...I,payload:C})}this.queue=B}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var U7=()=>{};function u7(){if(!D2)D2=new L7({clientId:kz,clientSecret:yz,apiUrl:$z});return D2}function K7(B,I,C){let g=u7().track(B,{profileId:I,...C}).catch(()=>{});iw.push(g)}function R7(B,I){let{email:C,...g}=I,F=u7().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});iw.push(F)}async function W7(){if(await Promise.allSettled(iw),iw.length=0,D2){try{D2.flush()}catch{}D2=null}}var kz="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",yz="sec_1e0ea34016bc3a5f8ef5",$z="https://op.shiroha.tech/api",D2=null,iw;var Y7=kB(()=>{U7();iw=[]});function Z7(){return{cli_version:Tz,platform:process.platform,arch:process.arch,locale:F0(),node_version:process.version}}function X7(B){return Bun.hash(B).toString(16).slice(0,8)}var Tz="0.3.24";var yN=kB(()=>{YQ()});async function q7(){if(F2!==null)return F2;try{return F2=(await QB()).telemetryEnabled!==!1,F2}catch{return F2=!1,!1}}async function O7(){try{let B=await QB();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,g=C?I.find((F)=>F.id===C):I[0];if(g){if(g.apiId)return g.apiId;if(g.email)return g.email;return g.id}return"anonymous"}catch{return"anonymous"}}async function _0(){if($N)return;try{if(!await q7())return;let B=await QB(),I=await O7();if(I==="anonymous")return;let g=(B.providers??[]).find((G)=>G.email)?.email,F=await AC();R7(I,{...g?{email:g}:{},region:F,locale:F0(),first_seen_version:vz,platform:process.platform,arch:process.arch}),$N=!0}catch{}}function fQ(B,I){_z(B,I).catch(()=>{})}async function _z(B,I){try{if(!await q7())return;let C=await O7();K7(B,C,{...Z7(),...I})}catch{}}async function rF(){await W7()}function QC(){F2=null,$N=!1}var vz="0.3.24",$N=!1,F2=null;var JE=kB(()=>{Y7();cB();nF();YQ();yN();yN()});function fz(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 lC(B,I,C){let g=Date.now(),F={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},G=[],H=()=>{F.elapsedSec=Math.floor((Date.now()-g)/1000),C(fz(I,F))};H();let M=setInterval(H,1000),L=(W)=>{if(!W)return;if(G.push(W),Pz.test(W))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(z7.test(W)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let q=W.match(z7);if(q)F.pkgCount=parseInt(q[1],10)}else if(Vz.test(W))F.phase="\u5199\u5165 lockfile";else if(mz.test(W))F.phase="\u5B8C\u6210";H()},u=async(W)=>{if(!W)return;let q=W.getReader(),K=new TextDecoder,z="";try{while(!0){let{done:y,value:S}=await q.read();if(y)break;z+=K.decode(S,{stream:!0}).replace(/\r/g,"");let k=z.split(`
11
+ `)}}var sU="Claude Code-credentials",eU,A7,XN,B7;var jw=kB(()=>{eU=qN(rU(),".claude"),A7=qN(eU,".credentials.json"),XN=qN(rU(),".claude.json"),B7=_O()==="darwin"});var Q7={};wE(Q7,{updateProvider:()=>pg,setDefaultProvider:()=>zN,setClientProvider:()=>lF,resolveXiaomiBaseUrl:()=>YN,resolveProviderContext:()=>kI,migrateIfNeeded:()=>SN,mergeDetectedProviders:()=>oF,isProviderCompatible:()=>E2,getProvidersForClient:()=>tE,getProviders:()=>SI,getProvider:()=>pO,getModelChoices:()=>cF,getDefaultSupportedClients:()=>cI,getDefaultProvider:()=>lI,getDefaultModel:()=>I2,getDefaultBaseUrl:()=>KN,getClientProvider:()=>eE,fixupProviders:()=>kN,detectProviders:()=>aF,deleteProvider:()=>ON,addProvider:()=>xg,XIAOMI_TOKEN_PLAN_URL:()=>lU,XIAOMI_ANTHROPIC_URL:()=>WN,PROVIDER_TYPE_NAMES:()=>D0,DEEPSEEK_ANTHROPIC_URL:()=>RN});async function SI(){return(await QB()).providers??[]}async function pO(B){return(await SI()).find((C)=>C.id===B)}async function lI(){let B=await QB(),I=B.providers??[];if(I.length===0)return;if(B.defaultProviderId){let C=I.find((g)=>g.id===B.defaultProviderId);if(C)return C}return I[0]}async function tE(B){return(await SI()).filter((g)=>E2(g,B)).sort((g,F)=>{let G=g.lastUsedAt?new Date(g.lastUsedAt).getTime():0,H=F.lastUsedAt?new Date(F.lastUsedAt).getTime():0;if(G!==H)return H-G;return new Date(F.createdAt).getTime()-new Date(g.createdAt).getTime()})}async function xg(B){let I=await QB(),C={...B,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(I.providers=[...I.providers??[],C],!I.defaultProviderId)I.defaultProviderId=C.id;return await RI(I),C}async function pg(B,I){let C=await QB(),g=C.providers??[],F=g.findIndex((G)=>G.id===B);if(F===-1)return;g[F]={...g[F],...I},C.providers=g,await RI(C)}async function ON(B){let I=await QB();if((I.providers??[]).find((g)=>g.id===B)?.builtin)return;if(I.providers=(I.providers??[]).filter((g)=>g.id!==B),I.defaultProviderId===B)I.defaultProviderId=I.providers[0]?.id;if(I.clientProviderMap){for(let[g,F]of Object.entries(I.clientProviderMap))if(F===B)delete I.clientProviderMap[g]}await RI(I)}async function zN(B){let I=await QB();if(!(I.providers??[]).some((g)=>g.id===B))return;I.defaultProviderId=B,await RI(I)}async function eE(B){let I=await QB(),C=I.clientProviderMap?.[B];if(C){let g=(I.providers??[]).find((F)=>F.id===C);if(g&&E2(g,B))return g}return}async function lF(B,I){let C=await QB();C.clientProviderMap={...C.clientProviderMap,[B]:I};let g=C.providers??[],F=g.findIndex((G)=>G.id===I);if(F!==-1)g[F]={...g[F],lastUsedAt:new Date().toISOString()},C.providers=g;await RI(C)}function kI(B){return{type:B.type,apiKey:B.apiKey,baseUrl:B.baseUrl,authData:B.authData,model:B.model,modelContextWindow:B.modelContextWindow}}async function iO(){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 g=JSON.parse(I.trim());if(!g.loggedIn||g.authMethod!=="claude.ai")return null;let F=g.subscriptionType||"pro",G=g.email||"",H=`Claude ${F.charAt(0).toUpperCase()+F.slice(1)}${G?` (${G})`:""}`,{readClaudeAuth:M}=await Promise.resolve().then(() => (jw(),bw)),L=await M(),u=L.credentials||L.oauthAccount?{credentials:L.credentials,oauthAccount:L.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:H,type:"claude-subscription",supportedClients:cI("claude-subscription"),createdAt:new Date().toISOString(),email:G,subscriptionType:F,authData:u}}catch{return null}}async function dO(){try{let{homedir:B}=await import("os"),{join:I}=await import("path"),C=await import("fs/promises"),g=I(B(),".codex","auth.json"),F=JSON.parse(await C.readFile(g,"utf-8"));if(F.auth_mode!=="chatgpt"||!F.tokens?.access_token)return null;let G="";try{G=JSON.parse(atob(F.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:F,email:G}}catch{return null}}async function cO(){let B=await dO();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:cI("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:cI("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function aF(){let B=[],[I,C]=await Promise.all([iO(),cO()]);if(I)B.push(I);if(C)B.push(C);return B}async function oF(B){let I=await QB(),C=I.providers??[],g=new Set(C.map((G)=>`${G.type}:${G.email||""}`)),F=0;for(let G of B){let H=`${G.type}:${G.email||""}`;if(!g.has(H))C.push(G),g.add(H),F++;else if(G.authData){let M=C.find((L)=>L.type===G.type&&L.email===G.email);if(M)M.authData=G.authData}}if(F>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await RI(I)}return F}async function SN(){let B=await QB();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:sQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await RI(B),!0}async function kN(){let B=await QB(),I=B.providers??[],C=!1;for(let g of I)if(g.type==="tako"&&!g.builtin)g.builtin=!0,C=!0;if(B.apiKey&&!I.some((g)=>g.type==="tako")){if(I.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:B.apiKey,baseUrl:sQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0}),!B.defaultProviderId)B.defaultProviderId=I[I.length-1].id;C=!0}if(C)B.providers=I,await RI(B)}var w0=kB(()=>{cB();iC();iC()});import{readFileSync as Jz,writeFileSync as Mz,mkdirSync as Lz}from"fs";import{join as w7}from"path";import{homedir as G7}from"os";function uz(){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 Kz(){try{let B=Jz(N7,"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>Uz)return null;return I.region}catch{return null}}function F7(B){try{Lz(w7(G7(),".tako"),{recursive:!0}),Mz(N7,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function Rz(){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 Wz(){if(xw)return xw;return xw=(async()=>{let I=[Yz,Zz,Xz,qz].map((C)=>C().then((g)=>g?g:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(I),new Promise((g,F)=>setTimeout(()=>F(Error("net-timeout")),1200))])}catch{return"cn"}})(),xw}async function AC(){if(g2)return g2;let B=uz();if(B)return g2=B,B;let I=Kz();if(I)return g2=I,I;let C=Rz();if(C)return g2=C,F7(C),C;let g=await Wz();return g2=g,F7(g),g}async function Yz(){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 Zz(){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 Xz(){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 qz(){let B=[async()=>{let I=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.json(),g=C?.data?.location;if(Array.isArray(g)&&g[0]==="\u4E2D\u56FD")return"cn";let F=C?.data?.country_code;return F==="CN"?"cn":F?"global":null},async()=>{let I=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!I.ok)return null;let C=await I.text();try{let g=JSON.parse(C.trim());if(g.proCode&&/^\d{6}$/.test(g.proCode))return"cn"}catch{}return null},async()=>{let I=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!I.ok)return null;let C=(await I.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(C))return"cn";return null}];try{return await Promise.any(B.map((I)=>I().then((C)=>C??Promise.reject())))}catch{return null}}async function Oz(){let B=await AC();return pw[B]}async function G0(){return(await Oz()).npm}function H7(){return"curl -fsSL https://bun.sh/install | bash"}async function zz(){let B=pw.cn.bunBinary,I=await fetch(`${B}/`,{signal:AbortSignal.timeout(1e4)});if(!I.ok)throw Error(`Failed to fetch bun versions: ${I.status}`);let g=(await I.json()).map((F)=>F.name.replace(/\/$/,"")).filter((F)=>/^bun-v\d+\.\d+\.\d+$/.test(F)).sort((F,G)=>{let H=F.replace("bun-v","").split(".").map(Number),M=G.replace("bun-v","").split(".").map(Number);for(let L=0;L<3;L++)if(H[L]!==M[L])return M[L]-H[L];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function J7(){let B=pw.cn.bunBinary,I=await zz(),g={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",F=process.arch==="arm64"?"aarch64":"x64",G=`bun-${g}-${F}`;return`${B}/${I}/${G}.zip`}async function M7(){let B=await AC(),I=pw[B];if(B==="cn")iA.info(`${bA("region.usingChinaMirror")} npm: ${I.npm}`);else iA.info(bA("region.usingGlobalMirror"))}var g2=null,xw=null,N7,Uz=2592000000,pw;var nF=kB(()=>{YQ();sE();N7=w7(G7(),".tako","region.json"),pw={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Sz=class{constructor(B){this.baseUrl=B.baseUrl,this.headers={"Content-Type":"application/json",...B.defaultHeaders},this.maxRetries=B.maxRetries??3,this.initialRetryDelay=B.initialRetryDelay??500}async resolveHeaders(){let B={};for(let[I,C]of Object.entries(this.headers)){let g=await C;g!==null&&(B[I]=g)}return B}addHeader(B,I){this.headers[B]=I}async post(B,I,C,g){try{let F=await fetch(B,{method:"POST",headers:await this.resolveHeaders(),body:I?JSON.stringify(I??{}):void 0,keepalive:!0,...C});if(F.status===401)return null;if(F.status!==200&&F.status!==202)throw Error(`HTTP error! status: ${F.status}`);let G=await F.text();return G?JSON.parse(G):null}catch(F){if(g<this.maxRetries){let G=this.initialRetryDelay*2**g;return await new Promise((H)=>setTimeout(H,G)),this.post(B,I,C,g+1)}return console.error("Max retries reached:",F),null}}async fetch(B,I,C={}){let g=`${this.baseUrl}${B}`;return this.post(g,I,C,0)}},L7=class{constructor(B){this.groups=[],this.queue=[],this.options=B;let I={"openpanel-client-id":B.clientId};B.clientSecret&&(I["openpanel-client-secret"]=B.clientSecret),I["openpanel-sdk-name"]=B.sdk||"node",I["openpanel-sdk-version"]=B.sdkVersion||"1.3.1",this.api=new Sz({baseUrl:B.apiUrl||"https://api.openpanel.dev",defaultHeaders:I})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(B){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||B.type==="replay"&&!this.sessionId)}addQueue(B){B.type==="track"&&(B.payload.properties={...B.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(B)}async send(B){if(this.options.filter&&!this.options.filter(B))return Promise.resolve();if(this.shouldQueue(B))return this.addQueue(B),Promise.resolve();let I=await this.api.fetch("/track",B,{keepalive:B.type!=="replay"});this.deviceId=I?.deviceId;let C=!!this.sessionId;return this.sessionId=I?.sessionId,!C&&this.sessionId&&this.flush(),I}setGlobalProperties(B){this.global={...this.global,...B}}track(B,I){this.log("track event",B,I);let{groups:C,profileId:g,...F}=I??{},G=[...new Set([...this.groups,...C??[]])];return this.send({type:"track",payload:{name:B,profileId:g??this.profileId,groups:G.length>0?G:void 0,properties:{...this.global??{},...F}}})}identify(B){if(this.log("identify user",B),B.profileId&&(this.profileId=B.profileId,this.flush()),B.profileId&&Object.keys(B).length>1)return this.send({type:"identify",payload:{...B,properties:{...this.global,...B.properties}}})}upsertGroup(B){return this.log("upsert group",B),this.send({type:"group",payload:B})}setGroup(B){return this.log("set group",B),this.groups.includes(B)||(this.groups=[...this.groups,B]),this.send({type:"assign_group",payload:{groupIds:[B],profileId:this.profileId}})}setGroups(B){return this.log("set groups",B),this.groups=[...new Set([...this.groups,...B])],this.send({type:"assign_group",payload:{groupIds:B,profileId:this.profileId}})}alias(B){}increment(B){return this.send({type:"increment",payload:B})}decrement(B){return this.send({type:"decrement",payload:B})}revenue(B,I){let C=I?.deviceId;return delete I?.deviceId,this.track("revenue",{...I??{},...C?{__deviceId:C}:{},__revenue:B})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(B){if(B.type==="replay")return B.payload;if(B.type==="track"){let I="groups"in B.payload?B.payload.groups??[]:[],C=[...new Set([...this.groups,...I])];return{...B.payload,profileId:B.payload.profileId??this.profileId,groups:C.length>0?C:void 0}}return B.type==="identify"||B.type==="increment"||B.type==="decrement"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.type==="assign_group"?{...B.payload,profileId:B.payload.profileId??this.profileId}:B.payload}flush(){let B=[];for(let I of this.queue){if(this.shouldQueue(I)){B.push(I);continue}let C=this.buildFlushPayload(I);this.send({...I,payload:C})}this.queue=B}log(...B){this.options.debug&&console.log("[OpenPanel.dev]",...B)}};var U7=()=>{};function u7(){if(!D2)D2=new L7({clientId:kz,clientSecret:yz,apiUrl:$z});return D2}function K7(B,I,C){let g=u7().track(B,{profileId:I,...C}).catch(()=>{});iw.push(g)}function R7(B,I){let{email:C,...g}=I,F=u7().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});iw.push(F)}async function W7(){if(await Promise.allSettled(iw),iw.length=0,D2){try{D2.flush()}catch{}D2=null}}var kz="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",yz="sec_1e0ea34016bc3a5f8ef5",$z="https://op.shiroha.tech/api",D2=null,iw;var Y7=kB(()=>{U7();iw=[]});function Z7(){return{cli_version:Tz,platform:process.platform,arch:process.arch,locale:F0(),node_version:process.version}}function X7(B){return Bun.hash(B).toString(16).slice(0,8)}var Tz="0.3.25";var yN=kB(()=>{YQ()});async function q7(){if(F2!==null)return F2;try{return F2=(await QB()).telemetryEnabled!==!1,F2}catch{return F2=!1,!1}}async function O7(){try{let B=await QB();if(B.apiId)return B.apiId;let I=B.providers??[],C=B.defaultProviderId,g=C?I.find((F)=>F.id===C):I[0];if(g){if(g.apiId)return g.apiId;if(g.email)return g.email;return g.id}return"anonymous"}catch{return"anonymous"}}async function _0(){if($N)return;try{if(!await q7())return;let B=await QB(),I=await O7();if(I==="anonymous")return;let g=(B.providers??[]).find((G)=>G.email)?.email,F=await AC();R7(I,{...g?{email:g}:{},region:F,locale:F0(),first_seen_version:vz,platform:process.platform,arch:process.arch}),$N=!0}catch{}}function fQ(B,I){_z(B,I).catch(()=>{})}async function _z(B,I){try{if(!await q7())return;let C=await O7();K7(B,C,{...Z7(),...I})}catch{}}async function rF(){await W7()}function QC(){F2=null,$N=!1}var vz="0.3.25",$N=!1,F2=null;var JE=kB(()=>{Y7();cB();nF();YQ();yN();yN()});function fz(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 lC(B,I,C){let g=Date.now(),F={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},G=[],H=()=>{F.elapsedSec=Math.floor((Date.now()-g)/1000),C(fz(I,F))};H();let M=setInterval(H,1000),L=(W)=>{if(!W)return;if(G.push(W),Pz.test(W))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(z7.test(W)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let q=W.match(z7);if(q)F.pkgCount=parseInt(q[1],10)}else if(Vz.test(W))F.phase="\u5199\u5165 lockfile";else if(mz.test(W))F.phase="\u5B8C\u6210";H()},u=async(W)=>{if(!W)return;let q=W.getReader(),K=new TextDecoder,z="";try{while(!0){let{done:y,value:S}=await q.read();if(y)break;z+=K.decode(S,{stream:!0}).replace(/\r/g,"");let k=z.split(`
12
12
  `);z=k.pop()??"";for(let i of k)L(i)}if(z)L(z)}finally{q.releaseLock()}};try{await Promise.all([u(B.stderr),u(B.stdout)])}finally{clearInterval(M)}return G.join(`
13
13
  `)}var Pz,z7,Vz,mz;var dw=kB(()=>{Pz=/^Resolving dependencies/,z7=/^Resolved, downloaded and extracted \[(\d+)\]/,Vz=/^Saved lockfile/,mz=/^(\d+) packages? installed/});function hz(B){return B.replace(/\r/g,`
14
14
  `).replace(/\n{3,}/g,`
@@ -738,12 +738,12 @@ ${H}`:G||H}function gN(B,{maxDepth:I=1000,numbersAsFloat:C=!1}={}){if(pF(B)!=="o
738
738
  `),{args:["--setting-sources","project,local","--settings",g],cleanedFields:M,settingsPath:g}}async function Az(B){let{readClaudeAuth:I,writeClaudeAuth:C}=await Promise.resolve().then(() => (jw(),bw)),{getProviders:g,updateProvider:F}=await Promise.resolve().then(() => (w0(),Q7)),G=B.authData?.credentials,H=B.authData?.oauthAccount;if(!G){iA.warn(bA("claudeCode.subscriptionMissingAuth"));return}let M=await I(),L=M.oauthAccount?.emailAddress;if(L&&M.credentials){let q=(await g()).find((K)=>K.type==="claude-subscription"&&K.email===L);if(q){let K={credentials:M.credentials,oauthAccount:M.oauthAccount};if(JSON.stringify(q.authData)!==JSON.stringify(K))await F(q.id,{authData:K})}else if(L!==H?.emailAddress)iA.warn(bA("claudeCode.unknownCurrentAccount",{email:L}))}await C({credentials:G,oauthAccount:H});let u=H?.emailAddress||"?";iA.info(bA("claudeCode.subscriptionSwitched",{email:u}))}var Bz={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?C2(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:RN,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"xiaomi":return{...I,ANTHROPIC_BASE_URL:YN(B.apiKey),ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"custom":return{...I,ANTHROPIC_BASE_URL:B.baseUrl,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};default:return I}},async setupConfigFiles(B,I,C){let g=[];if(C?.forLaunch){let F=await eO();if(F)g=F.args}if(B.type==="claude-subscription")await Az(B);return g.length>0?{args:g}:void 0},launchOptions:(B)=>wz(B)},Qz=[{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"]}],Iz=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],Ez=["deepseek-v4-flash","deepseek-v4-pro"],Cz=["mimo-v2.5-pro"];function gz(B){let I=B.match(/^claude-(haiku|sonnet|opus)-(\d{1,2})-(\d{1,2})$/);if(I)return`${I[1].charAt(0).toUpperCase()+I[1].slice(1)} ${I[2]}.${I[3]}`;return zI.find((g)=>g.id===B)?.displayName??B}function C2(B){if(!B)return B;if(B.endsWith("[1m]")||/:1m$/i.test(B))return B;if(!/^(claude|deepseek|kimi|mimo)[-_]/i.test(B))return B;let I=zI.find((C)=>C.id===B);if(!I||I.contextWindow<1e6)return B;return`${B}[1m]`}function I7(B){if(B>=1e6)return"1M";if(B>0)return`${Math.round(B/1000)}k`;return"?"}function Dz(B){if(!B.baseUrl)return null;let I=pC(B.baseUrl,"claude");if(!I||I.length===0)return null;let C=dF(I);if(C.length===0)return null;return C.map((g)=>{let F=C2(g.id);return{id:`model-${g.id}`,label:{en:g.displayName,zh:g.displayName},shortLabel:g.displayName,description:{en:`Use ${g.displayName} (${I7(g.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${g.displayName}\uFF08\u4E0A\u4E0B\u6587 ${I7(g.contextWindow)}\uFF09`},flag:`--model ${F}`,args:[],envVars:{ANTHROPIC_MODEL:F},group:"model"}})}function Fz(B){if(HE(),B&&(B.type==="tako"||B.type==="custom")){let g=Dz(B);if(g)return g}let I=B?.type==="deepseek"?Ez:B?.type==="xiaomi"?Cz:Iz,C=[];for(let g of I){let G=zI.find((u)=>u.id===g)?.contextWindow??0,H=G>=1e6?"1M":G>0?`${Math.round(G/1000)}k`:"?",M=gz(g),L=C2(g);C.push({id:`model-${g}`,label:{en:M,zh:M},shortLabel:M,description:{en:`Use ${M} (${H} ctx)`,zh:`\u4F7F\u7528 ${M}\uFF08\u4E0A\u4E0B\u6587 ${H}\uFF09`},flag:`--model ${L}`,args:[],envVars:{ANTHROPIC_MODEL:L},group:"model"})}return C}function wz(B){return[...Qz,...Fz(B)]}B2(Bz);WI();import{homedir as Gz}from"os";import{join as g7}from"path";var D7=g7(Gz(),".gemini"),C7=g7(D7,"settings.json");async function Nz(){let B=await import("fs/promises");try{await B.mkdir(D7,{recursive:!0})}catch{}let I={};try{I=JSON.parse(await B.readFile(C7,"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(C7,JSON.stringify(I,null,2)+`
739
739
  `)}var Hz={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:Nz};B2(Hz);WI();sE();nF();cB();YQ();JE();dw();import{join as P0}from"path";function S7(B,I){return["@echo off",'set "TAKO_WINDOWS_HANDOFF_FILE=%TEMP%\\tako-handoff-%RANDOM%-%RANDOM%.ps1"','if exist "%TAKO_WINDOWS_HANDOFF_FILE%" del "%TAKO_WINDOWS_HANDOFF_FILE%" >nul 2>nul',`"${B}" "${I}" %*`,'set "TAKO_EXIT_CODE=%ERRORLEVEL%"','if not exist "%TAKO_WINDOWS_HANDOFF_FILE%" exit /b %TAKO_EXIT_CODE%','powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%TAKO_WINDOWS_HANDOFF_FILE%"',"exit /b %ERRORLEVEL%",""].join(`\r
740
740
  `)}function k7(B,I){return['$env:TAKO_WINDOWS_HANDOFF_FILE = Join-Path ([System.IO.Path]::GetTempPath()) ("tako-handoff-{0}-{1}.ps1" -f $PID, [System.Guid]::NewGuid().ToString("N"))',"Remove-Item -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE -Force -ErrorAction SilentlyContinue",`& "${B}" "${I}" @args`,"$code = $LASTEXITCODE","if (Test-Path -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE) {"," powershell.exe -NoProfile -ExecutionPolicy Bypass -File $env:TAKO_WINDOWS_HANDOFF_FILE"," exit $LASTEXITCODE","}","exit $code",""].join(`\r
741
- `)}var TN="tako-cli",sF="0.3.24";function bz(){return[FI,"update",TN,"--latest"]}function jz(){return[FI,"add",`${TN}@latest`]}function xz(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number);for(let F=0;F<3;F++){let G=C[F]||0,H=g[F]||0;if(G>H)return 1;if(G<H)return-1}return 0}async function pz(){try{let B=await G0(),I=await fetch(`${B}/${TN}/latest`,{signal:AbortSignal.timeout(5000)});if(!I.ok)return null;return(await I.json()).version||null}catch{return null}}async function iz(){let B=await pz();if(!B)return{hasUpdate:!1,currentVersion:sF};return{hasUpdate:xz(B,sF)>0,latestVersion:B,currentVersion:sF}}async function $7(){let B=await import("fs/promises"),I=P0(rB,"bin"),C=P0(I,"tako"),g=P0(v0,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32")await B.writeFile(P0(I,"tako.cmd"),S7(FI,g)),await B.writeFile(P0(I,"tako.ps1"),k7(FI,g));else{let G=`#!/bin/bash
741
+ `)}var TN="tako-cli",sF="0.3.25";function bz(){return[FI,"update",TN,"--latest"]}function jz(){return[FI,"add",`${TN}@latest`]}function xz(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number);for(let F=0;F<3;F++){let G=C[F]||0,H=g[F]||0;if(G>H)return 1;if(G<H)return-1}return 0}async function pz(){try{let B=await G0(),I=await fetch(`${B}/${TN}/latest`,{signal:AbortSignal.timeout(5000)});if(!I.ok)return null;return(await I.json()).version||null}catch{return null}}async function iz(){let B=await pz();if(!B)return{hasUpdate:!1,currentVersion:sF};return{hasUpdate:xz(B,sF)>0,latestVersion:B,currentVersion:sF}}async function $7(){let B=await import("fs/promises"),I=P0(rB,"bin"),C=P0(I,"tako"),g=P0(v0,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32")await B.writeFile(P0(I,"tako.cmd"),S7(FI,g)),await B.writeFile(P0(I,"tako.ps1"),k7(FI,g));else{let G=`#!/bin/bash
742
742
  exec "${FI}" "${g}" "$@"
743
743
  `;await B.writeFile(C,G,{mode:493})}}async function dz(B){let I=cC(),C=`\u6B63\u5728\u66F4\u65B0\u5230 v${B}`;I.start(C);try{let g=await G0(),F=await import("fs/promises");await F.mkdir(v0,{recursive:!0});let G=P0(v0,"package.json");try{await F.access(G)}catch{await F.writeFile(G,JSON.stringify({name:"tako-local",private:!0},null,2))}let H=Bun.spawn(bz(),{cwd:v0,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:g}}),M=await lC(H,C,(L)=>I.update(L));if(await H.exited,H.exitCode===0)return await $7(),fQ("cli_updated",{from_version:sF,to_version:B}),I.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${B}`),!0;else return I.stop(),iA.warn(`\u66F4\u65B0\u5931\u8D25: ${w2(M)}`),!1}catch(g){return I.stop(),iA.warn(`\u66F4\u65B0\u5931\u8D25: ${w2(g instanceof Error?g.message:void 0)}`),!1}}async function cz(){let B=await import("fs/promises"),I=P0(v0,"bun.lock");try{await B.unlink(I)}catch{}}async function lz(){let B=await import("fs/promises");try{let I=await G0();await B.mkdir(v0,{recursive:!0});let C=P0(v0,"package.json");try{await B.access(C)}catch{await B.writeFile(C,JSON.stringify({name:"tako-local",private:!0},null,2))}await cz();let g=Bun.spawn(jz(),{cwd:v0,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:I}});return await g.exited,g.exitCode===0}catch{return!1}}async function az(){let B=await import("fs/promises"),I=P0(rB,"bin"),C=P0(I,"tako"),g=P0(v0,"node_modules/tako-cli/dist/index.js");try{let F=await B.readFile(C,"utf-8");if(F.includes("bun run tako-cli")||F.includes("run tako-cli")){iA.info(bA("updater.migrating"));let G=!1;try{await B.access(g),G=!0}catch{G=!1}if(!G){let H=cC();if(H.start(bA("updater.installingLocally")),!await lz())return H.stop(bA("updater.migrationFailed")),!1;H.stop(bA("updater.installComplete"))}return await $7(),!0}}catch{}return!1}async function tF(){try{if(await az())iA.info(bA("updater.migrationComplete")),process.exit(0);let I=await iz();if(I.hasUpdate&&I.latestVersion){if(iA.warn(bA("updater.newVersionAvailable",{version:I.latestVersion,current:sF})),await dz(I.latestVersion))iA.info(bA("updater.pleaseRestart")),process.exit(0)}}catch{}}WI();G2();w0();cB();cB();import{homedir as CS}from"os";var gS=50,hN=3;async function bN(B){try{return(await(await import("fs/promises")).stat(B)).isDirectory()}catch{return!1}}async function j7(B,I,C){let g=await QB(),F=g.recentProjects||[],G=new Date().toISOString(),H=F.findIndex((L)=>L.path===B);if(H>=0){let L=F[H],u=L.clientUsage||{},W=u[I]||{count:0,lastAt:G};F[H]={...L,launchCount:L.launchCount+1,lastLaunchedAt:G,lastClientId:I,clientUsage:{...u,[I]:{count:W.count+1,lastAt:G,lastSelectedOptionIds:C??W.lastSelectedOptionIds}}}}else F.push({path:B,launchCount:1,lastLaunchedAt:G,lastClientId:I,clientUsage:{[I]:{count:1,lastAt:G,lastSelectedOptionIds:C}}});let M=F.sort((L,u)=>new Date(u.lastLaunchedAt).getTime()-new Date(L.lastLaunchedAt).getTime()).slice(0,gS);g.recentProjects=M,await RI(g)}async function lw(B){let C=(await QB()).recentProjects||[],g=process.cwd(),G=C.find((M)=>M.path===g)?.clientUsage?.[B]?.lastSelectedOptionIds;if(G)return G;return C.filter((M)=>M.path!==g&&M.clientUsage?.[B]?.lastSelectedOptionIds).sort((M,L)=>{let u=new Date(M.clientUsage[B].lastAt).getTime();return new Date(L.clientUsage[B].lastAt).getTime()-u})[0]?.clientUsage?.[B]?.lastSelectedOptionIds??[]}function DS(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 x7(B,I=hN,C=!0){let F=(await QB()).recentProjects||[],G=process.cwd(),M=F.filter((u)=>{if(C&&u.path===G)return!1;return u.clientUsage?.[B]||u.lastClientId===B}).map((u)=>({...u,lastUsedTime:DS(u,B)})).sort((u,W)=>W.lastUsedTime-u.lastUsedTime),L=[];for(let{lastUsedTime:u,...W}of M){if(L.length>=I)break;if(await bN(W.path))L.push(W)}return L}async function p7(){let I=(await QB()).recentProjects||[],C=process.cwd();return I.find((F)=>F.path===C)?.lastClientId||null}function jN(B,I=25){let C=CS(),g=B.startsWith(C)?"~"+B.slice(C.length):B;if(g.length>I){let G=g.split("/").pop()||"";if(G.length>I-4)g="..."+G.slice(-I+3);else g=`.../${G}`}return g}function i7(B){let{t:I}=(YQ(),jq(nU)),C=Date.now(),g=new Date(B).getTime(),F=C-g,G=Math.floor(F/60000),H=Math.floor(F/3600000),M=Math.floor(F/86400000),L=Math.floor(M/7),u=Math.floor(M/30);if(G<1)return I("time.justNow");if(G<60)return I("time.minutesAgo",{n:G});if(H<24)return I("time.hoursAgo",{n:H});if(M===1)return I("time.yesterday");if(M<7)return I("time.daysAgo",{n:M});if(M<30)return I("time.weeksAgo",{n:L});return I("time.monthsAgo",{n:u})}sE();YQ();JE();WI();cB();G2();var FS="\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h";function d7(B=process.stdin){try{if(B.removeAllListeners?.(),B.isTTY&&typeof B.setRawMode==="function")B.setRawMode(!1);B.pause?.()}catch{}}function c7(B=process.stdout){if(!B.isTTY||typeof B.write!=="function")return;try{B.write(FS)}catch{}}async function A1(B={}){let I=B.stdin??process.stdin,C=B.stdout??process.stdout,g=B.delayMs??30;d7(I),c7(C),await new Promise((F)=>setTimeout(F,g)),d7(I),c7(C)}import{writeFile as wS}from"fs/promises";var pN="TAKO_WINDOWS_HANDOFF_FILE",xN=new Uint8Array([239,187,191]);function B1(B){return`'${B.replace(/'/g,"''")}'`}function l7(B){if(B.length===0)return"@()";return`@(${B.map(B1).join(", ")})`}function GS(B){let I=new TextEncoder().encode(B),C=new Uint8Array(xN.length+I.length);return C.set(xN,0),C.set(I,xN.length),C}async function aw(B,I){await wS(B,GS(NS(I)))}function NS(B){let[I,...C]=B.command;if(!I)throw Error("handoff command is empty");let g=["$ErrorActionPreference = 'Stop'","$scriptPath = $PSCommandPath"];for(let[G,H]of Object.entries(B.env??{})){if(H===void 0)continue;if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(G))continue;g.push(`$env:${G} = ${B1(String(H))}`)}g.push("try { [Console]::InputEncoding = [System.Text.Encoding]::UTF8 } catch {}","try { [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {}",`Set-Location -LiteralPath ${B1(B.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${l7(C)}`,"$code = 0","try {",` & ${B1(I)} @argv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }","} finally {"," Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue");let F=B.relaunchCommand??[];if(F.length>0){let[G,...H]=F;g.push(` $relaunchArgv = ${l7(H)}`,` & ${B1(G)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return g.push("}","exit $code",""),g.join(`\r
744
744
  `)}import{join as a7}from"path";async function o7(B,I){try{let C=I?.projectPath||process.cwd(),g=I?.providerContext,F=process.platform==="win32";if(!g)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let G=await tD(B);if(!G)G=eD(B);if(!await Bun.file(G).exists()){let{execSync:q}=await import("child_process"),K=F?`where ${B.command}.exe 2>nul || where ${B.command}.cmd 2>nul || where ${B.command}`:`which ${B.command}`;try{let z=q(K,{encoding:"utf8"}).split(`
745
745
  `).map((S)=>S.trim().replace(/\r$/,"")).filter(Boolean),y=F?z.find((S)=>S.toLowerCase().endsWith(".exe"))??z.find((S)=>S.toLowerCase().endsWith(".cmd"))??z[0]:z[0];if(y)G=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 L={...B.getEnvVars(g),...I?.envVars??{}},u={...process.env,...L},W;if(B.runtime==="native")if(F&&G.toLowerCase().endsWith(".js"))W=[await N0(),G];else W=[G];else W=[await N0(),G];if(I?.args&&I.args.length>0)W=[...W,...I.args];if(F&&I?.handoffOnWindows){let q=process.env[pN];if(q)return await A1(),await aw(q,{command:W,cwd:C,env:L}),{success:!0}}if(F&&I?.relaunchTakoOnWindows){let q=process.env[pN];if(q){let K=[process.env.TAKO_WINDOWS_RELAUNCH_COMMAND||a7(rB,"bin","tako.cmd")];return await A1(),await aw(q,{command:W,cwd:C,env:L,relaunchCommand:K}),{success:!0}}}if(F){let q=await import("fs/promises"),{tmpdir:K}=await import("os"),z=a7(K(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await aw(z,{command:W,cwd:C}),await A1();try{let S=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",z],{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited;return{success:S===0,exitCode:S}}catch(y){return await q.rm(z,{force:!0}).catch(()=>{}),{success:!1,error:y instanceof Error?y.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await A1(),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(W,{env:u,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(W,{env:u,stdio:["inherit","inherit","inherit"],cwd:C}).exited}return{success:!0}}catch(C){return{success:!1,error:C instanceof Error?C.message:"\u542F\u52A8\u5931\u8D25"}}}cB();import{dirname as HS,join as JS}from"path";import{mkdir as MS}from"fs/promises";var LS=0.95,US=0.05,dN=null;function n7(){return dN??JS(rB,"model-usage.json")}function iN(){return{counts:{},updatedAt:new Date(0).toISOString()}}async function r7(){try{let B=Bun.file(n7());if(!await B.exists())return iN();let I=await B.json(),C=I?.counts;if(!C||typeof C!=="object")return iN();let g={};for(let[F,G]of Object.entries(C))if(typeof G==="number"&&Number.isFinite(G))g[F]=G;return{counts:g,updatedAt:typeof I?.updatedAt==="string"?I.updatedAt:new Date(0).toISOString()}}catch{return iN()}}async function uS(B){if(dN)await MS(HS(dN),{recursive:!0});else await jF();await Bun.write(n7(),JSON.stringify(B,null,2))}async function s7(){return{...(await r7()).counts}}async function t7(B){let I=await r7(),C={};for(let[g,F]of Object.entries(I.counts)){let G=F*LS;if(G>=US)C[g]=G}for(let g of B){if(!g.startsWith("model-"))continue;C[g]=(C[g]??0)+1}await uS({counts:C,updatedAt:new Date().toISOString()})}async function KS(B,I){if(I?.providerContext)return I.providerContext;let C=await lI();if(C){let g=await tE(B.id);if(g.some((G)=>G.id===C.id))return kI(C);if(g.length>0)return kI(g[0])}return null}async function ow(B,I){try{let C=I?.projectPath||process.cwd();if(I?.projectPath){if(!await bN(I.projectPath))return{success:!1,error:bA("launcher.directoryNotFound",{path:I.projectPath})}}let g=await b7(B);if(!g.success)return g;let F=await KS(B,I);if(!F)return{success:!1,error:bA("launcher.apiKeyNotConfigured")};let G=[],H={};if(B.setupConfigFiles){let u=await B.setupConfigFiles(F,I?.selectedOptionIds,{forLaunch:!0});if(u&&typeof u==="object")G=u.args??[],H=u.envVars??{}}await j7(C,B.id,I?.selectedOptionIds);try{let u=(I?.selectedOptionIds??[]).filter((W)=>W.startsWith("model-"));await t7(u)}catch{}let L=(await QB()).installedClients[B.id]?.version;return fQ("client_launched",{client_id:B.id,client_version:L,project_hash:X7(C),is_recent_project:!!I?.projectPath}),iA.info(bA("launcher.starting",{client:B.name})),await o7(B,{...I,args:[...G,...I?.args??[]],envVars:{...H,...I?.envVars??{}},providerContext:F})}catch(C){return{success:!1,error:C instanceof Error?C.message:"Launch failed"}}}YQ();JE();import{homedir as WS}from"os";var yB={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 sB={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var UQ={directory:{icon:yB.brightYellow,text:yB.brightGreen},git:{icon:yB.brightBlue,text:yB.brightBlue,clean:yB.brightGreen,dirty:yB.brightYellow,conflict:yB.brightRed},model:{icon:yB.brightCyan,text:yB.brightCyan},version:{icon:yB.brightWhite,text:yB.brightBlack},outputStyle:{icon:yB.brightMagenta,text:yB.brightMagenta},context:{icon:yB.brightMagenta,low:yB.brightGreen,medium:yB.brightYellow,high:yB.brightRed},todayUsage:{icon:yB.brightGreen,text:yB.brightGreen},separator:yB.brightBlack},IC={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 RS(){return!1}function ME(B){let I=IC[B];if(typeof I==="string")return I;return RS()?I.nerd:I.plain}class nw{id="directory";render(B){let I=this.formatPath(B.workspace.current_dir),C=ME("directory");return`${UQ.directory.icon}${C}${sB.reset} ${UQ.directory.text}${I}${sB.reset}`}formatPath(B){let I=WS();if(B===I)return"~";if(B.startsWith(I+"/"))return"~"+B.slice(I.length);return B}}class rw{id="git";async render(B){let I=B.workspace.current_dir;if(!await this.isGitRepository(I))return null;let g=await this.getBranch(I);if(!g)return null;let{status:F,statusColor:G}=await this.getStatus(I),{ahead:H,behind:M}=await this.getAheadBehind(I),L=ME("git"),u=`${UQ.git.icon}${L}${sB.reset} ${UQ.git.text}${g}${sB.reset}`;if(u+=` ${G}${F}${sB.reset}`,H>0)u+=` ${UQ.git.clean}${IC.gitAhead}${H}${sB.reset}`;if(M>0)u+=` ${UQ.git.dirty}${IC.gitBehind}${M}${sB.reset}`;return u}async isGitRepository(B){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:B,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch(B){try{let I=Bun.spawn(["git","branch","--show-current"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text();if(await I.exited===0&&C.trim())return C.trim();let F=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),G=await new Response(F.stdout).text();if(await F.exited===0&&G.trim())return`detached:${G.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:IC.gitClean,statusColor:UQ.git.clean};let F=C.trim();if(!F)return{status:IC.gitClean,statusColor:UQ.git.clean};if(F.includes("UU")||F.includes("AA")||F.includes("DD"))return{status:IC.gitConflict,statusColor:UQ.git.conflict};return{status:IC.gitDirty,statusColor:UQ.git.dirty}}catch{return{status:IC.gitClean,statusColor:UQ.git.clean}}}async getAheadBehind(B){try{let I=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text(),F=await I.exited===0?parseInt(C.trim(),10)||0:0,G=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:B,stdout:"pipe",stderr:"pipe"}),H=await new Response(G.stdout).text(),L=await G.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:F,behind:L}}catch{return{ahead:0,behind:0}}}}var YS={"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 sw{id="model";render(B){let I=B.model.id,C=YS[I]||this.simplifyModelName(B.model.display_name),g=ME("model");return`${UQ.model.icon}${g}${sB.reset} ${UQ.model.text}${C}${sB.reset}`}simplifyModelName(B){let I=B.replace(/^Claude\s+/i,"");return I=I.replace(/-\d{8}$/,""),I}}var ZS=200000;class LE{id="context";static cache=null;static CACHE_TTL=5000;async render(B){let I=await this.getTokensWithCache(B.transcript_path),g=wN(B.model.id)?.contextWindow??ZS,F=Math.round((I??0)/g*100),G=Math.max(0,100-F),H=ME("context"),M=G<=20?yB.brightRed:G<=50?yB.brightYellow:yB.brightGreen;return`${UQ.context.icon}${H}${sB.reset} ${M}${G}%${sB.reset}`}async getTokensWithCache(B){let I=Date.now();if(LE.cache&&LE.cache.path===B&&I-LE.cache.timestamp<LE.CACHE_TTL)return LE.cache.tokens;let C=await this.parseTranscriptTokens(B);return LE.cache={path:B,tokens:C,timestamp:I},C}async parseTranscriptTokens(B){try{let I=Bun.file(B);if(!await I.exists())return null;let C=await I.text();if(!C.trim())return null;let g=C.split(`
746
- `).filter((F)=>F.trim());for(let F=g.length-1;F>=0;F--)try{let G=JSON.parse(g[F]);if(G.type==="assistant"&&G.message?.usage){let H=G.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}tw();cB();w0();class ew{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await eE("claude-code")??await lI();if(!B){let C=await bg().catch(()=>"");if(!C)return null;let g=await dg(C);return this.renderTako(g)}let I=await Q1(B);if(I.status!=="ok")return null;switch(I.provider){case"tako":return this.renderTako(I);case"claude-subscription":return this.renderClaudeSub(I);case"codex-subscription":return this.renderCodexSub(I);default:return null}}catch{return null}}renderTako(B){if(B.status!=="ok")return null;if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit))return this.renderSub(B);let C=B.daily??B.primary??B.secondary;if(!C)return null;let g=C.costUsed??0;return`${this.icon()} ${yB.brightGreen}Day:${this.fmtCost(g)}${sB.reset}`}renderSub(B){let I=(g,F,G)=>{if(g&&g>=1440)return`${Math.round(g/1440)}d`;if(g)return`${Math.round(g/60)}h`;return G?`${G}d`:`${F}h`},C=[];if(B.primary)C.push(this.remainChunk(I(B.primary.windowMinutes,5),B.primary.usedPct));if(B.secondary)C.push(this.remainChunk(I(B.secondary.windowMinutes,24,7),B.secondary.usedPct));if(B.modelLimits?.opus)C.push(this.remainChunk("opus",B.modelLimits.opus.usedPct));if(!C.length)return null;return`${this.icon()} ${C.join(`${sB.dim} \xB7 ${sB.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?yB.brightRed:I>=70?yB.brightYellow:yB.brightGreen;return`${B}:${C}${I}%${sB.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),g=C<=10?yB.brightRed:C<=30?yB.brightYellow:yB.brightGreen;return`${B} \u5269 ${g}${C}%${sB.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${yB.brightGreen}Session:${this.fmtCost(I)}${sB.reset}`}icon(){return`${UQ.todayUsage.icon}${ME("todayUsage")}${sB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class oN{separator=`${UQ.separator} \u2502 ${sB.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let g of I){let F=B.get(g);if(F)C.push(F)}return C.join(this.separator)}}import{join as cg,dirname as hS}from"path";import{homedir as nN}from"os";import{mkdir as bS}from"fs/promises";var Gu=cg(nN(),".tako"),jS=cg(Gu,"cli"),xS=cg(Gu,"bin",process.platform==="win32"?"tako.cmd":"tako");function pS(){if(process.platform==="win32")return cg(process.env.APPDATA||cg(nN(),"AppData","Roaming"),"claude","settings.json");return cg(nN(),".claude","settings.json")}var iS=process.platform==="win32",dS="0.1.48";function cS(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number),F=Math.max(C.length,g.length);for(let G=0;G<F;G++){let H=C[G]||0,M=g[G]||0;if(H!==M)return H-M}return 0}async function lS(){let B=cg(jS,"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 aS(){let B=await lS();if(!B)return!1;return cS(B,dS)>=0}function oS(){return xS}function nS(){return`"${rS(oS())}" statusline`}function rS(B){if(iS)return B.replace(/\\/g,"/");return B}async function rN(){if(!await aS())return;let I=pS(),C={};try{let G=Bun.file(I);if(await G.exists())C=await G.json()}catch{}let g={type:"command",command:nS(),padding:0},F=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof F==="string"&&F.includes("tako statusline"))return;C.statusLine=g,await bS(hS(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var sS=[new nw,new rw,new sw,new LE,new ew];async function tS(B){let I=await Promise.all(sS.map(async(F)=>{try{let G=await F.render(B);return{id:F.id,content:G}}catch{return{id:F.id,content:null}}})),C=new Map;for(let{id:F,content:G}of I)C.set(F,G);return new oN().render(C)}async function Nu(){try{let B=await Bun.stdin.json(),I=await tS(B);console.log(I)}catch{process.exit(0)}}w0();JE();async function A3(B){let I=await tE(B);if(I.length===0)return null;let C=await eE(B);if(C)return kI(C);if(I.length===1)return kI(I[0]);let g=await lI();if(g&&I.some((F)=>F.id===g.id))return kI(g);return kI(I[0])}async function Hu(){let B=await aF();if(await oF(B)>0){for(let C of B)fQ("provider_added",{provider_type:C.type,method:"auto_detect"});QC(),_0()}}var eS={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function B3(B,I,C,g){let F=I.filter((M)=>M!==C),G=await Ak(B,F,g);if(B!=="claude-code")return G?[G,...F]:F;let H=[];if(G)H.push(G);for(let M=0;M<F.length;M++){let L=F[M];if(L==="--model"&&M+1<F.length){H.push(L,C2(F[M+1])),M++;continue}if(L.startsWith("--model=")){let u=L.slice(8);H.push(`--model=${C2(u)}`);continue}H.push(L)}return H}async function Ak(B,I,C){let g=eS[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??lw)(B)).includes(g.optionId)?g.flag:null}WI();cB();G2();nF();dw();sE();import{join as sN}from"path";async function Q3(B){let C=`${await G0()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),G=Object.keys(F.versions??{});if(!G.length)throw Error("no versions found");let H=F.time??{},M=G.map((L)=>({version:L,publishedAt:H[L],isCurrent:!1}));return M.sort((L,u)=>{let W=L.publishedAt?Date.parse(L.publishedAt):0;return(u.publishedAt?Date.parse(u.publishedAt):0)-W}),M}async function I3(B,I){let C=await import("fs/promises"),g=rE(B.id);if(!await mN())throw Error("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5");await C.mkdir(g,{recursive:!0});let F=sN(g,"bun.lock");await C.rm(F,{force:!0}).catch(()=>{});let G=sN(g,"package.json");await Bun.write(G,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let H=await G0(),M=await AC();iA.info(`\u7F51\u7EDC\u73AF\u5883: ${M==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${H}`);let L=await N0(),u=Bun.spawn([L,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:cw(H)}),W=cC(),q=`\u6B63\u5728\u5207\u6362 ${B.name} \u5230 ${I}`;W.start(q);let K=await lC(u,q,(S)=>W.update(S));if(await u.exited!==0)throw W.stop(),Error(`bun add ${B.package}@${I} failed: ${K.slice(0,500).trim()}`);await eF(B,{reinstallOnFailure:!1,forcePlace:!0}),W.stop(`${B.name} \u5DF2\u5207\u6362\u5230 ${I}`);let y=await QB();await hg({installedClients:{...y.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function E3(B){let I=rE(B.id),C=sN(I,"node_modules",B.package,"package.json");try{let F=Bun.file(C);if(await F.exists()){let G=await F.json();if(G.version)return G.version}}catch{}return(await QB()).installedClients[B.id]?.version??null}cB();var Z3="0.3.24",Fy=!1;function Y3(B){return Fy&&!B}function wy(){console.log(`
746
+ `).filter((F)=>F.trim());for(let F=g.length-1;F>=0;F--)try{let G=JSON.parse(g[F]);if(G.type==="assistant"&&G.message?.usage){let H=G.message.usage;return(H.input_tokens||0)+(H.output_tokens||0)+(H.cache_creation_input_tokens||0)+(H.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}tw();cB();w0();class ew{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await eE("claude-code")??await lI();if(!B){let C=await bg().catch(()=>"");if(!C)return null;let g=await dg(C);return this.renderTako(g)}let I=await Q1(B);if(I.status!=="ok")return null;switch(I.provider){case"tako":return this.renderTako(I);case"claude-subscription":return this.renderClaudeSub(I);case"codex-subscription":return this.renderCodexSub(I);default:return null}}catch{return null}}renderTako(B){if(B.status!=="ok")return null;if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit))return this.renderSub(B);let C=B.daily??B.primary??B.secondary;if(!C)return null;let g=C.costUsed??0;return`${this.icon()} ${yB.brightGreen}Day:${this.fmtCost(g)}${sB.reset}`}renderSub(B){let I=(g,F,G)=>{if(g&&g>=1440)return`${Math.round(g/1440)}d`;if(g)return`${Math.round(g/60)}h`;return G?`${G}d`:`${F}h`},C=[];if(B.primary)C.push(this.remainChunk(I(B.primary.windowMinutes,5),B.primary.usedPct));if(B.secondary)C.push(this.remainChunk(I(B.secondary.windowMinutes,24,7),B.secondary.usedPct));if(B.modelLimits?.opus)C.push(this.remainChunk("opus",B.modelLimits.opus.usedPct));if(!C.length)return null;return`${this.icon()} ${C.join(`${sB.dim} \xB7 ${sB.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(B,I){let C=I>=90?yB.brightRed:I>=70?yB.brightYellow:yB.brightGreen;return`${B}:${C}${I}%${sB.reset}`}remainChunk(B,I){let C=Math.max(0,Math.min(100,100-Math.round(I))),g=C<=10?yB.brightRed:C<=30?yB.brightYellow:yB.brightGreen;return`${B} \u5269 ${g}${C}%${sB.reset}`}renderSessionCost(B){let I=B.cost?.total_cost_usd;if(I==null||I<=0)return null;return`${this.icon()} ${yB.brightGreen}Session:${this.fmtCost(I)}${sB.reset}`}icon(){return`${UQ.todayUsage.icon}${ME("todayUsage")}${sB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class oN{separator=`${UQ.separator} \u2502 ${sB.reset}`;render(B){let I=["directory","git","model","context","quota"],C=[];for(let g of I){let F=B.get(g);if(F)C.push(F)}return C.join(this.separator)}}import{join as cg,dirname as hS}from"path";import{homedir as nN}from"os";import{mkdir as bS}from"fs/promises";var Gu=cg(nN(),".tako"),jS=cg(Gu,"cli"),xS=cg(Gu,"bin",process.platform==="win32"?"tako.cmd":"tako");function pS(){if(process.platform==="win32")return cg(process.env.APPDATA||cg(nN(),"AppData","Roaming"),"claude","settings.json");return cg(nN(),".claude","settings.json")}var iS=process.platform==="win32",dS="0.1.48";function cS(B,I){let C=B.split(".").map(Number),g=I.split(".").map(Number),F=Math.max(C.length,g.length);for(let G=0;G<F;G++){let H=C[G]||0,M=g[G]||0;if(H!==M)return H-M}return 0}async function lS(){let B=cg(jS,"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 aS(){let B=await lS();if(!B)return!1;return cS(B,dS)>=0}function oS(){return xS}function nS(){return`"${rS(oS())}" statusline`}function rS(B){if(iS)return B.replace(/\\/g,"/");return B}async function rN(){if(!await aS())return;let I=pS(),C={};try{let G=Bun.file(I);if(await G.exists())C=await G.json()}catch{}let g={type:"command",command:nS(),padding:0},F=typeof C.statusLine==="object"&&C.statusLine!==null?C.statusLine.command:null;if(typeof F==="string"&&F.includes("tako statusline"))return;C.statusLine=g,await bS(hS(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var sS=[new nw,new rw,new sw,new LE,new ew];async function tS(B){let I=await Promise.all(sS.map(async(F)=>{try{let G=await F.render(B);return{id:F.id,content:G}}catch{return{id:F.id,content:null}}})),C=new Map;for(let{id:F,content:G}of I)C.set(F,G);return new oN().render(C)}async function Nu(){try{let B=await Bun.stdin.json(),I=await tS(B);console.log(I)}catch{process.exit(0)}}w0();JE();async function A3(B){let I=await tE(B);if(I.length===0)return null;let C=await eE(B);if(C)return kI(C);if(I.length===1)return kI(I[0]);let g=await lI();if(g&&I.some((F)=>F.id===g.id))return kI(g);return kI(I[0])}async function Hu(){let B=await aF();if(await oF(B)>0){for(let C of B)fQ("provider_added",{provider_type:C.type,method:"auto_detect"});QC(),_0()}}var eS={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function B3(B,I,C,g){let F=I.filter((M)=>M!==C),G=await Ak(B,F,g);if(B!=="claude-code")return G?[G,...F]:F;let H=[];if(G)H.push(G);for(let M=0;M<F.length;M++){let L=F[M];if(L==="--model"&&M+1<F.length){H.push(L,C2(F[M+1])),M++;continue}if(L.startsWith("--model=")){let u=L.slice(8);H.push(`--model=${C2(u)}`);continue}H.push(L)}return H}async function Ak(B,I,C){let g=eS[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??lw)(B)).includes(g.optionId)?g.flag:null}WI();cB();G2();nF();dw();sE();import{join as sN}from"path";async function Q3(B){let C=`${await G0()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),G=Object.keys(F.versions??{});if(!G.length)throw Error("no versions found");let H=F.time??{},M=G.map((L)=>({version:L,publishedAt:H[L],isCurrent:!1}));return M.sort((L,u)=>{let W=L.publishedAt?Date.parse(L.publishedAt):0;return(u.publishedAt?Date.parse(u.publishedAt):0)-W}),M}async function I3(B,I){let C=await import("fs/promises"),g=rE(B.id);if(!await mN())throw Error("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5");await C.mkdir(g,{recursive:!0});let F=sN(g,"bun.lock");await C.rm(F,{force:!0}).catch(()=>{});let G=sN(g,"package.json");await Bun.write(G,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let H=await G0(),M=await AC();iA.info(`\u7F51\u7EDC\u73AF\u5883: ${M==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${H}`);let L=await N0(),u=Bun.spawn([L,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:cw(H)}),W=cC(),q=`\u6B63\u5728\u5207\u6362 ${B.name} \u5230 ${I}`;W.start(q);let K=await lC(u,q,(S)=>W.update(S));if(await u.exited!==0)throw W.stop(),Error(`bun add ${B.package}@${I} failed: ${K.slice(0,500).trim()}`);await eF(B,{reinstallOnFailure:!1,forcePlace:!0}),W.stop(`${B.name} \u5DF2\u5207\u6362\u5230 ${I}`);let y=await QB();await hg({installedClients:{...y.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function E3(B){let I=rE(B.id),C=sN(I,"node_modules",B.package,"package.json");try{let F=Bun.file(C);if(await F.exists()){let G=await F.json();if(G.version)return G.version}}catch{}return(await QB()).installedClients[B.id]?.version??null}cB();var Z3="0.3.25",Fy=!0;function Y3(B){return Fy&&!B}function wy(){console.log(`
747
747
  ${bA("cli.version",{version:Z3})}
748
748
 
749
749
  ${bA("cli.usage")}
@@ -826,6 +826,6 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
826
826
  `;if(this.lastOutputHeight>=this.options.stdout.rows){let M=gD(this.options.stdout);if(M)this.options.stdout.write(CD);if(this.options.stdout.write(uQ.clearTerminal+this.fullStaticOutput+I),this.lastOutput=I,this.lastOutputToRender=H,this.lastOutputHeight=C,this.log.sync(H),M)this.options.stdout.write(rC);return}if(F){let M=gD(this.options.stdout);if(M)this.options.stdout.write(CD);if(this.log.clear(),this.options.stdout.write(g),this.log(H),M)this.options.stdout.write(rC)}else if(I!==this.lastOutput||this.log.isCursorDirty())this.throttledLog(H);this.lastOutput=I,this.lastOutputToRender=H,this.lastOutputHeight=C};render(B){let I=PH.default.createElement(sC.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},PH.default.createElement(pW,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},B));if(this.options.concurrent)J0.updateContainer(I,this.container,null,w4);else J0.updateContainerSync(I,this.container,null,w4),J0.flushSyncWork()}writeToStdout(B){if(this.isUnmounted)return;if(this.options.debug){this.options.stdout.write(B+this.fullStaticOutput+this.lastOutput);return}if(KE){this.options.stdout.write(B);return}let I=gD(this.options.stdout);if(I)this.options.stdout.write(CD);if(this.log.clear(),this.options.stdout.write(B),this.restoreLastOutput(),I)this.options.stdout.write(rC)}writeToStderr(B){if(this.isUnmounted)return;if(this.options.debug){this.options.stderr.write(B),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(KE){this.options.stderr.write(B);return}let I=gD(this.options.stdout);if(I)this.options.stdout.write(CD);if(this.log.clear(),this.options.stderr.write(B),this.restoreLastOutput(),I)this.options.stdout.write(rC)}unmount(B){if(this.isUnmounted||this.isUnmounting)return;if(this.isUnmounting=!0,this.beforeExitHandler)_2.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0;let I=this.options.stdout,C=!I.destroyed&&!I.writableEnded&&(I.writable??!0),g=(u)=>{if(typeof u.flush!=="function")return;if(C)u.flush();else if(typeof u.cancel==="function")u.cancel()};if(g(this.throttledOnRender??{}),C){if(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")this.calculateLayout(),this.onRender()}if(this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole==="function")this.restoreConsole();if(typeof this.unsubscribeResize==="function")this.unsubscribeResize();if(this.cancelKittyDetection)this.cancelKittyDetection();let F=this.throttledLog;if(g(F),C){if(this.kittyProtocolEnabled)try{this.options.stdout.write("\x1B[<u")}catch{}if(KE)this.options.stdout.write(this.lastOutput+`
827
827
  `);else if(!this.options.debug)this.log.done()}if(this.kittyProtocolEnabled=!1,this.options.concurrent)J0.updateContainer(null,this.container,null,w4);else J0.updateContainerSync(null,this.container,null,w4),J0.flushSyncWork();v2.delete(this.options.stdout);let{exitResult:G}=this,H=()=>{if(_H(B))this.rejectExitPromise(B);else this.resolveExitPromise(G)},M=B!==void 0&&!_H(B),L=I._writableState!==void 0||I.writableLength!==void 0;if(M)H();else if(C&&L)this.options.stdout.write("",H);else setImmediate(H)}async waitUntilExit(){if(this.exitPromise||=new Promise((B,I)=>{this.resolveExitPromise=B,this.rejectExitPromise=I}),!this.beforeExitHandler)this.beforeExitHandler=()=>{this.unmount()},_2.once("beforeExit",this.beforeExitHandler);return this.exitPromise}clear(){if(!KE&&!this.options.debug)this.log.clear(),this.log.sync(this.lastOutputToRender||this.lastOutput+`
828
828
  `)}patchConsole(){if(this.options.debug)return;this.restoreConsole=LK((B,I)=>{if(B==="stdout")this.writeToStdout(I);if(B==="stderr"){if(!I.startsWith("The above error occurred"))this.writeToStderr(I)}})}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let B=this.options.kittyKeyboard,I=B.mode??"auto";if(I==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let C=B.flags??["disambiguateEscapeCodes"];if(I==="enabled"){this.enableKittyProtocol(C);return}let g=_2.env.TERM??"",F=_2.env.TERM_PROGRAM??"",G="KITTY_WINDOW_ID"in _2.env||g==="xterm-kitty"||F==="WezTerm"||F==="ghostty";if(!KE&&G)this.confirmKittySupport(C)}confirmKittySupport(B){let{stdin:I,stdout:C}=this.options,g=[],F=()=>{this.cancelKittyDetection=void 0,clearTimeout(H),I.removeListener("data",G);let M=O_(g);if(g=[],M.length>0)I.unshift(Buffer.from(M))},G=(M)=>{let L=typeof M==="string"?Buffer.from(M):M;for(let u of L)g.push(u);if(q_(g)){if(F(),!this.isUnmounted)this.enableKittyProtocol(B)}};I.on("data",G);let H=setTimeout(F,200);this.cancelKittyDetection=F,C.write("\x1B[?u")}enableKittyProtocol(B){this.options.stdout.write(`\x1B[>${dW(B)}u`),this.kittyProtocolEnabled=!0}}var S_=(B,I)=>{let C={stdout:H4.stdout,stdin:H4.stdin,stderr:H4.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,maxFps:30,incrementalRendering:!1,concurrent:!1,...k_(I)},g=y_(C.stdout,()=>new N4(C),C.concurrent??!1);return g.render(B),{rerender:g.render,unmount(){g.unmount()},waitUntilExit:g.waitUntilExit,cleanup:()=>v2.delete(C.stdout),clear:g.clear}},VH=S_,k_=(B={})=>{if(B instanceof z_)return{stdout:B,stdin:H4.stdin};return B},y_=(B,I,C)=>{let g=v2.get(B);if(!g)g=I(),v2.set(B,g);else if(g.isConcurrent!==C)console.warn(`Warning: render() was called with concurrent: ${C}, but the existing instance for this stdout uses concurrent: ${g.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`);return g};var $_=YA(y3(),1);var J4=YA(NB(),1);var aW=YA(NB(),1);var T_=YA(NB(),1);var v_=YA(NB(),1);var fH=YA(NB(),1);import{Buffer as __}from"buffer";var P_=/^(?:\x1b)([a-zA-Z0-9])$/,V_=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,nW={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},rW=[...Object.values(nW),"backspace"],m_=(B)=>{return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(B)},f_=(B)=>{return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(B)},sW=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,h_=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,b_={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},j_={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},oW={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24",57388:"f25",57389:"f26",57390:"f27",57391:"f28",57392:"f29",57393:"f30",57394:"f31",57395:"f32",57396:"f33",57397:"f34",57398:"f35",57399:"kp0",57400:"kp1",57401:"kp2",57402:"kp3",57403:"kp4",57404:"kp5",57405:"kp6",57406:"kp7",57407:"kp8",57408:"kp9",57409:"kpdecimal",57410:"kpdivide",57411:"kpmultiply",57412:"kpsubtract",57413:"kpadd",57414:"kpenter",57415:"kpequal",57416:"kpseparator",57417:"kpleft",57418:"kpright",57419:"kpup",57420:"kpdown",57421:"kppageup",57422:"kppagedown",57423:"kphome",57424:"kpend",57425:"kpinsert",57426:"kpdelete",57427:"kpbegin",57428:"mediaplay",57429:"mediapause",57430:"mediaplaypause",57431:"mediareverse",57432:"mediastop",57433:"mediafastforward",57434:"mediarewind",57435:"mediatracknext",57436:"mediatrackprevious",57437:"mediarecord",57438:"lowervolume",57439:"raisevolume",57440:"mutevolume",57441:"leftshift",57442:"leftcontrol",57443:"leftalt",57444:"leftsuper",57445:"lefthyper",57446:"leftmeta",57447:"rightshift",57448:"rightcontrol",57449:"rightalt",57450:"rightsuper",57451:"righthyper",57452:"rightmeta",57453:"isoLevel3Shift",57454:"isoLevel5Shift"},tW=(B)=>B>=0&&B<=1114111&&!(B>=55296&&B<=57343),mH=(B)=>tW(B)?String.fromCodePoint(B):"?";function eW(B){if(B===3)return"release";if(B===2)return"repeat";return"press"}function AY(B){return{ctrl:!!(B&YE.ctrl),shift:!!(B&YE.shift),meta:!!(B&YE.meta),option:!!(B&YE.alt),super:!!(B&YE.super),hyper:!!(B&YE.hyper),capsLock:!!(B&YE.capsLock),numLock:!!(B&YE.numLock)}}var x_=(B)=>{let I=sW.exec(B);if(!I)return null;let C=parseInt(I[1],10),g=I[2]?Math.max(0,parseInt(I[2],10)-1):0,F=I[3]?parseInt(I[3],10):1,G=I[4];if(!tW(C))return null;let H;if(G)H=G.split(":").map((u)=>mH(parseInt(u,10))).join("");let M,L;if(C===32)M="space",L=!0;else if(C===13)M="return",L=!0;else if(oW[C])M=oW[C],L=!1;else if(C>=1&&C<=26)M=String.fromCodePoint(C+96),L=!1;else M=mH(C).toLowerCase(),L=!0;if(L&&!H)H=mH(C);return{name:M,...AY(g),eventType:eW(F),sequence:B,raw:B,isKittyProtocol:!0,isPrintable:L,text:H}},p_=(B)=>{let I=h_.exec(B);if(!I)return null;let C=parseInt(I[1],10),g=Math.max(0,parseInt(I[2],10)-1),F=parseInt(I[3],10),G=I[4],H=G==="~"?j_[C]:b_[G];if(!H)return null;return{name:H,...AY(g),eventType:eW(F),sequence:B,raw:B,isKittyProtocol:!0,isPrintable:!1}},i_=(B="")=>{let I;if(__.isBuffer(B))if(B[0]>127&&B[1]===void 0)B[0]-=128,B="\x1B"+String(B);else B=String(B);else if(B!==void 0&&typeof B!=="string")B=String(B);else if(!B)B="";let C=x_(B);if(C)return C;let g=p_(B);if(g)return g;if(sW.test(B))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:B,raw:B,isKittyProtocol:!0,isPrintable:!1};let F={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:B,raw:B};if(F.sequence=F.sequence||B||F.name,B==="\r"||B==="\x1B\r")F.raw=void 0,F.name="return",F.option=B.length===2;else if(B===`
829
- `)F.name="enter";else if(B==="\t")F.name="tab";else if(B==="\b"||B==="\x1B\b")F.name="backspace",F.meta=B.charAt(0)==="\x1B";else if(B==="\x7F"||B==="\x1B\x7F")F.name="delete",F.meta=B.charAt(0)==="\x1B";else if(B==="\x1B"||B==="\x1B\x1B")F.name="escape",F.meta=B.length===2;else if(B===" "||B==="\x1B ")F.name="space",F.meta=B.length===2;else if(B.length===1&&B<="\x1A")F.name=String.fromCharCode(B.charCodeAt(0)+97-1),F.ctrl=!0;else if(B.length===1&&B>="0"&&B<="9")F.name="number";else if(B.length===1&&B>="a"&&B<="z")F.name=B;else if(B.length===1&&B>="A"&&B<="Z")F.name=B.toLowerCase(),F.shift=!0;else if(I=P_.exec(B))F.meta=!0,F.shift=/^[A-Z]$/.test(I[1]);else if(I=V_.exec(B)){let G=[...B];if(G[0]==="\x1B"&&G[1]==="\x1B")F.option=!0;let H=[I[1],I[2],I[4],I[6]].filter(Boolean).join(""),M=(I[3]||I[5]||1)-1;F.ctrl=!!(M&4),F.meta=!!(M&10),F.shift=!!(M&1),F.code=H,F.name=nW[H],F.shift=m_(H)||F.shift,F.ctrl=f_(H)||F.ctrl}return F},BY=i_;var QY=YA(NB(),1);var d_=()=>QY.useContext(Q4),P2=d_;var c_=(B,I={})=>{let{stdin:C,setRawMode:g,internal_exitOnCtrlC:F,internal_eventEmitter:G}=P2();fH.useEffect(()=>{if(I.isActive===!1)return;return g(!0),()=>{g(!1)}},[I.isActive,g]),fH.useEffect(()=>{if(I.isActive===!1)return;let H=(M)=>{let L=BY(M),u={upArrow:L.name==="up",downArrow:L.name==="down",leftArrow:L.name==="left",rightArrow:L.name==="right",pageDown:L.name==="pagedown",pageUp:L.name==="pageup",home:L.name==="home",end:L.name==="end",return:L.name==="return",escape:L.name==="escape",ctrl:L.ctrl,shift:L.shift,tab:L.name==="tab",backspace:L.name==="backspace",delete:L.name==="delete",meta:L.meta||L.name==="escape"||L.option,super:L.super??!1,hyper:L.hyper??!1,capsLock:L.capsLock??!1,numLock:L.numLock??!1,eventType:L.eventType},W;if(L.isKittyProtocol)if(L.isPrintable)W=L.text??L.name;else if(L.ctrl&&L.name.length===1)W=L.name;else W="";else if(L.ctrl)W=L.name;else W=L.sequence;if(!L.isKittyProtocol&&rW.includes(L.name))W="";if(W.startsWith("\x1B"))W=W.slice(1);if(W.length===1&&typeof W[0]==="string"&&/[A-Z]/.test(W[0]))u.shift=!0;if(!(W==="c"&&u.ctrl)||!F)J0.batchedUpdates(()=>{B(W,u)})};return G?.on("input",H),()=>{G?.removeListener("input",H)}},[I.isActive,C,F,B])},TQ=c_;var l_=YA(NB(),1);var IY=YA(NB(),1);var a_=()=>IY.useContext(I4),V2=a_;var o_=YA(NB(),1);var hH=YA(NB(),1);var n_=YA(NB(),1);var r_=YA(NB(),1);var M4=YA(NB(),1);var pB=YA(NB(),1);WI();w0();YQ();tw();WI();YQ();w0();async function EY(B=45){let I=jg(),C=await p7(),g=await lI(),F=dQ()==="zh",G=[...I].sort((L,u)=>{if(L.id===C)return-1;if(u.id===C)return 1;return 0}),H=[];for(let L of G){let u=await x7(L.id,hN,!0),W=process.cwd(),q=[{label:F?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:jN(W,B),path:W},...u.map((QA)=>({label:jN(QA.path,B),hint:i7(QA.lastLaunchedAt),path:QA.path}))],K=await tE(L.id),y=await eE(L.id)||K.find((QA)=>QA.id===g?.id)||K[0],S=y?K.findIndex((QA)=>QA.id===y.id):0,k=A2(L,y),i=new Set(k.map((QA)=>QA.id)),CA=(await lw(L.id)).filter((QA)=>i.has(QA));H.push({client:L,projects:q,providers:K,activeProvider:y,activeProvIdx:Math.max(S,0),launchOptions:k,lastSelectedOptionIds:CA})}let M={};try{M=await s7()}catch{M={}}return{clients:H,defaultIdx:0,hasProviders:H.some((L)=>L.providers.length>0),pickCounts:M,zh:F}}function CY(B,I){let C=[],g=new Set;for(let F of B){if(!F.group){C.push({kind:"flag",opt:F});continue}if(!g.has(F.group))g.add(F.group),C.push({kind:"group",group:F.group,title:F.group==="model"?I?"\u6A21\u578B":"Model":F.group})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function d1(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function L4(B){let I=[],C={},g=[];for(let F of B.launchOptions){if(!B.enabled.has(F.id))continue;if(I.push(...F.args),F.envVars)Object.assign(C,F.envVars);g.push(F.id)}return{args:I,envVars:C,selectedOptionIds:g}}function gY(B,I,C){if(!C)return L4(B);let g=new Set(B.enabled);for(let F of B.launchOptions)if(F.group===I)g.delete(F.id);return g.add(C),L4({launchOptions:B.launchOptions,enabled:g})}function DY(B,I,C){let g=new Set(I.map((u)=>u.id)),F=new Set(I.filter((u)=>u.group==="model").map((u)=>u.id)),G=C?`model-${C}`:void 0,H=new Set,M=!1,L=!1;for(let u of B)if(g.has(u)){if(H.add(u),F.has(u))L=!0}else M=!0;if(!L&&G&&F.has(G))H.add(G),M=!0;return M?H:B}function s_(B){let I=B.codePointAt(0);if(!I)return!1;return I>=19968&&I<=40959||I>=13312&&I<=19903||I>=131072&&I<=191471||I>=63744&&I<=64255||I>=194560&&I<=195103||I>=44032&&I<=55215||I>=12352&&I<=12447||I>=12448&&I<=12543||I>=65280&&I<=65519||I>=126976&&I<=131071||I>=9728&&I<=10175||I===11088}function t_(B){return B.replace(/\x1b\[[0-9;]*m/g,"")}function c1(B){let I=t_(B),C=0;for(let g of I)C+=s_(g)?2:1;return C}function FY(B,I,C="left"){let g=c1(B),F=Math.max(0,I-g);if(F===0)return B;switch(C){case"left":return B+" ".repeat(F);case"right":return" ".repeat(F)+B;case"center":{let G=Math.floor(F/2),H=F-G;return" ".repeat(G)+B+" ".repeat(H)}}}var NY=6,HY=4,jH=16,e_=12;function m2(B,I,C){if(!B.some((W)=>(C[W.id]??0)>0))return{list:B,hiddenCount:0};let F=new Map(B.map((W,q)=>[W.id,q])),G=B.filter((W)=>(C[W.id]??0)>0).sort((W,q)=>{let K=(C[q.id]??0)-(C[W.id]??0);if(K!==0)return K;return(F.get(W.id)??0)-(F.get(q.id)??0)}).slice(0,NY).map((W)=>W.id),H=new Set(G);for(let W of B)if(I.has(W.id))H.add(W.id);let M=new Map(G.map((W,q)=>[W,q])),L=G.length;for(let W of B)if(H.has(W.id)&&!M.has(W.id))M.set(W.id,L++);let u=B.filter((W)=>H.has(W.id)).sort((W,q)=>{let K=(M.get(W.id)??Number.MAX_SAFE_INTEGER)-(M.get(q.id)??Number.MAX_SAFE_INTEGER);if(K!==0)return K;return(F.get(W.id)??0)-(F.get(q.id)??0)});return{list:u,hiddenCount:B.length-u.length}}function xH(B,I){return!B.some((g)=>(I[g.id]??0)>0)&&B.length>NY?"grid":"collapsed"}function AP(B,I){if(B.length===0)return 1;let C=Math.max(...B.map((G)=>c1(G))),g=Math.max(jH,C+4),F=Math.max(g,I-e_);return Math.max(1,Math.min(HY,B.length,Math.floor(F/g)))}function f2(B,I,C){let g=B.map((F)=>F.label[C?"zh":"en"]||F.label.en||F.id);return AP(g,I)}function BP(B,I){let C=Math.max(1,Math.min(HY,Math.floor(I)||1)),g=[];for(let F=0;F<B.length;F+=C)g.push(B.slice(F,F+C));return{rows:g,flat:g.flat()}}function U4(B){return B.startsWith("model-")?B.slice(6):B}function bH(B){let I=U4(B).toLowerCase();return I.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||I.slice(0,3)||I}function wY(B){let I=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],C=I.indexOf(B);return C===-1?I.length:C}function GY(B){let I=U4(B).toLowerCase(),C=[];for(let g of I.match(/\d+(?:\.\d+)?|[a-z]+/g)??[I]){let F=Number(g);C.push(Number.isFinite(F)&&/^\d/.test(g)?F:g)}return C}function QP(B,I){let C=bH(B),g=bH(I),F=wY(C)-wY(g)||C.localeCompare(g);if(F!==0)return F;let G=GY(B),H=GY(I),M=Math.max(G.length,H.length);for(let L=0;L<M;L++){let u=G[L],W=H[L];if(u===void 0)return 1;if(W===void 0)return-1;if(typeof u==="number"&&typeof W==="number"){if(u!==W)return W-u;continue}let q=String(u),K=String(W);if(q!==K)return q.localeCompare(K)}return U4(B).localeCompare(U4(I))}function h2(B,I){let C=[...B].sort(QP),g=[];for(let G of C){let H=bH(G),M=g[g.length-1];if(M?.family===H)M.ids.push(G);else g.push({family:H,ids:[G]})}let F=g.map((G)=>({family:G.family,rows:BP(G.ids,I).rows}));return{groups:F,flat:F.flatMap((G)=>G.rows.flat())}}function pH(B,I,C){return h2(B,C).flat.indexOf(I)}function JY(B,I){return h2(B,I).groups.flatMap((C)=>C.rows)}var LB=YA(xB(),1),EP=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["m","\u5F53\u524D\u76EE\u5F55\u542F\u52A8","launch cwd"],["Esc","\u53D6\u6D88","cancel"]];function MY({zh:B}){return LB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:EP.flatMap((I,C)=>{return[C>0?LB.jsxDEV(R,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,LB.jsxDEV(R,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function LY({provs:B,provIdx:I,pickerIdx:C,color:g,zh:F}){return LB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[LB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),LB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[B.length===0&&LB.jsxDEV(h,{paddingLeft:1,children:LB.jsxDEV(R,{dimColor:!0,children:F?"\u6682\u65E0\u517C\u5BB9\u6B64\u5DE5\u5177\u7684\u670D\u52A1\u5546":"No compatible providers"},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.map((G,H)=>{let M=C===H,L=H===I;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:M?g:void 0,bold:M,children:M?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:M,color:M?g:void 0,children:[" ",G.name]},void 0,!0,void 0,this),G.email&&LB.jsxDEV(R,{dimColor:!0,children:[" (",G.email,")"]},void 0,!0,void 0,this),L&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},G.id,!0,void 0,this)}),(()=>{let G=C===B.length;return LB.jsxDEV(h,{paddingLeft:1,marginTop:1,children:[LB.jsxDEV(R,{color:G?g:void 0,bold:G,children:G?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:G,color:G?g:void 0,children:[" ","\u2699 ",F?"\u7BA1\u7406\u670D\u52A1\u5546\u2026":"Manage providers\u2026"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})()]},void 0,!0,void 0,this),LB.jsxDEV(MY,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function UY({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:G,pickCounts:H={}}){let M=I.filter((q)=>q.group===B),L=B==="model"?m2(M,C,H):{list:M,hiddenCount:0},u=B==="model"?G?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,W=!M.some((q)=>C.has(q.id));return LB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:F,paddingX:1,paddingY:0,children:[LB.jsxDEV(R,{bold:!0,color:F,children:["\u25A3 ",u]},void 0,!0,void 0,this),LB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[(()=>{let q=g===0;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:q?F:void 0,bold:q,children:q?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:q,color:q?F:void 0,children:[" ",G?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),W&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),L.list.map((q,K)=>{let z=g===K+1,y=C.has(q.id);return LB.jsxDEV(h,{paddingLeft:1,flexDirection:"column",children:[LB.jsxDEV(h,{children:[LB.jsxDEV(R,{color:z?F:void 0,bold:z,children:z?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:z,color:z?F:void 0,children:[" ",q.label[G?"zh":"en"]||q.label.en]},void 0,!0,void 0,this),y&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:[" ",q.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z&&LB.jsxDEV(h,{paddingLeft:3,children:LB.jsxDEV(R,{dimColor:!0,children:q.description[G?"zh":"en"]||q.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.id,!0,void 0,this)}),L.hiddenCount>0&&LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:g===L.list.length+1?F:void 0,bold:g===L.list.length+1,children:g===L.list.length+1?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:g===L.list.length+1,color:g===L.list.length+1?F:void 0,children:[" ",G?`\u25BE \u663E\u793A\u5168\u90E8 (${L.hiddenCount})`:`\u25BE Show all (${L.hiddenCount})`]},void 0,!0,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:" \u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),LB.jsxDEV(MY,{zh:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var eB=YA(xB(),1);function CP({zh:B}){return eB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:[eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193\u2190\u2192"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u9009\u62E9":"select"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"launch cwd"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uY({options:B,enabled:I,pickerIdx:C,color:g,zh:F}){let{stdout:G}=V2(),H=B.map((K)=>K.id),M=new Map(B.map((K)=>[K.id,K])),L=(K)=>M.get(K)?.label[F?"zh":"en"]||M.get(K)?.label.en||K,u=f2(B,G.columns||80,F),W=h2(H,u),q=Math.max(jH,...H.length>0?H.map((K)=>c1(L(K))+3):[0]);return eB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[eB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u6A21\u578B":"Pick Model"]},void 0,!0,void 0,this),eB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:W.groups.map((K,z)=>eB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[z>0&&eB.jsxDEV(h,{children:eB.jsxDEV(R,{dimColor:!0,children:"\u254C".repeat(Math.max(8,q*u))},void 0,!1,void 0,this)},void 0,!1,void 0,this),K.rows.map((y,S)=>eB.jsxDEV(h,{children:y.map((k)=>{let l=W.flat.indexOf(k)===C,CA=I.has(k),QA=L(k);return eB.jsxDEV(h,{marginRight:1,children:[eB.jsxDEV(R,{color:l?g:void 0,bold:l,children:l?"\u25B8":" "},void 0,!1,void 0,this),eB.jsxDEV(R,{color:l?g:void 0,bold:l,children:FY(QA,q)},void 0,!1,void 0,this),CA&&eB.jsxDEV(R,{color:"green",children:"\u2605"},void 0,!1,void 0,this)]},k,!0,void 0,this)})},`${K.family}-${S}`,!1,void 0,this))]},K.family,!0,void 0,this))},void 0,!1,void 0,this),eB.jsxDEV(CP,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var e=YA(xB(),1),gP="0.3.24",KY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},RY={icon:"\u25AA",color:"white"};function WY({color:B}){let{stdout:I}=V2(),C=Math.max((I.columns||80)-6,20);return e.jsxDEV(h,{marginY:0,children:e.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function DP(B){return B>30?"green":B>10?"yellow":"red"}function FP({provider:B,zh:I}){if(!B)return e.jsxDEV(R,{color:"yellow",children:["\u26A0 ",I?"\u672A\u7ED1\u5B9A":"no provider"]},void 0,!0,void 0,this);let C={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:"cyan",icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:"yellow",icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:"blue",icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:"yellow",icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:"magenta",icon:"\u25C7"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:"gray",icon:"\u25AA"}},g=C[B.type]??C.custom,F=I?g.zh:g.en,G=B.email??"";if(G.length>0){let[H,M]=G.split("@");if(H&&M)G=H.length>14?`${H.slice(0,12)}\u2026@${M}`:G}return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),G&&e.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function wP({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",B.hint||(I?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")]},void 0,!0,void 0,this);if(B.provider==="tako")if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit));else{let M=B.daily??B.primary??B.secondary;if(!M)return null;let L=M.costUsed??0;return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",e.jsxDEV(R,{color:"green",children:["$",L.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,M,L)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return L?`${L}d`:`${M}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],G=(H,M,L)=>{if(F.length)F.push(e.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let u=g(L);F.push(e.jsxDEV(pB.default.Fragment,{children:[`${M} \u5269 `,e.jsxDEV(R,{color:DP(u),children:[u,"%"]},void 0,!0,void 0,this)]},H,!0,void 0,this))};if(B.primary)G("primary",C(B.primary.windowMinutes,5),B.primary.usedPct);if(B.secondary)G("secondary",C(B.secondary.windowMinutes,24,7),B.secondary.usedPct);if(B.modelLimits?.opus)G("opus","opus",B.modelLimits.opus.usedPct);if(!F.length)return null;return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function GP({clients:B,defaultIdx:I,hasProviders:C,pickCounts:g,onResult:F}){let{stdout:G}=V2(),[H,M]=pB.useState(I),[L,u]=pB.useState("projects"),[W,q]=pB.useState(0),[K,z]=pB.useState(0),[y,S]=pB.useState(()=>B[I]?.activeProvIdx||0),[k,i]=pB.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[l,CA]=pB.useState(""),[QA,wA]=pB.useState(null),[NA,RA]=pB.useState("collapsed"),[UA,t]=pB.useState(!1),[MA,$A]=pB.useState(0),ZA=B[H],WA=ZA.projects,UB=ZA.providers,IA=KY[ZA.client.id]||RY,DA=dQ()==="zh",uA=UB[y],VA=pB.default.useMemo(()=>A2(ZA.client,uA),[ZA.client.id,uA?.id,uA?.type]),nA=pB.default.useMemo(()=>CY(VA,DA),[VA,DA]),d=uA?.name||(DA?"\u672A\u914D\u7F6E":"N/A"),[xA,AB]=pB.useState(null);pB.useEffect(()=>{if(!uA){AB(null);return}let XA=!1;return Q1(uA).then((zA)=>{if(!XA)AB(zA)}),()=>{XA=!0}},[uA?.id,uA?.type]),pB.useEffect(()=>{q(0),z(0),u("projects"),S(B[H]?.activeProvIdx||0),wA(null),RA("collapsed"),t(!1),i(new Set(B[H]?.lastSelectedOptionIds??[]))},[H]),pB.useEffect(()=>{i((XA)=>DY(XA,VA,uA?.model))},[VA,uA?.model]);let dA=pB.useCallback((XA)=>{let zA=d1(VA,k,XA),PA=VA.filter((r)=>r.group===XA);if(PA.length===0)return;let KA=XA==="model"?xH(PA,g):"collapsed",c=0;if(zA)if(XA==="model"&&KA==="grid"){let r=PA.map((EA)=>EA.id),a=f2(PA,G.columns||80,DA);c=pH(r,zA.id,a)}else c=(XA==="model"?m2(PA,k,g).list:PA).findIndex((a)=>a.id===zA.id)+1;$A(Math.max(0,c)),RA(KA),wA(XA)},[k,VA,g,G.columns,DA]),ZB=pB.useCallback((XA)=>{let zA=gY({launchOptions:VA,enabled:k},"model",XA);F({type:"launch",clientId:ZA.client.id,projectPath:WA[0]?.path,...zA})},[VA,k,F,ZA.client.id,WA]);return TQ(pB.useCallback((XA,zA)=>{if(UA){let KA=UB.length+1;if(zA.escape||XA==="q"){t(!1);return}if(zA.upArrow){$A((c)=>c>0?c-1:KA-1);return}if(zA.downArrow){$A((c)=>c<KA-1?c+1:0);return}if(zA.return)if(MA<UB.length){let c=UB[MA];S(MA),(async()=>{if(await lF(ZA.client.id,c.id),ZA.client.setupConfigFiles)try{await ZA.client.setupConfigFiles(kI(c))}catch(r){CA(DA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>CA(""),2500);return}ZA.activeProvIdx=MA,CA(DA?`\u2713 \u5DF2\u7ED1\u5B9A ${c.name}`:`\u2713 Bound ${c.name}`),setTimeout(()=>CA(""),2000)})(),t(!1)}else t(!1),F({type:"providers"});return}if(QA){let KA=VA.filter((EA)=>EA.group===QA),c=QA==="model";if(c&&NA==="grid"){let EA=KA.map((IB)=>IB.id),mA=f2(KA,G.columns||80,DA),OA=h2(EA,mA),rA=JY(EA,mA),zB=OA.flat.length;if(XA==="q"){wA(null),RA("collapsed");return}if(XA==="m"){let IB=OA.flat[MA];ZB(IB);return}if(zA.escape){if(xH(KA,g)==="grid")wA(null);else{RA("collapsed");let IB=d1(VA,k,QA),SA=m2(KA,k,g).list;$A(IB?Math.max(0,SA.findIndex((hB)=>hB.id===IB.id)+1):0)}return}if(zB===0)return;if(zA.leftArrow){$A((IB)=>IB>0?IB-1:zB-1);return}if(zA.rightArrow){$A((IB)=>IB<zB-1?IB+1:0);return}if(zA.upArrow||zA.downArrow){$A((IB)=>{let SA=0,hB=0,bB=0;for(let ZQ=0;ZQ<rA.length;ZQ++){let _I=rA[ZQ].length;if(IB<bB+_I){SA=ZQ,hB=IB-bB;break}bB+=_I}let AQ=zA.upArrow?SA>0?SA-1:rA.length-1:SA<rA.length-1?SA+1:0,vI=Math.min(hB,rA[AQ].length-1);return rA.slice(0,AQ).reduce((ZQ,_I)=>ZQ+_I.length,0)+vI});return}if(zA.return){let IB=OA.flat[MA],SA=KA.find((hB)=>hB.id===IB);if(SA)i((hB)=>{let bB=new Set(hB);for(let AQ of KA)bB.delete(AQ.id);return bB.add(SA.id),bB});wA(null),RA("collapsed")}return}let r=c?m2(KA,k,g):{list:KA,hiddenCount:0},a=r.list.length+1+(r.hiddenCount>0?1:0);if(zA.escape||XA==="q"){wA(null),RA("collapsed");return}if(c&&XA==="m"){if(MA===0){ZB();return}if(r.hiddenCount>0&&MA===r.list.length+1)return;let EA=r.list[MA-1];ZB(EA?.id);return}if(zA.upArrow){$A((EA)=>EA>0?EA-1:a-1);return}if(zA.downArrow){$A((EA)=>EA<a-1?EA+1:0);return}if(zA.return){if(MA===0)i((EA)=>{let mA=new Set(EA);for(let OA of KA)mA.delete(OA.id);return mA});else if(c&&r.hiddenCount>0&&MA===r.list.length+1){let EA=d1(VA,k,QA),mA=KA.map((zB)=>zB.id),OA=f2(KA,G.columns||80,DA),rA=EA?pH(mA,EA.id,OA):0;$A(Math.max(0,rA)),RA("grid");return}else{let EA=r.list[MA-1];i((mA)=>{let OA=new Set(mA);for(let rA of KA)OA.delete(rA.id);return OA.add(EA.id),OA})}wA(null),RA("collapsed")}return}if(XA==="q"){F({type:"exit"});return}if(XA==="a"){F({type:"agent"});return}if(XA==="s"){F({type:"stats"});return}if(XA==="c"){F({type:"config"});return}if(XA==="l"){F({type:"language"});return}if(XA==="p"){F({type:"providers"});return}if(XA==="m"){dA("model");return}let PA=parseInt(XA);if(PA>=1&&PA<=B.length){M(PA-1);return}if(zA.leftArrow){M((KA)=>KA>0?KA-1:B.length-1);return}if(zA.rightArrow){M((KA)=>KA<B.length-1?KA+1:0);return}if(L==="projects"){if(zA.downArrow){if(W<WA.length-1)q((KA)=>KA+1);else if(nA.length>0)u("options"),z(0);return}if(zA.upArrow){if(W>0)q((KA)=>KA-1);return}}if(L==="options"){if(zA.downArrow){if(K<nA.length-1)z((KA)=>KA+1);return}if(zA.upArrow){if(K>0)z((KA)=>KA-1);else u("projects"),q(WA.length-1);return}}if(XA===" "&&L==="options"&&nA.length>0){let KA=nA[K];if(KA.kind==="flag")i((c)=>{let r=new Set(c);if(r.has(KA.opt.id))r.delete(KA.opt.id);else r.add(KA.opt.id);return r});else if(KA.kind==="group")dA(KA.group);else $A(y),t(!0);return}if(zA.return){if(L==="options"&&nA.length>0){let r=nA[K];if(r.kind==="group"){dA(r.group);return}if(r.kind==="provider"){$A(y),t(!0);return}}let KA=WA[W],c=L4({launchOptions:VA,enabled:k});F({type:"launch",clientId:ZA.client.id,projectPath:KA.path,...c})}},[L,H,W,K,y,UB,uA,ZA,WA,VA,nA,k,B,F,DA,QA,UA,MA,g,NA,G.columns,dA,ZB])),e.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:0,children:[e.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:IA.color,paddingX:1,paddingY:0,children:[e.jsxDEV(h,{justifyContent:"space-between",children:[e.jsxDEV(h,{gap:1,children:[e.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:["v",gP]},void 0,!0,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(FP,{provider:uA,zh:DA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.jsxDEV(h,{children:[l&&e.jsxDEV(R,{color:"green",children:l},void 0,!1,void 0,this),!l&&xA&&e.jsxDEV(wP,{quota:xA,zh:DA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&e.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[e.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\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),e.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[e.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((XA,zA)=>{let PA=KY[XA.client.id]||RY;return zA===H?e.jsxDEV(h,{borderStyle:"bold",borderColor:PA.color,paddingX:1,children:e.jsxDEV(R,{color:PA.color,bold:!0,children:[PA.icon," ",XA.client.name]},void 0,!0,void 0,this)},XA.client.id,!1,void 0,this):e.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:e.jsxDEV(R,{dimColor:!0,children:[PA.icon," ",XA.client.name]},void 0,!0,void 0,this)},XA.client.id,!1,void 0,this)}),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.jsxDEV(WY,{color:IA.color},void 0,!1,void 0,this),UA?e.jsxDEV(LY,{provs:UB,provIdx:y,pickerIdx:MA,color:IA.color,zh:DA},void 0,!1,void 0,this):QA==="model"&&NA==="grid"?e.jsxDEV(uY,{options:VA.filter((XA)=>XA.group==="model"),enabled:k,pickerIdx:MA,color:IA.color,zh:DA},void 0,!1,void 0,this):QA?e.jsxDEV(UY,{group:QA,options:VA,enabled:k,pickerIdx:MA,color:IA.color,zh:DA,pickCounts:g},void 0,!1,void 0,this):e.jsxDEV(e.Fragment,{children:[WA.map((XA,zA)=>{let PA=L==="projects"&&zA===W;return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:XA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XA.hint?e.jsxDEV(R,{dimColor:!0,children:XA.hint},void 0,!1,void 0,this):null]},zA,!0,void 0,this)}),nA.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(WY,{color:IA.color},void 0,!1,void 0,this),nA.map((XA,zA)=>{let PA=L==="options"&&zA===K;if(XA.kind==="flag"){let KA=XA.opt,c=k.has(KA.id);return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{color:c?IA.color:void 0,bold:c,children:c?"\u25C9":"\u25CB"},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:KA.label[DA?"zh":"en"]||KA.label.en},void 0,!1,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:KA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:KA.description[DA?"zh":"en"]||KA.description.en},void 0,!1,void 0,this)]},KA.id,!0,void 0,this)}if(XA.kind==="group"){let KA=d1(VA,k,XA.group),c=KA?KA.shortLabel:DA?"\u9ED8\u8BA4":"Default";return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:[XA.title,":"]},void 0,!0,void 0,this),e.jsxDEV(R,{color:KA?IA.color:void 0,children:c},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:DA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${XA.group}`,!0,void 0,this)}return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:[XA.title,":"]},void 0,!0,void 0,this),e.jsxDEV(R,{color:uA?IA.color:"yellow",children:uA?d:DA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),e.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:DA?"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),e.jsxDEV(h,{paddingX:2,marginTop:0,justifyContent:"center",gap:2,children:L==="options"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\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 YY({onResult:B}){let[I,C]=pB.useState(null);if(pB.useEffect(()=>{EY(45).then(C)},[]),!I)return e.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return e.jsxDEV(GP,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,pickCounts:I.pickCounts,onResult:B},void 0,!1,void 0,this)}var aB=YA(NB(),1);YQ();w0();iC();iC();JE();iC();var GA=YA(xB(),1),ZE={"claude-subscription":{icon:"\u2726",color:"yellow"},"codex-subscription":{icon:"\u25C8",color:"blue"},tako:{icon:"\uD83D\uDC19",color:"cyan"},anthropic:{icon:"\u25B3",color:"magenta"},deepseek:{icon:"\uD83D\uDD2E",color:"blue"},xiaomi:{icon:"\uD83D\uDFE0",color:"yellow"},custom:{icon:"\u2699",color:"gray"}},iH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},l1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function ZY({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?D0[B.type]?.zh:D0[B.type]?.en;return GA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?G.color:C?G.color:"gray",paddingX:2,paddingY:0,children:[GA.jsxDEV(h,{justifyContent:"space-between",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:I||C,color:I?G.color:void 0,children:B.name},void 0,!1,void 0,this),g&&GA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&GA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,children:C?GA.jsxDEV(R,{color:G.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):GA.jsxDEV(R,{dimColor:!0,children:["\u25CB ",F?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&GA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&GA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&GA.jsxDEV(R,{dimColor:!0,children:["Key: ",B.apiKey.slice(0,8),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),I&&GA.jsxDEV(h,{marginTop:0,children:GA.jsxDEV(R,{color:G.color,dimColor:!0,children:["Enter ",F?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",F?"\u8BE6\u60C5/\u64CD\u4F5C":"detail/actions"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function XY({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:G,rowIdx:H,zh:M}){let L=ZE[I]||ZE.custom,u=M?D0[I]?.zh:D0[I]?.en,W=B==="add-model"?cF(I):void 0;if(W)return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:L.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,marginBottom:1,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:L.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:L.color,children:u},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",M?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W.map((S,k)=>{let i=H===k;return GA.jsxDEV(h,{paddingLeft:1,gap:1,children:[GA.jsxDEV(R,{color:i?L.color:void 0,bold:i,children:i?"\u25B8":" "},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:i,color:i?L.color:void 0,children:S},void 0,!1,void 0,this)]},S,!0,void 0,this)})]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let q=B==="add-key"?M?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?M?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":M?"\u6A21\u578B":"Model",K=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?G??"":F,z=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?M?"\u5982 200000\uFF1Bcatalog \u6CA1\u6709\u8BE5\u6A21\u578B\u65F6\u5EFA\u8BAE\u586B\u5199":"e.g. 200000; recommended if model is unknown to catalog":B==="add-model"?I2(I)||(M?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,y=B==="add-url"?M?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?M?"\u4FDD\u5B58":"save":B==="add-model"?M?"\u4FDD\u5B58":"save":M?"\u786E\u8BA4":"confirm";return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:L.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,marginBottom:1,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:L.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:L.color,children:u},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&GA.jsxDEV(R,{dimColor:!0,children:[" ",M?"sk- \u5F00\u5934\u8D70\u6309\u91CF\u4ED8\u8D39\uFF0Ctp- \u5F00\u5934\u8D70 Token Plan \u8BA2\u9605\uFF08\u81EA\u52A8\u8BC6\u522B\uFF09":"sk- = pay-as-you-go, tp- = Token Plan subscription (auto-detected)"]},void 0,!0,void 0,this),z&&GA.jsxDEV(R,{dimColor:!0,children:[" ",M?"\u9ED8\u8BA4":"Default",": ",z]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:z?1:0,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:K||z||""},void 0,!1,void 0,this),GA.jsxDEV(R,{color:L.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:y},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function qY({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?D0[B.type]?.zh:D0[B.type]?.en;return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:G.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:G.color,children:B.name},void 0,!1,void 0,this),B.id===I&&GA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&GA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:B.baseUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((M,L)=>{let u=M==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:M==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:M==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:M==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,W=L===g;return GA.jsxDEV(h,{borderStyle:W?"bold":"round",borderColor:W?"cyan":"gray",paddingX:2,children:GA.jsxDEV(R,{bold:W,color:W?"cyan":void 0,dimColor:!W,children:u},void 0,!1,void 0,this)},M,!1,void 0,this)})},void 0,!1,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var jA=YA(xB(),1);function OY({onDone:B}){let[I,C]=aB.useState("list"),[g,F]=aB.useState([]),[G,H]=aB.useState(),[M,L]=aB.useState({}),[u,W]=aB.useState(0),[q,K]=aB.useState(0),[z,y]=aB.useState(0),[S,k]=aB.useState(""),[i,l]=aB.useState(""),[CA,QA]=aB.useState("tako"),[wA,NA]=aB.useState(""),[RA,UA]=aB.useState(""),[t,MA]=aB.useState(""),[$A,ZA]=aB.useState(""),WA=dQ()==="zh",UB=jg(),IA=UB[u],DA=iH[IA?.id]?.color||"white",uA=IA?g.filter((c)=>E2(c,IA.id)):[],VA=M[IA?.id]||G,nA=uA.length+4,d=g.find((c)=>c.id===S),xA=d?.type==="claude-subscription"||d?.type==="codex-subscription",AB=d?[...d.id!==G?["default"]:[],...xA?["relogin"]:[],...d.builtin?["rekey"]:["delete"],"back"]:["back"],dA=aB.useCallback(async()=>{let c=await SI(),r=await lI();F(c),H(r?.id);let a={};for(let EA of jg()){let mA=await eE(EA.id);a[EA.id]=mA?.id}L(a)},[]);aB.useEffect(()=>{dA()},[dA]),aB.useEffect(()=>{K(0)},[u]),aB.useEffect(()=>{if(i){let c=setTimeout(()=>l(""),3000);return()=>clearTimeout(c)}},[i]);let ZB=aB.useCallback(async()=>{if(S&&g.find((OA)=>OA.id===S)?.builtin){await pg(S,{apiKey:wA}),l(WA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await dA(),C("list"),K(0);return}let c=D0[CA]?.[WA?"zh":"en"]||CA,r=RA||KN(CA),a=t||I2(CA),EA=$A?parseInt($A,10):NaN,mA=Number.isFinite(EA)&&EA>0?EA:void 0;await xg({name:c,type:CA,apiKey:wA,baseUrl:r,model:a,modelContextWindow:mA,supportedClients:cI(CA)}),fQ("provider_added",{provider_type:CA,method:"manual"}),QC(),_0(),l(WA?"\u5DF2\u6DFB\u52A0":"Added"),ZA(""),await dA(),C("list"),K(0)},[CA,wA,RA,t,$A,WA,dA,S,g]),XA=aB.useCallback(async()=>{C("scanning");let c=await aF(),r=await oF(c);if(r>0)QC(),_0();l(WA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${r} \u4E2A`:`Scan done, ${r} added`),await dA(),C("list"),K(0)},[dA,WA]),[zA,PA]=aB.useState("claude"),KA=aB.useCallback(async(c)=>{PA(c),C("logging-in");let r=c==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(r,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:EA}=await Promise.resolve().then(() => (tw(),wu));if(c==="claude")try{let mA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),OA=await new Response(mA.stdout).text();await mA.exited;let rA=JSON.parse(OA.trim());if(rA.loggedIn&&rA.authMethod==="claude.ai"){let zB=rA.email||"",IB=rA.subscriptionType||"pro",SA=`Claude ${IB.charAt(0).toUpperCase()+IB.slice(1)}${zB?` (${zB})`:""}`,{readClaudeAuth:hB}=await Promise.resolve().then(() => (jw(),bw)),bB=await hB(),AQ=bB.credentials||bB.oauthAccount?{credentials:bB.credentials,oauthAccount:bB.oauthAccount}:void 0,vI=g.find((ZQ)=>ZQ.type==="claude-subscription"&&ZQ.email===zB);if(!vI)await xg({name:SA,type:"claude-subscription",email:zB,subscriptionType:IB,supportedClients:cI("claude-subscription"),authData:AQ}),l(WA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await pg(vI.id,{authData:AQ}),EA(vI.id,"claude-subscription"),l(WA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(WA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(WA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let mA=await import("fs/promises"),{homedir:OA}=await import("os"),{join:rA}=await import("path"),zB=JSON.parse(await mA.readFile(rA(OA(),".codex","auth.json"),"utf-8"));if(zB.auth_mode==="chatgpt"&&zB.tokens?.access_token){let IB="";try{IB=JSON.parse(atob(zB.tokens.id_token.split(".")[1])).email||""}catch{}let SA=g.find((hB)=>hB.type==="codex-subscription"&&hB.email===IB);if(!SA)await xg({name:IB?`Codex Plus (${IB})`:"Codex Subscription",type:"codex-subscription",email:IB||void 0,supportedClients:cI("codex-subscription"),authData:zB}),l(WA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await pg(SA.id,{authData:zB}),EA(SA.id,"codex-subscription"),l(WA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(WA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(WA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await dA(),C("list"),K(0)},[g,WA,dA]);if(TQ(aB.useCallback((c,r)=>{if(I==="list"){if(r.escape||c==="q"){B();return}if(r.leftArrow){W((EA)=>EA>0?EA-1:UB.length-1);return}if(r.rightArrow){W((EA)=>EA<UB.length-1?EA+1:0);return}let a=parseInt(c);if(a>=1&&a<=UB.length){W(a-1);return}if(r.upArrow){K((EA)=>EA>0?EA-1:nA-1);return}if(r.downArrow){K((EA)=>EA<nA-1?EA+1:0);return}if(r.return){if(q<uA.length){let EA=uA[q];lF(IA.id,EA.id).then(()=>{B()})}else if(q===uA.length)C("add-type"),K(0);else if(q===uA.length+1)XA();else if(q===uA.length+2)B("client-versions");else B();return}if((c==="d"||c==="e")&&q<uA.length)k(uA[q].id),C("detail"),y(0);return}if(I==="detail"){if(r.leftArrow){y((a)=>a>0?a-1:AB.length-1);return}if(r.rightArrow){y((a)=>a<AB.length-1?a+1:0);return}if(r.escape){C("list"),K(0);return}if(r.return){let a=AB[z];if(a==="back"){C("list"),K(0);return}if(a==="default")zN(S).then(()=>{l(WA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),dA(),C("list"),K(0)});if(a==="delete")ON(S).then(()=>{l(WA?"\u5DF2\u5220\u9664":"Deleted"),dA(),C("list"),K(0)});if(a==="rekey")QA(d?.type||"tako"),NA(""),C("add-key"),K(0);if(a==="relogin"){let EA=d?.type==="codex-subscription"?"codex":"claude";C("list"),K(0),KA(EA)}}return}if(I==="add-type"){if(r.upArrow){K((a)=>a>0?a-1:l1.length-1);return}if(r.downArrow){K((a)=>a<l1.length-1?a+1:0);return}if(r.escape){C("list"),K(0);return}if(r.return){let a=l1[q];if(QA(a),a==="claude-subscription"){KA("claude");return}if(a==="codex-subscription"){KA("codex");return}NA(""),UA(""),MA(I2(a)||""),C("add-key"),K(0)}return}if(I==="add-key"){if(r.escape){C("list"),K(0);return}if(r.return&&wA){if(CA==="custom")C("add-url");else if(CA==="deepseek"||CA==="anthropic"||CA==="tako"||CA==="xiaomi")C("add-model"),K(0);else ZB();return}if(r.backspace||r.delete){NA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl)NA((a)=>a+c);return}if(I==="add-url"){if(r.escape){C("list"),K(0);return}if(r.return){C("add-model"),K(0);return}if(r.backspace||r.delete){UA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl)UA((a)=>a+c);return}if(I==="add-model"){let a=cF(CA);if(r.escape){C("list"),K(0);return}if(a){if(r.upArrow){K((EA)=>EA>0?EA-1:a.length-1);return}if(r.downArrow){K((EA)=>EA<a.length-1?EA+1:0);return}if(r.return){MA(a[q]),setTimeout(()=>ZB(),0);return}}else{if(r.return){let EA=t.trim();if(EA&&zI.some((mA)=>mA.id===EA))ZB();else C("add-ctx");return}if(r.backspace||r.delete){MA((EA)=>EA.slice(0,-1));return}if(c&&!r.ctrl)MA((EA)=>EA+c)}return}if(I==="add-ctx"){if(r.escape){C("list"),K(0);return}if(r.return){ZB();return}if(r.backspace||r.delete){ZA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl&&/^[0-9]$/.test(c))ZA((a)=>a+c);return}},[I,q,z,uA,nA,UB.length,IA,S,d,AB,CA,wA,RA,t,$A,B,XA,KA,ZB,dA,WA])),I==="scanning"||I==="logging-in"){let c=I==="logging-in"?ZE[zA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},r=I==="scanning"?WA?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":WA?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:jA.jsxDEV(h,{borderStyle:"round",borderColor:c.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[jA.jsxDEV(R,{color:c.color,bold:!0,children:[c.icon," ",r]},void 0,!0,void 0,this),I==="logging-in"&&jA.jsxDEV(R,{dimColor:!0,children:WA?"\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 jA.jsxDEV(XY,{screen:I,addType:CA,addKey:wA,addUrl:RA,addModel:t,addCtx:$A,rowIdx:q,zh:WA},void 0,!1,void 0,this);if(I==="add-type")return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[jA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:jA.jsxDEV(R,{bold:!0,children:["\u2795 ",WA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),jA.jsxDEV(h,{flexDirection:"column",marginTop:1,gap:0,children:l1.map((c,r)=>{let a=ZE[c]||ZE.custom,EA=q===r,mA=WA?D0[c]?.zh:D0[c]?.en,OA=c==="claude-subscription"||c==="codex-subscription";return jA.jsxDEV(h,{borderStyle:EA?"bold":"round",borderColor:EA?a.color:"gray",paddingX:2,paddingY:0,children:jA.jsxDEV(h,{gap:1,children:[jA.jsxDEV(R,{color:a.color,bold:!0,children:a.icon},void 0,!1,void 0,this),jA.jsxDEV(R,{bold:EA,color:EA?a.color:void 0,children:mA},void 0,!1,void 0,this),OA&&jA.jsxDEV(R,{dimColor:!0,children:["(",WA?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!OA&&jA.jsxDEV(R,{dimColor:!0,children:["(",WA?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},c,!1,void 0,this)})},void 0,!1,void 0,this),jA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&d)return jA.jsxDEV(qY,{provider:d,defaultId:G,detailActions:AB,detailIdx:z,zh:WA},void 0,!1,void 0,this);return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[jA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[jA.jsxDEV(R,{bold:!0,children:["\u26A1 ",WA?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),i&&jA.jsxDEV(R,{color:"green",children:[" \u2713 ",i]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),jA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[jA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),UB.map((c,r)=>{let a=iH[c.id]||{icon:"\u25AA",color:"white"},EA=r===u;return jA.jsxDEV(h,{borderStyle:EA?"bold":"single",borderColor:EA?a.color:"gray",paddingX:2,children:jA.jsxDEV(R,{color:EA?a.color:void 0,bold:EA,dimColor:!EA,children:[a.icon," ",c.name]},void 0,!0,void 0,this)},c.id,!1,void 0,this)}),jA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jA.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:DA,paddingX:1,paddingY:1,children:[uA.length===0&&jA.jsxDEV(h,{paddingX:2,paddingY:1,justifyContent:"center",children:jA.jsxDEV(R,{dimColor:!0,children:WA?"\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),uA.map((c,r)=>jA.jsxDEV(ZY,{provider:c,focused:q===r,bound:c.id===VA,isDefault:c.id===G,zh:WA},c.id,!1,void 0,this))]},void 0,!0,void 0,this),jA.jsxDEV(h,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:WA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:WA?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:WA?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:WA?"\u8FD4\u56DE":"Back"}].map((c)=>{let r=q===uA.length+c.offset;return jA.jsxDEV(h,{borderStyle:r?"bold":"round",borderColor:r?"cyan":"gray",paddingX:2,children:jA.jsxDEV(R,{bold:r,color:r?"cyan":void 0,dimColor:!r,children:[c.icon," ",c.label]},void 0,!0,void 0,this)},c.id,!1,void 0,this)})},void 0,!1,void 0,this),jA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var DC=YA(NB(),1);YQ();cB();async function zY(){try{let B=await bg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${sQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${sQ}/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 G=(F.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:C.data?.usage?.total?.requests||0,totalCost:C.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(C.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:G}}}catch(B){return{success:!1,error:B instanceof Error?B.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function SY(B){return B.toLocaleString("en-US")}var $I=YA(xB(),1);function kY({onExit:B}){let[I,C]=DC.useState(null),[g,F]=DC.useState(!0),[G,H]=DC.useState(10),M=DC.useCallback(async()=>{F(!0);let u=await zY();if(u.success&&u.data)C(u.data);F(!1)},[]);DC.useEffect(()=>{M()},[M]),DC.useEffect(()=>{let u=setInterval(()=>{H((W)=>{if(W<=1)return M(),10;return W-1})},1000);return()=>clearInterval(u)},[M]),TQ((u,W)=>{if(u==="q"||W.escape)B()});let L=dQ()==="zh";return $I.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[$I.jsxDEV(R,{bold:!0,children:bA("stats.title")},void 0,!1,void 0,this),g&&!I?$I.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{children:bA("stats.totalRequests",{count:SY(I.totalRequests)})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:bA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:bA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{bold:!0,dimColor:!0,children:L?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((u,W)=>$I.jsxDEV(R,{dimColor:!0,children:[W===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",u.model.padEnd(25)," ",String(u.requests).padStart(5)," ",u.cost]},u.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$I.jsxDEV(R,{color:"red",children:L?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),$I.jsxDEV(h,{marginTop:1,children:$I.jsxDEV(R,{dimColor:!0,children:L?`${G}s \u540E\u5237\u65B0 q \u8FD4\u56DE`:`Refresh in ${G}s q back`},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var eC=YA(NB(),1);YQ();cB();YQ();JE();w0();iC();function NP(B){return B.startsWith("cr_")&&B.length>10}async function HP(B){try{let C=await(await fetch(`${sQ}/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||bA("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:bA("auth.networkError")}}}async function yY(B){if(!NP(B))return fQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:bA("auth.invalidFormat")};let I=await HP(B);if(!I.valid)return fQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await hg({apiKey:B,apiId:I.apiId}),await JP(B,I.apiId),fQ("api_key_validated",{success:!0}),QC(),_0(),{success:!0}}async function JP(B,I){let g=(await SI()).find((F)=>F.type==="tako");if(g)await pg(g.id,{apiKey:B,apiId:I});else await xg({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:sQ,apiId:I,supportedClients:cI("tako"),builtin:!0})}JE();var L0=YA(xB(),1);function $Y({isReconfigure:B,onDone:I}){let[C,g]=eC.useState(""),[F,G]=eC.useState("idle"),[H,M]=eC.useState(""),{stdin:L,setRawMode:u}=P2();eC.useEffect(()=>{if(!L)return;u(!0);let z=(y)=>{let S=y.toString();if(S.length>1&&!S.startsWith("\x1B"))g((k)=>k+S.replace(/[\r\n]/g,""))};return L.on("data",z),()=>{L.off("data",z)}},[L,u]);let W=eC.useCallback(async()=>{if(!C||F==="validating")return;G("validating");let z=await yY(C);if(z.success)G("success"),QC(),_0(),setTimeout(()=>I(!0),500);else G("error"),M(z.error||"Validation failed")},[C,F,I]);TQ((z,y)=>{if(y.escape){I(!1);return}if(y.return){W();return}if(y.backspace||y.delete){g((S)=>S.slice(0,-1)),G("idle");return}if(z&&!y.ctrl&&z.length===1)g((S)=>S+z),G("idle")});let q=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,K=dQ()==="zh";return L0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[L0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?bA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),L0.jsxDEV(h,{marginTop:1,children:[L0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),L0.jsxDEV(R,{children:q},void 0,!1,void 0,this),F==="idle"&&L0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&L0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",bA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&L0.jsxDEV(R,{color:"green",children:["\u2713 ",bA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&L0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),L0.jsxDEV(h,{marginTop:1,children:L0.jsxDEV(R,{dimColor:!0,children:["Enter ",K?"\u63D0\u4EA4":"submit"," Esc ",K?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var TY=YA(NB(),1);YQ();var FC=YA(xB(),1),a1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function vY({onDone:B}){let[I,C]=TY.useState(a1.findIndex((g)=>g.value===dQ()));return TQ((g,F)=>{if(F.upArrow)C((G)=>G>0?G-1:a1.length-1);if(F.downArrow)C((G)=>G<a1.length-1?G+1:0);if(F.return)ZN(a1[I].value),B();if(F.escape)B()}),FC.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[FC.jsxDEV(R,{bold:!0,children:["\uD83C\uDF10 ",bA("menu.changeLanguage")]},void 0,!0,void 0,this),a1.map((g,F)=>FC.jsxDEV(h,{gap:1,marginTop:F===0?1:0,children:[FC.jsxDEV(R,{color:"cyan",bold:F===I,children:F===I?"\u25B8":" "},void 0,!1,void 0,this),FC.jsxDEV(R,{bold:F===I,children:g.label},void 0,!1,void 0,this),g.value===dQ()&&FC.jsxDEV(R,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},g.value,!0,void 0,this)),FC.jsxDEV(h,{marginTop:1,children:FC.jsxDEV(R,{dimColor:!0,children:"Enter select Esc back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var K4=YA(NB(),1);cB();cB();YQ();var HQ=YA(xB(),1);import{join as MP}from"path";var PY=MP(rB,".key-prompt.json");async function LP(){try{return await Bun.file(PY).json()}catch{return{}}}async function _Y(B){await Bun.write(PY,JSON.stringify(B))}async function VY(){if(await e6())return!1;let B=await LP();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function mY(B){if(B==="never")await _Y({never:!0});else{let I=new Date().toISOString().slice(0,10);await _Y({dismissed:I})}}var u4=[{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 fY({onDone:B}){let[I,C]=K4.useState(0),g=dQ()==="zh";return TQ(K4.useCallback((F,G)=>{if(G.upArrow){C((H)=>H>0?H-1:u4.length-1);return}if(G.downArrow){C((H)=>H<u4.length-1?H+1:0);return}if(G.escape){B("skip");return}if(G.return){B(u4[I].id);return}},[I,B])),HQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[HQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[HQ.jsxDEV(h,{gap:1,children:[HQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),HQ.jsxDEV(R,{bold:!0,children:g?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[HQ.jsxDEV(R,{dimColor:!0,children:g?"\u914D\u7F6E API Key \u540E\u5373\u53EF\u4F7F\u7528 Tako \u4EE3\u7406\u670D\u52A1\uFF0C\u83B7\u5F97\u7EDF\u4E00\u7684\u914D\u989D\u7BA1\u7406\u548C\u66F4\u5FEB\u7684\u8BBF\u95EE\u901F\u5EA6\u3002":"Configure your API Key to use Tako proxy service with unified quota and faster access."},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u4F60\u4E5F\u53EF\u4EE5\u8DF3\u8FC7\u6B64\u6B65\u9AA4\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5546\u3002":"You can skip this and use other providers instead."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:u4.map((F,G)=>{let H=G===I;return HQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[HQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),HQ.jsxDEV(R,{bold:H,color:H?F.color||"white":void 0,children:g?F.label.zh:F.label.en},void 0,!1,void 0,this),H&&HQ.jsxDEV(R,{dimColor:!0,children:g?F.hint.zh:F.hint.en},void 0,!1,void 0,this)]},F.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var TI=YA(NB(),1);YQ();var $B=YA(xB(),1),dH=12,hY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function bY({onDone:B}){let I=jg(),C=dQ()==="zh",[g,F]=TI.useState(0),[G,H]=TI.useState(0),[M,L]=TI.useState(0),[u,W]=TI.useState({}),[q,K]=TI.useState(null),[z,y]=TI.useState(""),S=I[g],k=TI.useCallback(async(NA)=>{W((UA)=>({...UA,[NA]:{loading:!0,versions:[],current:null}}));let RA=I.find((UA)=>UA.id===NA);if(!RA)return;try{let[UA,t]=await Promise.all([Q3(RA.package),E3(RA)]),MA=UA.map(($A)=>({...$A,isCurrent:$A.version===t}));W(($A)=>({...$A,[NA]:{loading:!1,versions:MA,current:t}}))}catch(UA){W((t)=>({...t,[NA]:{loading:!1,error:UA.message,versions:[],current:null}}))}},[I]);TI.useEffect(()=>{if(!S)return;if(!u[S.id])k(S.id)},[g,S?.id]),TI.useEffect(()=>{H(0),L(0)},[g]),TI.useEffect(()=>{if(!z)return;let NA=setTimeout(()=>y(""),3000);return()=>clearTimeout(NA)},[z]);let i=S?u[S.id]:void 0,l=i?.versions??[],CA=TI.useCallback(async(NA)=>{if(!S||q)return;K(NA);try{await I3(S,NA),y(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${NA}`:`\u2713 Switched to ${NA}`),await k(S.id)}catch(RA){y(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${RA.message}`:`\u2717 Install failed: ${RA.message}`)}finally{K(null)}},[S,q,k,C]);TQ((NA,RA)=>{if(q)return;if(RA.escape||NA==="q"){B();return}if(RA.leftArrow){F((t)=>t>0?t-1:I.length-1);return}if(RA.rightArrow){F((t)=>t<I.length-1?t+1:0);return}if(NA==="r"){if(S)k(S.id);return}if(!l.length)return;let UA=l.length-1;if(RA.upArrow){H((t)=>{let MA=Math.max(0,t-1);if(MA<M)L(MA);return MA});return}if(RA.downArrow){H((t)=>{let MA=Math.min(UA,t+1);if(MA>=M+dH)L(MA-dH+1);return MA});return}if(RA.return){let t=l[G];if(t&&!t.isCurrent)CA(t.version)}});let QA=hY[S?.id]?.color||"white",wA=l.slice(M,M+dH);return $B.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[$B.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[$B.jsxDEV(R,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),z&&$B.jsxDEV(R,{color:z.startsWith("\u2713")?"green":"red",children:[" ",z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$B.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:I.map((NA,RA)=>{let UA=hY[NA.id]||{icon:"\u25AA",color:"white"},t=RA===g;return $B.jsxDEV(h,{borderStyle:t?"bold":"single",borderColor:t?UA.color:"gray",paddingX:2,children:$B.jsxDEV(R,{bold:t,color:t?UA.color:void 0,dimColor:!t,children:[UA.icon," ",NA.name]},void 0,!0,void 0,this)},NA.id,!1,void 0,this)})},void 0,!1,void 0,this),$B.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:QA,paddingX:2,paddingY:1,children:!i||i.loading?$B.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):i.error?$B.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",i.error]},void 0,!0,void 0,this):l.length===0?$B.jsxDEV(R,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):$B.jsxDEV(h,{flexDirection:"column",children:[$B.jsxDEV(R,{dimColor:!0,children:[C?`\u5171 ${l.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${l.length} versions, current: `,$B.jsxDEV(R,{color:QA,children:i.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$B.jsxDEV(h,{marginTop:1,flexDirection:"column",children:wA.map((NA,RA)=>{let t=M+RA===G,MA=NA.publishedAt?NA.publishedAt.slice(0,10):"",$A=NA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",ZA=q===NA.version,WA=t?QA:NA.isCurrent?"green":void 0;return $B.jsxDEV(h,{paddingLeft:1,children:$B.jsxDEV(R,{color:WA,bold:t,dimColor:!t&&!NA.isCurrent,children:[t?"\u25B6 ":" ",NA.version.padEnd(16),MA.padEnd(14),$A,ZA?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},NA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$B.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var bQ=YA(NB(),1);YQ();K3();var tQ=YA(NB(),1);YQ();K3();lg();var YB=YA(xB(),1),jY=300,xY=200;function UP(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 pY({sid:B,onBack:I}){let C=F0()==="zh",[g,F]=tQ.useState(null),[G,H]=tQ.useState([]),[M,L]=tQ.useState(""),[u,W]=tQ.useState("idle"),[q,K]=tQ.useState(null),[z,y]=tQ.useState([]),S=tQ.useRef(0),k=tQ.useCallback(async()=>{let QA=await M2(B,xY);if(!QA)return;F(QA.meta),H(QA.log);try{let NA=await(await import("fs/promises")).stat(cQ(B));S.current=NA.size}catch{S.current=0}},[B]);tQ.useEffect(()=>{k()},[k]),tQ.useEffect(()=>{let QA=!1,wA=null,NA=async()=>{if(QA)return;try{let RA=await import("fs/promises"),UA=await RA.stat(cQ(B));if(UA.size>S.current){let t=await RA.open(cQ(B),"r"),MA=Buffer.alloc(UA.size-S.current);await t.read(MA,0,MA.length,S.current),await t.close(),S.current=UA.size;let $A=[];for(let ZA of MA.toString("utf-8").split(`
829
+ `)F.name="enter";else if(B==="\t")F.name="tab";else if(B==="\b"||B==="\x1B\b")F.name="backspace",F.meta=B.charAt(0)==="\x1B";else if(B==="\x7F"||B==="\x1B\x7F")F.name="delete",F.meta=B.charAt(0)==="\x1B";else if(B==="\x1B"||B==="\x1B\x1B")F.name="escape",F.meta=B.length===2;else if(B===" "||B==="\x1B ")F.name="space",F.meta=B.length===2;else if(B.length===1&&B<="\x1A")F.name=String.fromCharCode(B.charCodeAt(0)+97-1),F.ctrl=!0;else if(B.length===1&&B>="0"&&B<="9")F.name="number";else if(B.length===1&&B>="a"&&B<="z")F.name=B;else if(B.length===1&&B>="A"&&B<="Z")F.name=B.toLowerCase(),F.shift=!0;else if(I=P_.exec(B))F.meta=!0,F.shift=/^[A-Z]$/.test(I[1]);else if(I=V_.exec(B)){let G=[...B];if(G[0]==="\x1B"&&G[1]==="\x1B")F.option=!0;let H=[I[1],I[2],I[4],I[6]].filter(Boolean).join(""),M=(I[3]||I[5]||1)-1;F.ctrl=!!(M&4),F.meta=!!(M&10),F.shift=!!(M&1),F.code=H,F.name=nW[H],F.shift=m_(H)||F.shift,F.ctrl=f_(H)||F.ctrl}return F},BY=i_;var QY=YA(NB(),1);var d_=()=>QY.useContext(Q4),P2=d_;var c_=(B,I={})=>{let{stdin:C,setRawMode:g,internal_exitOnCtrlC:F,internal_eventEmitter:G}=P2();fH.useEffect(()=>{if(I.isActive===!1)return;return g(!0),()=>{g(!1)}},[I.isActive,g]),fH.useEffect(()=>{if(I.isActive===!1)return;let H=(M)=>{let L=BY(M),u={upArrow:L.name==="up",downArrow:L.name==="down",leftArrow:L.name==="left",rightArrow:L.name==="right",pageDown:L.name==="pagedown",pageUp:L.name==="pageup",home:L.name==="home",end:L.name==="end",return:L.name==="return",escape:L.name==="escape",ctrl:L.ctrl,shift:L.shift,tab:L.name==="tab",backspace:L.name==="backspace",delete:L.name==="delete",meta:L.meta||L.name==="escape"||L.option,super:L.super??!1,hyper:L.hyper??!1,capsLock:L.capsLock??!1,numLock:L.numLock??!1,eventType:L.eventType},W;if(L.isKittyProtocol)if(L.isPrintable)W=L.text??L.name;else if(L.ctrl&&L.name.length===1)W=L.name;else W="";else if(L.ctrl)W=L.name;else W=L.sequence;if(!L.isKittyProtocol&&rW.includes(L.name))W="";if(W.startsWith("\x1B"))W=W.slice(1);if(W.length===1&&typeof W[0]==="string"&&/[A-Z]/.test(W[0]))u.shift=!0;if(!(W==="c"&&u.ctrl)||!F)J0.batchedUpdates(()=>{B(W,u)})};return G?.on("input",H),()=>{G?.removeListener("input",H)}},[I.isActive,C,F,B])},TQ=c_;var l_=YA(NB(),1);var IY=YA(NB(),1);var a_=()=>IY.useContext(I4),V2=a_;var o_=YA(NB(),1);var hH=YA(NB(),1);var n_=YA(NB(),1);var r_=YA(NB(),1);var M4=YA(NB(),1);var pB=YA(NB(),1);WI();w0();YQ();tw();WI();YQ();w0();async function EY(B=45){let I=jg(),C=await p7(),g=await lI(),F=dQ()==="zh",G=[...I].sort((L,u)=>{if(L.id===C)return-1;if(u.id===C)return 1;return 0}),H=[];for(let L of G){let u=await x7(L.id,hN,!0),W=process.cwd(),q=[{label:F?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:jN(W,B),path:W},...u.map((QA)=>({label:jN(QA.path,B),hint:i7(QA.lastLaunchedAt),path:QA.path}))],K=await tE(L.id),y=await eE(L.id)||K.find((QA)=>QA.id===g?.id)||K[0],S=y?K.findIndex((QA)=>QA.id===y.id):0,k=A2(L,y),i=new Set(k.map((QA)=>QA.id)),CA=(await lw(L.id)).filter((QA)=>i.has(QA));H.push({client:L,projects:q,providers:K,activeProvider:y,activeProvIdx:Math.max(S,0),launchOptions:k,lastSelectedOptionIds:CA})}let M={};try{M=await s7()}catch{M={}}return{clients:H,defaultIdx:0,hasProviders:H.some((L)=>L.providers.length>0),pickCounts:M,zh:F}}function CY(B,I){let C=[],g=new Set;for(let F of B){if(!F.group){C.push({kind:"flag",opt:F});continue}if(!g.has(F.group))g.add(F.group),C.push({kind:"group",group:F.group,title:F.group==="model"?I?"\u6A21\u578B":"Model":F.group})}return C.push({kind:"provider",title:I?"\u670D\u52A1\u5546":"Provider"}),C}function d1(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function L4(B){let I=[],C={},g=[];for(let F of B.launchOptions){if(!B.enabled.has(F.id))continue;if(I.push(...F.args),F.envVars)Object.assign(C,F.envVars);g.push(F.id)}return{args:I,envVars:C,selectedOptionIds:g}}function gY(B,I,C){if(!C)return L4(B);let g=new Set(B.enabled);for(let F of B.launchOptions)if(F.group===I)g.delete(F.id);return g.add(C),L4({launchOptions:B.launchOptions,enabled:g})}function DY(B,I,C){let g=new Set(I.map((u)=>u.id)),F=new Set(I.filter((u)=>u.group==="model").map((u)=>u.id)),G=C?`model-${C}`:void 0,H=new Set,M=!1,L=!1;for(let u of B)if(g.has(u)){if(H.add(u),F.has(u))L=!0}else M=!0;if(!L&&G&&F.has(G))H.add(G),M=!0;return M?H:B}function s_(B){let I=B.codePointAt(0);if(!I)return!1;return I>=19968&&I<=40959||I>=13312&&I<=19903||I>=131072&&I<=191471||I>=63744&&I<=64255||I>=194560&&I<=195103||I>=44032&&I<=55215||I>=12352&&I<=12447||I>=12448&&I<=12543||I>=65280&&I<=65519||I>=126976&&I<=131071||I>=9728&&I<=10175||I===11088}function t_(B){return B.replace(/\x1b\[[0-9;]*m/g,"")}function c1(B){let I=t_(B),C=0;for(let g of I)C+=s_(g)?2:1;return C}function FY(B,I,C="left"){let g=c1(B),F=Math.max(0,I-g);if(F===0)return B;switch(C){case"left":return B+" ".repeat(F);case"right":return" ".repeat(F)+B;case"center":{let G=Math.floor(F/2),H=F-G;return" ".repeat(G)+B+" ".repeat(H)}}}var NY=6,HY=4,jH=16,e_=12;function m2(B,I,C){if(!B.some((W)=>(C[W.id]??0)>0))return{list:B,hiddenCount:0};let F=new Map(B.map((W,q)=>[W.id,q])),G=B.filter((W)=>(C[W.id]??0)>0).sort((W,q)=>{let K=(C[q.id]??0)-(C[W.id]??0);if(K!==0)return K;return(F.get(W.id)??0)-(F.get(q.id)??0)}).slice(0,NY).map((W)=>W.id),H=new Set(G);for(let W of B)if(I.has(W.id))H.add(W.id);let M=new Map(G.map((W,q)=>[W,q])),L=G.length;for(let W of B)if(H.has(W.id)&&!M.has(W.id))M.set(W.id,L++);let u=B.filter((W)=>H.has(W.id)).sort((W,q)=>{let K=(M.get(W.id)??Number.MAX_SAFE_INTEGER)-(M.get(q.id)??Number.MAX_SAFE_INTEGER);if(K!==0)return K;return(F.get(W.id)??0)-(F.get(q.id)??0)});return{list:u,hiddenCount:B.length-u.length}}function xH(B,I){return!B.some((g)=>(I[g.id]??0)>0)&&B.length>NY?"grid":"collapsed"}function AP(B,I){if(B.length===0)return 1;let C=Math.max(...B.map((G)=>c1(G))),g=Math.max(jH,C+4),F=Math.max(g,I-e_);return Math.max(1,Math.min(HY,B.length,Math.floor(F/g)))}function f2(B,I,C){let g=B.map((F)=>F.label[C?"zh":"en"]||F.label.en||F.id);return AP(g,I)}function BP(B,I){let C=Math.max(1,Math.min(HY,Math.floor(I)||1)),g=[];for(let F=0;F<B.length;F+=C)g.push(B.slice(F,F+C));return{rows:g,flat:g.flat()}}function U4(B){return B.startsWith("model-")?B.slice(6):B}function bH(B){let I=U4(B).toLowerCase();return I.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||I.slice(0,3)||I}function wY(B){let I=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],C=I.indexOf(B);return C===-1?I.length:C}function GY(B){let I=U4(B).toLowerCase(),C=[];for(let g of I.match(/\d+(?:\.\d+)?|[a-z]+/g)??[I]){let F=Number(g);C.push(Number.isFinite(F)&&/^\d/.test(g)?F:g)}return C}function QP(B,I){let C=bH(B),g=bH(I),F=wY(C)-wY(g)||C.localeCompare(g);if(F!==0)return F;let G=GY(B),H=GY(I),M=Math.max(G.length,H.length);for(let L=0;L<M;L++){let u=G[L],W=H[L];if(u===void 0)return 1;if(W===void 0)return-1;if(typeof u==="number"&&typeof W==="number"){if(u!==W)return W-u;continue}let q=String(u),K=String(W);if(q!==K)return q.localeCompare(K)}return U4(B).localeCompare(U4(I))}function h2(B,I){let C=[...B].sort(QP),g=[];for(let G of C){let H=bH(G),M=g[g.length-1];if(M?.family===H)M.ids.push(G);else g.push({family:H,ids:[G]})}let F=g.map((G)=>({family:G.family,rows:BP(G.ids,I).rows}));return{groups:F,flat:F.flatMap((G)=>G.rows.flat())}}function pH(B,I,C){return h2(B,C).flat.indexOf(I)}function JY(B,I){return h2(B,I).groups.flatMap((C)=>C.rows)}var LB=YA(xB(),1),EP=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["m","\u5F53\u524D\u76EE\u5F55\u542F\u52A8","launch cwd"],["Esc","\u53D6\u6D88","cancel"]];function MY({zh:B}){return LB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:EP.flatMap((I,C)=>{return[C>0?LB.jsxDEV(R,{dimColor:!0,children:"\u2502"},`s${C}`,!1,void 0,this):null,LB.jsxDEV(R,{dimColor:!0,bold:!0,children:I[0]},`k${C}`,!1,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:B?I[1]:I[2]},`l${C}`,!1,void 0,this)]})},void 0,!1,void 0,this)}function LY({provs:B,provIdx:I,pickerIdx:C,color:g,zh:F}){return LB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[LB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u670D\u52A1\u5546":"Pick Provider"]},void 0,!0,void 0,this),LB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[B.length===0&&LB.jsxDEV(h,{paddingLeft:1,children:LB.jsxDEV(R,{dimColor:!0,children:F?"\u6682\u65E0\u517C\u5BB9\u6B64\u5DE5\u5177\u7684\u670D\u52A1\u5546":"No compatible providers"},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.map((G,H)=>{let M=C===H,L=H===I;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:M?g:void 0,bold:M,children:M?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:M,color:M?g:void 0,children:[" ",G.name]},void 0,!0,void 0,this),G.email&&LB.jsxDEV(R,{dimColor:!0,children:[" (",G.email,")"]},void 0,!0,void 0,this),L&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},G.id,!0,void 0,this)}),(()=>{let G=C===B.length;return LB.jsxDEV(h,{paddingLeft:1,marginTop:1,children:[LB.jsxDEV(R,{color:G?g:void 0,bold:G,children:G?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:G,color:G?g:void 0,children:[" ","\u2699 ",F?"\u7BA1\u7406\u670D\u52A1\u5546\u2026":"Manage providers\u2026"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)})()]},void 0,!0,void 0,this),LB.jsxDEV(MY,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function UY({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:G,pickCounts:H={}}){let M=I.filter((q)=>q.group===B),L=B==="model"?m2(M,C,H):{list:M,hiddenCount:0},u=B==="model"?G?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,W=!M.some((q)=>C.has(q.id));return LB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:F,paddingX:1,paddingY:0,children:[LB.jsxDEV(R,{bold:!0,color:F,children:["\u25A3 ",u]},void 0,!0,void 0,this),LB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[(()=>{let q=g===0;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:q?F:void 0,bold:q,children:q?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:q,color:q?F:void 0,children:[" ",G?"\u9ED8\u8BA4\uFF08\u4E0D\u6307\u5B9A\uFF09":"Default (none)"]},void 0,!0,void 0,this),W&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),L.list.map((q,K)=>{let z=g===K+1,y=C.has(q.id);return LB.jsxDEV(h,{paddingLeft:1,flexDirection:"column",children:[LB.jsxDEV(h,{children:[LB.jsxDEV(R,{color:z?F:void 0,bold:z,children:z?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:z,color:z?F:void 0,children:[" ",q.label[G?"zh":"en"]||q.label.en]},void 0,!0,void 0,this),y&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:[" ",q.flag]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z&&LB.jsxDEV(h,{paddingLeft:3,children:LB.jsxDEV(R,{dimColor:!0,children:q.description[G?"zh":"en"]||q.description.en},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.id,!0,void 0,this)}),L.hiddenCount>0&&LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:g===L.list.length+1?F:void 0,bold:g===L.list.length+1,children:g===L.list.length+1?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:g===L.list.length+1,color:g===L.list.length+1?F:void 0,children:[" ",G?`\u25BE \u663E\u793A\u5168\u90E8 (${L.hiddenCount})`:`\u25BE Show all (${L.hiddenCount})`]},void 0,!0,void 0,this),LB.jsxDEV(R,{dimColor:!0,children:" \u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),LB.jsxDEV(MY,{zh:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var eB=YA(xB(),1);function CP({zh:B}){return eB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:[eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193\u2190\u2192"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u9009\u62E9":"select"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"launch cwd"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),eB.jsxDEV(R,{dimColor:!0,children:B?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uY({options:B,enabled:I,pickerIdx:C,color:g,zh:F}){let{stdout:G}=V2(),H=B.map((K)=>K.id),M=new Map(B.map((K)=>[K.id,K])),L=(K)=>M.get(K)?.label[F?"zh":"en"]||M.get(K)?.label.en||K,u=f2(B,G.columns||80,F),W=h2(H,u),q=Math.max(jH,...H.length>0?H.map((K)=>c1(L(K))+3):[0]);return eB.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[eB.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u6A21\u578B":"Pick Model"]},void 0,!0,void 0,this),eB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:W.groups.map((K,z)=>eB.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[z>0&&eB.jsxDEV(h,{children:eB.jsxDEV(R,{dimColor:!0,children:"\u254C".repeat(Math.max(8,q*u))},void 0,!1,void 0,this)},void 0,!1,void 0,this),K.rows.map((y,S)=>eB.jsxDEV(h,{children:y.map((k)=>{let l=W.flat.indexOf(k)===C,CA=I.has(k),QA=L(k);return eB.jsxDEV(h,{marginRight:1,children:[eB.jsxDEV(R,{color:l?g:void 0,bold:l,children:l?"\u25B8":" "},void 0,!1,void 0,this),eB.jsxDEV(R,{color:l?g:void 0,bold:l,children:FY(QA,q)},void 0,!1,void 0,this),CA&&eB.jsxDEV(R,{color:"green",children:"\u2605"},void 0,!1,void 0,this)]},k,!0,void 0,this)})},`${K.family}-${S}`,!1,void 0,this))]},K.family,!0,void 0,this))},void 0,!1,void 0,this),eB.jsxDEV(CP,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var e=YA(xB(),1),gP="0.3.25",KY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},RY={icon:"\u25AA",color:"white"};function WY({color:B}){let{stdout:I}=V2(),C=Math.max((I.columns||80)-6,20);return e.jsxDEV(h,{marginY:0,children:e.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function DP(B){return B>30?"green":B>10?"yellow":"red"}function FP({provider:B,zh:I}){if(!B)return e.jsxDEV(R,{color:"yellow",children:["\u26A0 ",I?"\u672A\u7ED1\u5B9A":"no provider"]},void 0,!0,void 0,this);let C={tako:{zh:"Tako \u4EE3\u7406",en:"Tako Proxy",color:"cyan",icon:"\uD83D\uDC19"},"claude-subscription":{zh:"Claude \u5B98\u65B9",en:"Claude Official",color:"yellow",icon:"\u2726"},"codex-subscription":{zh:"Codex \u5B98\u65B9",en:"Codex Official",color:"blue",icon:"\u25C8"},anthropic:{zh:"Anthropic \u76F4\u8FDE",en:"Anthropic Direct",color:"yellow",icon:"\u2726"},deepseek:{zh:"DeepSeek",en:"DeepSeek",color:"magenta",icon:"\u25C7"},custom:{zh:"\u81EA\u5B9A\u4E49",en:"Custom",color:"gray",icon:"\u25AA"}},g=C[B.type]??C.custom,F=I?g.zh:g.en,G=B.email??"";if(G.length>0){let[H,M]=G.split("@");if(H&&M)G=H.length>14?`${H.slice(0,12)}\u2026@${M}`:G}return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),G&&e.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function wP({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",B.hint||(I?"\u7528\u91CF\u83B7\u53D6\u5931\u8D25":"quota unavailable")]},void 0,!0,void 0,this);if(B.provider==="tako")if(!!(B.primary?.costLimit||B.secondary?.costLimit||B.daily?.costLimit));else{let M=B.daily??B.primary??B.secondary;if(!M)return null;let L=M.costUsed??0;return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",e.jsxDEV(R,{color:"green",children:["$",L.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,M,L)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return L?`${L}d`:`${M}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],G=(H,M,L)=>{if(F.length)F.push(e.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let u=g(L);F.push(e.jsxDEV(pB.default.Fragment,{children:[`${M} \u5269 `,e.jsxDEV(R,{color:DP(u),children:[u,"%"]},void 0,!0,void 0,this)]},H,!0,void 0,this))};if(B.primary)G("primary",C(B.primary.windowMinutes,5),B.primary.usedPct);if(B.secondary)G("secondary",C(B.secondary.windowMinutes,24,7),B.secondary.usedPct);if(B.modelLimits?.opus)G("opus","opus",B.modelLimits.opus.usedPct);if(!F.length)return null;return e.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function GP({clients:B,defaultIdx:I,hasProviders:C,pickCounts:g,onResult:F}){let{stdout:G}=V2(),[H,M]=pB.useState(I),[L,u]=pB.useState("projects"),[W,q]=pB.useState(0),[K,z]=pB.useState(0),[y,S]=pB.useState(()=>B[I]?.activeProvIdx||0),[k,i]=pB.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[l,CA]=pB.useState(""),[QA,wA]=pB.useState(null),[NA,RA]=pB.useState("collapsed"),[UA,t]=pB.useState(!1),[MA,$A]=pB.useState(0),ZA=B[H],WA=ZA.projects,UB=ZA.providers,IA=KY[ZA.client.id]||RY,DA=dQ()==="zh",uA=UB[y],VA=pB.default.useMemo(()=>A2(ZA.client,uA),[ZA.client.id,uA?.id,uA?.type]),nA=pB.default.useMemo(()=>CY(VA,DA),[VA,DA]),d=uA?.name||(DA?"\u672A\u914D\u7F6E":"N/A"),[xA,AB]=pB.useState(null);pB.useEffect(()=>{if(!uA){AB(null);return}let XA=!1;return Q1(uA).then((zA)=>{if(!XA)AB(zA)}),()=>{XA=!0}},[uA?.id,uA?.type]),pB.useEffect(()=>{q(0),z(0),u("projects"),S(B[H]?.activeProvIdx||0),wA(null),RA("collapsed"),t(!1),i(new Set(B[H]?.lastSelectedOptionIds??[]))},[H]),pB.useEffect(()=>{i((XA)=>DY(XA,VA,uA?.model))},[VA,uA?.model]);let dA=pB.useCallback((XA)=>{let zA=d1(VA,k,XA),PA=VA.filter((r)=>r.group===XA);if(PA.length===0)return;let KA=XA==="model"?xH(PA,g):"collapsed",c=0;if(zA)if(XA==="model"&&KA==="grid"){let r=PA.map((EA)=>EA.id),a=f2(PA,G.columns||80,DA);c=pH(r,zA.id,a)}else c=(XA==="model"?m2(PA,k,g).list:PA).findIndex((a)=>a.id===zA.id)+1;$A(Math.max(0,c)),RA(KA),wA(XA)},[k,VA,g,G.columns,DA]),ZB=pB.useCallback((XA)=>{let zA=gY({launchOptions:VA,enabled:k},"model",XA);F({type:"launch",clientId:ZA.client.id,projectPath:WA[0]?.path,...zA})},[VA,k,F,ZA.client.id,WA]);return TQ(pB.useCallback((XA,zA)=>{if(UA){let KA=UB.length+1;if(zA.escape||XA==="q"){t(!1);return}if(zA.upArrow){$A((c)=>c>0?c-1:KA-1);return}if(zA.downArrow){$A((c)=>c<KA-1?c+1:0);return}if(zA.return)if(MA<UB.length){let c=UB[MA];S(MA),(async()=>{if(await lF(ZA.client.id,c.id),ZA.client.setupConfigFiles)try{await ZA.client.setupConfigFiles(kI(c))}catch(r){CA(DA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>CA(""),2500);return}ZA.activeProvIdx=MA,CA(DA?`\u2713 \u5DF2\u7ED1\u5B9A ${c.name}`:`\u2713 Bound ${c.name}`),setTimeout(()=>CA(""),2000)})(),t(!1)}else t(!1),F({type:"providers"});return}if(QA){let KA=VA.filter((EA)=>EA.group===QA),c=QA==="model";if(c&&NA==="grid"){let EA=KA.map((IB)=>IB.id),mA=f2(KA,G.columns||80,DA),OA=h2(EA,mA),rA=JY(EA,mA),zB=OA.flat.length;if(XA==="q"){wA(null),RA("collapsed");return}if(XA==="m"){let IB=OA.flat[MA];ZB(IB);return}if(zA.escape){if(xH(KA,g)==="grid")wA(null);else{RA("collapsed");let IB=d1(VA,k,QA),SA=m2(KA,k,g).list;$A(IB?Math.max(0,SA.findIndex((hB)=>hB.id===IB.id)+1):0)}return}if(zB===0)return;if(zA.leftArrow){$A((IB)=>IB>0?IB-1:zB-1);return}if(zA.rightArrow){$A((IB)=>IB<zB-1?IB+1:0);return}if(zA.upArrow||zA.downArrow){$A((IB)=>{let SA=0,hB=0,bB=0;for(let ZQ=0;ZQ<rA.length;ZQ++){let _I=rA[ZQ].length;if(IB<bB+_I){SA=ZQ,hB=IB-bB;break}bB+=_I}let AQ=zA.upArrow?SA>0?SA-1:rA.length-1:SA<rA.length-1?SA+1:0,vI=Math.min(hB,rA[AQ].length-1);return rA.slice(0,AQ).reduce((ZQ,_I)=>ZQ+_I.length,0)+vI});return}if(zA.return){let IB=OA.flat[MA],SA=KA.find((hB)=>hB.id===IB);if(SA)i((hB)=>{let bB=new Set(hB);for(let AQ of KA)bB.delete(AQ.id);return bB.add(SA.id),bB});wA(null),RA("collapsed")}return}let r=c?m2(KA,k,g):{list:KA,hiddenCount:0},a=r.list.length+1+(r.hiddenCount>0?1:0);if(zA.escape||XA==="q"){wA(null),RA("collapsed");return}if(c&&XA==="m"){if(MA===0){ZB();return}if(r.hiddenCount>0&&MA===r.list.length+1)return;let EA=r.list[MA-1];ZB(EA?.id);return}if(zA.upArrow){$A((EA)=>EA>0?EA-1:a-1);return}if(zA.downArrow){$A((EA)=>EA<a-1?EA+1:0);return}if(zA.return){if(MA===0)i((EA)=>{let mA=new Set(EA);for(let OA of KA)mA.delete(OA.id);return mA});else if(c&&r.hiddenCount>0&&MA===r.list.length+1){let EA=d1(VA,k,QA),mA=KA.map((zB)=>zB.id),OA=f2(KA,G.columns||80,DA),rA=EA?pH(mA,EA.id,OA):0;$A(Math.max(0,rA)),RA("grid");return}else{let EA=r.list[MA-1];i((mA)=>{let OA=new Set(mA);for(let rA of KA)OA.delete(rA.id);return OA.add(EA.id),OA})}wA(null),RA("collapsed")}return}if(XA==="q"){F({type:"exit"});return}if(XA==="a"){F({type:"agent"});return}if(XA==="s"){F({type:"stats"});return}if(XA==="c"){F({type:"config"});return}if(XA==="l"){F({type:"language"});return}if(XA==="p"){F({type:"providers"});return}if(XA==="m"){dA("model");return}let PA=parseInt(XA);if(PA>=1&&PA<=B.length){M(PA-1);return}if(zA.leftArrow){M((KA)=>KA>0?KA-1:B.length-1);return}if(zA.rightArrow){M((KA)=>KA<B.length-1?KA+1:0);return}if(L==="projects"){if(zA.downArrow){if(W<WA.length-1)q((KA)=>KA+1);else if(nA.length>0)u("options"),z(0);return}if(zA.upArrow){if(W>0)q((KA)=>KA-1);return}}if(L==="options"){if(zA.downArrow){if(K<nA.length-1)z((KA)=>KA+1);return}if(zA.upArrow){if(K>0)z((KA)=>KA-1);else u("projects"),q(WA.length-1);return}}if(XA===" "&&L==="options"&&nA.length>0){let KA=nA[K];if(KA.kind==="flag")i((c)=>{let r=new Set(c);if(r.has(KA.opt.id))r.delete(KA.opt.id);else r.add(KA.opt.id);return r});else if(KA.kind==="group")dA(KA.group);else $A(y),t(!0);return}if(zA.return){if(L==="options"&&nA.length>0){let r=nA[K];if(r.kind==="group"){dA(r.group);return}if(r.kind==="provider"){$A(y),t(!0);return}}let KA=WA[W],c=L4({launchOptions:VA,enabled:k});F({type:"launch",clientId:ZA.client.id,projectPath:KA.path,...c})}},[L,H,W,K,y,UB,uA,ZA,WA,VA,nA,k,B,F,DA,QA,UA,MA,g,NA,G.columns,dA,ZB])),e.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:0,children:[e.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:IA.color,paddingX:1,paddingY:0,children:[e.jsxDEV(h,{justifyContent:"space-between",children:[e.jsxDEV(h,{gap:1,children:[e.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:["v",gP]},void 0,!0,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(FP,{provider:uA,zh:DA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.jsxDEV(h,{children:[l&&e.jsxDEV(R,{color:"green",children:l},void 0,!1,void 0,this),!l&&xA&&e.jsxDEV(wP,{quota:xA,zh:DA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&e.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[e.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\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),e.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[e.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((XA,zA)=>{let PA=KY[XA.client.id]||RY;return zA===H?e.jsxDEV(h,{borderStyle:"bold",borderColor:PA.color,paddingX:1,children:e.jsxDEV(R,{color:PA.color,bold:!0,children:[PA.icon," ",XA.client.name]},void 0,!0,void 0,this)},XA.client.id,!1,void 0,this):e.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:e.jsxDEV(R,{dimColor:!0,children:[PA.icon," ",XA.client.name]},void 0,!0,void 0,this)},XA.client.id,!1,void 0,this)}),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.jsxDEV(WY,{color:IA.color},void 0,!1,void 0,this),UA?e.jsxDEV(LY,{provs:UB,provIdx:y,pickerIdx:MA,color:IA.color,zh:DA},void 0,!1,void 0,this):QA==="model"&&NA==="grid"?e.jsxDEV(uY,{options:VA.filter((XA)=>XA.group==="model"),enabled:k,pickerIdx:MA,color:IA.color,zh:DA},void 0,!1,void 0,this):QA?e.jsxDEV(UY,{group:QA,options:VA,enabled:k,pickerIdx:MA,color:IA.color,zh:DA,pickCounts:g},void 0,!1,void 0,this):e.jsxDEV(e.Fragment,{children:[WA.map((XA,zA)=>{let PA=L==="projects"&&zA===W;return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:XA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XA.hint?e.jsxDEV(R,{dimColor:!0,children:XA.hint},void 0,!1,void 0,this):null]},zA,!0,void 0,this)}),nA.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(WY,{color:IA.color},void 0,!1,void 0,this),nA.map((XA,zA)=>{let PA=L==="options"&&zA===K;if(XA.kind==="flag"){let KA=XA.opt,c=k.has(KA.id);return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{color:c?IA.color:void 0,bold:c,children:c?"\u25C9":"\u25CB"},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:KA.label[DA?"zh":"en"]||KA.label.en},void 0,!1,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:KA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:KA.description[DA?"zh":"en"]||KA.description.en},void 0,!1,void 0,this)]},KA.id,!0,void 0,this)}if(XA.kind==="group"){let KA=d1(VA,k,XA.group),c=KA?KA.shortLabel:DA?"\u9ED8\u8BA4":"Default";return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:[XA.title,":"]},void 0,!0,void 0,this),e.jsxDEV(R,{color:KA?IA.color:void 0,children:c},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:DA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${XA.group}`,!0,void 0,this)}return e.jsxDEV(h,{paddingLeft:1,children:[e.jsxDEV(h,{flexGrow:1,gap:1,children:[e.jsxDEV(R,{color:PA?IA.color:void 0,bold:PA,children:PA?"\u25B8":" "},void 0,!1,void 0,this),e.jsxDEV(R,{bold:PA,color:PA?IA.color:void 0,children:[XA.title,":"]},void 0,!0,void 0,this),e.jsxDEV(R,{color:uA?IA.color:"yellow",children:uA?d:DA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),e.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),PA&&e.jsxDEV(R,{dimColor:!0,children:DA?"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),e.jsxDEV(h,{paddingX:2,marginTop:0,justifyContent:"center",gap:2,children:L==="options"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),e.jsxDEV(R,{dimColor:!0,children:DA?"\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 YY({onResult:B}){let[I,C]=pB.useState(null);if(pB.useEffect(()=>{EY(45).then(C)},[]),!I)return e.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return e.jsxDEV(GP,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,pickCounts:I.pickCounts,onResult:B},void 0,!1,void 0,this)}var aB=YA(NB(),1);YQ();w0();iC();iC();JE();iC();var GA=YA(xB(),1),ZE={"claude-subscription":{icon:"\u2726",color:"yellow"},"codex-subscription":{icon:"\u25C8",color:"blue"},tako:{icon:"\uD83D\uDC19",color:"cyan"},anthropic:{icon:"\u25B3",color:"magenta"},deepseek:{icon:"\uD83D\uDD2E",color:"blue"},xiaomi:{icon:"\uD83D\uDFE0",color:"yellow"},custom:{icon:"\u2699",color:"gray"}},iH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},l1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function ZY({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?D0[B.type]?.zh:D0[B.type]?.en;return GA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?G.color:C?G.color:"gray",paddingX:2,paddingY:0,children:[GA.jsxDEV(h,{justifyContent:"space-between",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:I||C,color:I?G.color:void 0,children:B.name},void 0,!1,void 0,this),g&&GA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&GA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,children:C?GA.jsxDEV(R,{color:G.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):GA.jsxDEV(R,{dimColor:!0,children:["\u25CB ",F?"\u672A\u7ED1\u5B9A":"unbound"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&GA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&GA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&GA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&GA.jsxDEV(R,{dimColor:!0,children:["Key: ",B.apiKey.slice(0,8),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),I&&GA.jsxDEV(h,{marginTop:0,children:GA.jsxDEV(R,{color:G.color,dimColor:!0,children:["Enter ",F?"\u7ED1\u5B9A\u5230\u5F53\u524D\u5DE5\u5177":"bind to this tool"," \xB7 d ",F?"\u8BE6\u60C5/\u64CD\u4F5C":"detail/actions"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function XY({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:G,rowIdx:H,zh:M}){let L=ZE[I]||ZE.custom,u=M?D0[I]?.zh:D0[I]?.en,W=B==="add-model"?cF(I):void 0;if(W)return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:L.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,marginBottom:1,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:L.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:L.color,children:u},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",M?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W.map((S,k)=>{let i=H===k;return GA.jsxDEV(h,{paddingLeft:1,gap:1,children:[GA.jsxDEV(R,{color:i?L.color:void 0,bold:i,children:i?"\u25B8":" "},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:i,color:i?L.color:void 0,children:S},void 0,!1,void 0,this)]},S,!0,void 0,this)})]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let q=B==="add-key"?M?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?M?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":M?"\u6A21\u578B":"Model",K=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?G??"":F,z=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?M?"\u5982 200000\uFF1Bcatalog \u6CA1\u6709\u8BE5\u6A21\u578B\u65F6\u5EFA\u8BAE\u586B\u5199":"e.g. 200000; recommended if model is unknown to catalog":B==="add-model"?I2(I)||(M?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,y=B==="add-url"?M?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?M?"\u4FDD\u5B58":"save":B==="add-model"?M?"\u4FDD\u5B58":"save":M?"\u786E\u8BA4":"confirm";return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:L.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,marginBottom:1,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:L.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:L.color,children:u},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&GA.jsxDEV(R,{dimColor:!0,children:[" ",M?"sk- \u5F00\u5934\u8D70\u6309\u91CF\u4ED8\u8D39\uFF0Ctp- \u5F00\u5934\u8D70 Token Plan \u8BA2\u9605\uFF08\u81EA\u52A8\u8BC6\u522B\uFF09":"sk- = pay-as-you-go, tp- = Token Plan subscription (auto-detected)"]},void 0,!0,void 0,this),z&&GA.jsxDEV(R,{dimColor:!0,children:[" ",M?"\u9ED8\u8BA4":"Default",": ",z]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:z?1:0,children:[GA.jsxDEV(R,{color:L.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:K||z||""},void 0,!1,void 0,this),GA.jsxDEV(R,{color:L.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:y},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:M?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function qY({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?D0[B.type]?.zh:D0[B.type]?.en;return GA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[GA.jsxDEV(h,{borderStyle:"bold",borderColor:G.color,paddingX:3,paddingY:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),GA.jsxDEV(R,{bold:!0,color:G.color,children:B.name},void 0,!1,void 0,this),B.id===I&&GA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&GA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),GA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:[B.apiKey.slice(0,12),"\u2022\u2022\u2022"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.baseUrl&&GA.jsxDEV(h,{gap:1,children:[GA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),GA.jsxDEV(R,{children:B.baseUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),GA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((M,L)=>{let u=M==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:M==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:M==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:M==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,W=L===g;return GA.jsxDEV(h,{borderStyle:W?"bold":"round",borderColor:W?"cyan":"gray",paddingX:2,children:GA.jsxDEV(R,{bold:W,color:W?"cyan":void 0,dimColor:!W,children:u},void 0,!1,void 0,this)},M,!1,void 0,this)})},void 0,!1,void 0,this),GA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GA.jsxDEV(R,{dimColor:!0,children:F?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var jA=YA(xB(),1);function OY({onDone:B}){let[I,C]=aB.useState("list"),[g,F]=aB.useState([]),[G,H]=aB.useState(),[M,L]=aB.useState({}),[u,W]=aB.useState(0),[q,K]=aB.useState(0),[z,y]=aB.useState(0),[S,k]=aB.useState(""),[i,l]=aB.useState(""),[CA,QA]=aB.useState("tako"),[wA,NA]=aB.useState(""),[RA,UA]=aB.useState(""),[t,MA]=aB.useState(""),[$A,ZA]=aB.useState(""),WA=dQ()==="zh",UB=jg(),IA=UB[u],DA=iH[IA?.id]?.color||"white",uA=IA?g.filter((c)=>E2(c,IA.id)):[],VA=M[IA?.id]||G,nA=uA.length+4,d=g.find((c)=>c.id===S),xA=d?.type==="claude-subscription"||d?.type==="codex-subscription",AB=d?[...d.id!==G?["default"]:[],...xA?["relogin"]:[],...d.builtin?["rekey"]:["delete"],"back"]:["back"],dA=aB.useCallback(async()=>{let c=await SI(),r=await lI();F(c),H(r?.id);let a={};for(let EA of jg()){let mA=await eE(EA.id);a[EA.id]=mA?.id}L(a)},[]);aB.useEffect(()=>{dA()},[dA]),aB.useEffect(()=>{K(0)},[u]),aB.useEffect(()=>{if(i){let c=setTimeout(()=>l(""),3000);return()=>clearTimeout(c)}},[i]);let ZB=aB.useCallback(async()=>{if(S&&g.find((OA)=>OA.id===S)?.builtin){await pg(S,{apiKey:wA}),l(WA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await dA(),C("list"),K(0);return}let c=D0[CA]?.[WA?"zh":"en"]||CA,r=RA||KN(CA),a=t||I2(CA),EA=$A?parseInt($A,10):NaN,mA=Number.isFinite(EA)&&EA>0?EA:void 0;await xg({name:c,type:CA,apiKey:wA,baseUrl:r,model:a,modelContextWindow:mA,supportedClients:cI(CA)}),fQ("provider_added",{provider_type:CA,method:"manual"}),QC(),_0(),l(WA?"\u5DF2\u6DFB\u52A0":"Added"),ZA(""),await dA(),C("list"),K(0)},[CA,wA,RA,t,$A,WA,dA,S,g]),XA=aB.useCallback(async()=>{C("scanning");let c=await aF(),r=await oF(c);if(r>0)QC(),_0();l(WA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${r} \u4E2A`:`Scan done, ${r} added`),await dA(),C("list"),K(0)},[dA,WA]),[zA,PA]=aB.useState("claude"),KA=aB.useCallback(async(c)=>{PA(c),C("logging-in");let r=c==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(r,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:EA}=await Promise.resolve().then(() => (tw(),wu));if(c==="claude")try{let mA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),OA=await new Response(mA.stdout).text();await mA.exited;let rA=JSON.parse(OA.trim());if(rA.loggedIn&&rA.authMethod==="claude.ai"){let zB=rA.email||"",IB=rA.subscriptionType||"pro",SA=`Claude ${IB.charAt(0).toUpperCase()+IB.slice(1)}${zB?` (${zB})`:""}`,{readClaudeAuth:hB}=await Promise.resolve().then(() => (jw(),bw)),bB=await hB(),AQ=bB.credentials||bB.oauthAccount?{credentials:bB.credentials,oauthAccount:bB.oauthAccount}:void 0,vI=g.find((ZQ)=>ZQ.type==="claude-subscription"&&ZQ.email===zB);if(!vI)await xg({name:SA,type:"claude-subscription",email:zB,subscriptionType:IB,supportedClients:cI("claude-subscription"),authData:AQ}),l(WA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await pg(vI.id,{authData:AQ}),EA(vI.id,"claude-subscription"),l(WA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(WA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(WA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}else try{let mA=await import("fs/promises"),{homedir:OA}=await import("os"),{join:rA}=await import("path"),zB=JSON.parse(await mA.readFile(rA(OA(),".codex","auth.json"),"utf-8"));if(zB.auth_mode==="chatgpt"&&zB.tokens?.access_token){let IB="";try{IB=JSON.parse(atob(zB.tokens.id_token.split(".")[1])).email||""}catch{}let SA=g.find((hB)=>hB.type==="codex-subscription"&&hB.email===IB);if(!SA)await xg({name:IB?`Codex Plus (${IB})`:"Codex Subscription",type:"codex-subscription",email:IB||void 0,supportedClients:cI("codex-subscription"),authData:zB}),l(WA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await pg(SA.id,{authData:zB}),EA(SA.id,"codex-subscription"),l(WA?"\u5DF2\u66F4\u65B0 tokens":"Tokens updated")}else l(WA?"\u767B\u5F55\u5931\u8D25":"Login failed")}catch{l(WA?"\u68C0\u6D4B\u5931\u8D25":"Detection failed")}await dA(),C("list"),K(0)},[g,WA,dA]);if(TQ(aB.useCallback((c,r)=>{if(I==="list"){if(r.escape||c==="q"){B();return}if(r.leftArrow){W((EA)=>EA>0?EA-1:UB.length-1);return}if(r.rightArrow){W((EA)=>EA<UB.length-1?EA+1:0);return}let a=parseInt(c);if(a>=1&&a<=UB.length){W(a-1);return}if(r.upArrow){K((EA)=>EA>0?EA-1:nA-1);return}if(r.downArrow){K((EA)=>EA<nA-1?EA+1:0);return}if(r.return){if(q<uA.length){let EA=uA[q];lF(IA.id,EA.id).then(()=>{B()})}else if(q===uA.length)C("add-type"),K(0);else if(q===uA.length+1)XA();else if(q===uA.length+2)B("client-versions");else B();return}if((c==="d"||c==="e")&&q<uA.length)k(uA[q].id),C("detail"),y(0);return}if(I==="detail"){if(r.leftArrow){y((a)=>a>0?a-1:AB.length-1);return}if(r.rightArrow){y((a)=>a<AB.length-1?a+1:0);return}if(r.escape){C("list"),K(0);return}if(r.return){let a=AB[z];if(a==="back"){C("list"),K(0);return}if(a==="default")zN(S).then(()=>{l(WA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),dA(),C("list"),K(0)});if(a==="delete")ON(S).then(()=>{l(WA?"\u5DF2\u5220\u9664":"Deleted"),dA(),C("list"),K(0)});if(a==="rekey")QA(d?.type||"tako"),NA(""),C("add-key"),K(0);if(a==="relogin"){let EA=d?.type==="codex-subscription"?"codex":"claude";C("list"),K(0),KA(EA)}}return}if(I==="add-type"){if(r.upArrow){K((a)=>a>0?a-1:l1.length-1);return}if(r.downArrow){K((a)=>a<l1.length-1?a+1:0);return}if(r.escape){C("list"),K(0);return}if(r.return){let a=l1[q];if(QA(a),a==="claude-subscription"){KA("claude");return}if(a==="codex-subscription"){KA("codex");return}NA(""),UA(""),MA(I2(a)||""),C("add-key"),K(0)}return}if(I==="add-key"){if(r.escape){C("list"),K(0);return}if(r.return&&wA){if(CA==="custom")C("add-url");else if(CA==="deepseek"||CA==="anthropic"||CA==="tako"||CA==="xiaomi")C("add-model"),K(0);else ZB();return}if(r.backspace||r.delete){NA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl)NA((a)=>a+c);return}if(I==="add-url"){if(r.escape){C("list"),K(0);return}if(r.return){C("add-model"),K(0);return}if(r.backspace||r.delete){UA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl)UA((a)=>a+c);return}if(I==="add-model"){let a=cF(CA);if(r.escape){C("list"),K(0);return}if(a){if(r.upArrow){K((EA)=>EA>0?EA-1:a.length-1);return}if(r.downArrow){K((EA)=>EA<a.length-1?EA+1:0);return}if(r.return){MA(a[q]),setTimeout(()=>ZB(),0);return}}else{if(r.return){let EA=t.trim();if(EA&&zI.some((mA)=>mA.id===EA))ZB();else C("add-ctx");return}if(r.backspace||r.delete){MA((EA)=>EA.slice(0,-1));return}if(c&&!r.ctrl)MA((EA)=>EA+c)}return}if(I==="add-ctx"){if(r.escape){C("list"),K(0);return}if(r.return){ZB();return}if(r.backspace||r.delete){ZA((a)=>a.slice(0,-1));return}if(c&&!r.ctrl&&/^[0-9]$/.test(c))ZA((a)=>a+c);return}},[I,q,z,uA,nA,UB.length,IA,S,d,AB,CA,wA,RA,t,$A,B,XA,KA,ZB,dA,WA])),I==="scanning"||I==="logging-in"){let c=I==="logging-in"?ZE[zA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},r=I==="scanning"?WA?"\u6B63\u5728\u626B\u63CF\u672C\u5730\u8BA2\u9605...":"Scanning local subscriptions...":WA?"\u6B63\u5728\u767B\u5F55\uFF0C\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743...":"Logging in, please authorize in browser...";return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:jA.jsxDEV(h,{borderStyle:"round",borderColor:c.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[jA.jsxDEV(R,{color:c.color,bold:!0,children:[c.icon," ",r]},void 0,!0,void 0,this),I==="logging-in"&&jA.jsxDEV(R,{dimColor:!0,children:WA?"\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 jA.jsxDEV(XY,{screen:I,addType:CA,addKey:wA,addUrl:RA,addModel:t,addCtx:$A,rowIdx:q,zh:WA},void 0,!1,void 0,this);if(I==="add-type")return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[jA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:jA.jsxDEV(R,{bold:!0,children:["\u2795 ",WA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),jA.jsxDEV(h,{flexDirection:"column",marginTop:1,gap:0,children:l1.map((c,r)=>{let a=ZE[c]||ZE.custom,EA=q===r,mA=WA?D0[c]?.zh:D0[c]?.en,OA=c==="claude-subscription"||c==="codex-subscription";return jA.jsxDEV(h,{borderStyle:EA?"bold":"round",borderColor:EA?a.color:"gray",paddingX:2,paddingY:0,children:jA.jsxDEV(h,{gap:1,children:[jA.jsxDEV(R,{color:a.color,bold:!0,children:a.icon},void 0,!1,void 0,this),jA.jsxDEV(R,{bold:EA,color:EA?a.color:void 0,children:mA},void 0,!1,void 0,this),OA&&jA.jsxDEV(R,{dimColor:!0,children:["(",WA?"\u767B\u5F55\u6388\u6743":"login auth",")"]},void 0,!0,void 0,this),!OA&&jA.jsxDEV(R,{dimColor:!0,children:["(",WA?"\u586B\u5199 Key":"enter key",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},c,!1,void 0,this)})},void 0,!1,void 0,this),jA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(I==="detail"&&d)return jA.jsxDEV(qY,{provider:d,defaultId:G,detailActions:AB,detailIdx:z,zh:WA},void 0,!1,void 0,this);return jA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[jA.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,paddingY:0,children:[jA.jsxDEV(R,{bold:!0,children:["\u26A1 ",WA?"\u7BA1\u7406\u670D\u52A1\u5546":"Manage Providers"]},void 0,!0,void 0,this),i&&jA.jsxDEV(R,{color:"green",children:[" \u2713 ",i]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),jA.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[jA.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),UB.map((c,r)=>{let a=iH[c.id]||{icon:"\u25AA",color:"white"},EA=r===u;return jA.jsxDEV(h,{borderStyle:EA?"bold":"single",borderColor:EA?a.color:"gray",paddingX:2,children:jA.jsxDEV(R,{color:EA?a.color:void 0,bold:EA,dimColor:!EA,children:[a.icon," ",c.name]},void 0,!0,void 0,this)},c.id,!1,void 0,this)}),jA.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jA.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:DA,paddingX:1,paddingY:1,children:[uA.length===0&&jA.jsxDEV(h,{paddingX:2,paddingY:1,justifyContent:"center",children:jA.jsxDEV(R,{dimColor:!0,children:WA?"\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),uA.map((c,r)=>jA.jsxDEV(ZY,{provider:c,focused:q===r,bound:c.id===VA,isDefault:c.id===G,zh:WA},c.id,!1,void 0,this))]},void 0,!0,void 0,this),jA.jsxDEV(h,{marginTop:1,gap:1,children:[{id:"add",offset:0,icon:"\u2795",label:WA?"\u6DFB\u52A0\u670D\u52A1\u5546":"Add Provider"},{id:"scan",offset:1,icon:"\uD83D\uDD0D",label:WA?"\u626B\u63CF\u8BA2\u9605":"Scan"},{id:"versions",offset:2,icon:"\uD83D\uDCE6",label:WA?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"},{id:"back",offset:3,icon:"\u2190",label:WA?"\u8FD4\u56DE":"Back"}].map((c)=>{let r=q===uA.length+c.offset;return jA.jsxDEV(h,{borderStyle:r?"bold":"round",borderColor:r?"cyan":"gray",paddingX:2,children:jA.jsxDEV(R,{bold:r,color:r?"cyan":void 0,dimColor:!r,children:[c.icon," ",c.label]},void 0,!0,void 0,this)},c.id,!1,void 0,this)})},void 0,!1,void 0,this),jA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u7ED1\u5B9A":"bind"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8BE6\u60C5":"detail"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),jA.jsxDEV(R,{dimColor:!0,children:WA?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var DC=YA(NB(),1);YQ();cB();async function zY(){try{let B=await bg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${sQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${sQ}/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 G=(F.data||[]).map((H)=>({model:H.model,requests:H.requests,cost:H.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:C.data?.usage?.total?.requests||0,totalCost:C.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(C.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:G}}}catch(B){return{success:!1,error:B instanceof Error?B.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function SY(B){return B.toLocaleString("en-US")}var $I=YA(xB(),1);function kY({onExit:B}){let[I,C]=DC.useState(null),[g,F]=DC.useState(!0),[G,H]=DC.useState(10),M=DC.useCallback(async()=>{F(!0);let u=await zY();if(u.success&&u.data)C(u.data);F(!1)},[]);DC.useEffect(()=>{M()},[M]),DC.useEffect(()=>{let u=setInterval(()=>{H((W)=>{if(W<=1)return M(),10;return W-1})},1000);return()=>clearInterval(u)},[M]),TQ((u,W)=>{if(u==="q"||W.escape)B()});let L=dQ()==="zh";return $I.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[$I.jsxDEV(R,{bold:!0,children:bA("stats.title")},void 0,!1,void 0,this),g&&!I?$I.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{children:bA("stats.totalRequests",{count:SY(I.totalRequests)})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:bA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),$I.jsxDEV(R,{children:bA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&$I.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[$I.jsxDEV(R,{bold:!0,dimColor:!0,children:L?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((u,W)=>$I.jsxDEV(R,{dimColor:!0,children:[W===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",u.model.padEnd(25)," ",String(u.requests).padStart(5)," ",u.cost]},u.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$I.jsxDEV(R,{color:"red",children:L?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),$I.jsxDEV(h,{marginTop:1,children:$I.jsxDEV(R,{dimColor:!0,children:L?`${G}s \u540E\u5237\u65B0 q \u8FD4\u56DE`:`Refresh in ${G}s q back`},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var eC=YA(NB(),1);YQ();cB();YQ();JE();w0();iC();function NP(B){return B.startsWith("cr_")&&B.length>10}async function HP(B){try{let C=await(await fetch(`${sQ}/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||bA("auth.validationFailed")}}catch(I){return{valid:!1,error:I instanceof Error?I.message:bA("auth.networkError")}}}async function yY(B){if(!NP(B))return fQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:bA("auth.invalidFormat")};let I=await HP(B);if(!I.valid)return fQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await hg({apiKey:B,apiId:I.apiId}),await JP(B,I.apiId),fQ("api_key_validated",{success:!0}),QC(),_0(),{success:!0}}async function JP(B,I){let g=(await SI()).find((F)=>F.type==="tako");if(g)await pg(g.id,{apiKey:B,apiId:I});else await xg({name:"Tako \u5B98\u65B9",type:"tako",apiKey:B,baseUrl:sQ,apiId:I,supportedClients:cI("tako"),builtin:!0})}JE();var L0=YA(xB(),1);function $Y({isReconfigure:B,onDone:I}){let[C,g]=eC.useState(""),[F,G]=eC.useState("idle"),[H,M]=eC.useState(""),{stdin:L,setRawMode:u}=P2();eC.useEffect(()=>{if(!L)return;u(!0);let z=(y)=>{let S=y.toString();if(S.length>1&&!S.startsWith("\x1B"))g((k)=>k+S.replace(/[\r\n]/g,""))};return L.on("data",z),()=>{L.off("data",z)}},[L,u]);let W=eC.useCallback(async()=>{if(!C||F==="validating")return;G("validating");let z=await yY(C);if(z.success)G("success"),QC(),_0(),setTimeout(()=>I(!0),500);else G("error"),M(z.error||"Validation failed")},[C,F,I]);TQ((z,y)=>{if(y.escape){I(!1);return}if(y.return){W();return}if(y.backspace||y.delete){g((S)=>S.slice(0,-1)),G("idle");return}if(z&&!y.ctrl&&z.length===1)g((S)=>S+z),G("idle")});let q=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,K=dQ()==="zh";return L0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[L0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?bA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),L0.jsxDEV(h,{marginTop:1,children:[L0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),L0.jsxDEV(R,{children:q},void 0,!1,void 0,this),F==="idle"&&L0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&L0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",bA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&L0.jsxDEV(R,{color:"green",children:["\u2713 ",bA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&L0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),L0.jsxDEV(h,{marginTop:1,children:L0.jsxDEV(R,{dimColor:!0,children:["Enter ",K?"\u63D0\u4EA4":"submit"," Esc ",K?"\u53D6\u6D88":"cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var TY=YA(NB(),1);YQ();var FC=YA(xB(),1),a1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function vY({onDone:B}){let[I,C]=TY.useState(a1.findIndex((g)=>g.value===dQ()));return TQ((g,F)=>{if(F.upArrow)C((G)=>G>0?G-1:a1.length-1);if(F.downArrow)C((G)=>G<a1.length-1?G+1:0);if(F.return)ZN(a1[I].value),B();if(F.escape)B()}),FC.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[FC.jsxDEV(R,{bold:!0,children:["\uD83C\uDF10 ",bA("menu.changeLanguage")]},void 0,!0,void 0,this),a1.map((g,F)=>FC.jsxDEV(h,{gap:1,marginTop:F===0?1:0,children:[FC.jsxDEV(R,{color:"cyan",bold:F===I,children:F===I?"\u25B8":" "},void 0,!1,void 0,this),FC.jsxDEV(R,{bold:F===I,children:g.label},void 0,!1,void 0,this),g.value===dQ()&&FC.jsxDEV(R,{dimColor:!0,children:"\u2190"},void 0,!1,void 0,this)]},g.value,!0,void 0,this)),FC.jsxDEV(h,{marginTop:1,children:FC.jsxDEV(R,{dimColor:!0,children:"Enter select Esc back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var K4=YA(NB(),1);cB();cB();YQ();var HQ=YA(xB(),1);import{join as MP}from"path";var PY=MP(rB,".key-prompt.json");async function LP(){try{return await Bun.file(PY).json()}catch{return{}}}async function _Y(B){await Bun.write(PY,JSON.stringify(B))}async function VY(){if(await e6())return!1;let B=await LP();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function mY(B){if(B==="never")await _Y({never:!0});else{let I=new Date().toISOString().slice(0,10);await _Y({dismissed:I})}}var u4=[{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 fY({onDone:B}){let[I,C]=K4.useState(0),g=dQ()==="zh";return TQ(K4.useCallback((F,G)=>{if(G.upArrow){C((H)=>H>0?H-1:u4.length-1);return}if(G.downArrow){C((H)=>H<u4.length-1?H+1:0);return}if(G.escape){B("skip");return}if(G.return){B(u4[I].id);return}},[I,B])),HQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[HQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[HQ.jsxDEV(h,{gap:1,children:[HQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),HQ.jsxDEV(R,{bold:!0,children:g?"\u914D\u7F6E Tako API Key":"Configure Tako API Key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[HQ.jsxDEV(R,{dimColor:!0,children:g?"\u914D\u7F6E API Key \u540E\u5373\u53EF\u4F7F\u7528 Tako \u4EE3\u7406\u670D\u52A1\uFF0C\u83B7\u5F97\u7EDF\u4E00\u7684\u914D\u989D\u7BA1\u7406\u548C\u66F4\u5FEB\u7684\u8BBF\u95EE\u901F\u5EA6\u3002":"Configure your API Key to use Tako proxy service with unified quota and faster access."},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u4F60\u4E5F\u53EF\u4EE5\u8DF3\u8FC7\u6B64\u6B65\u9AA4\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u4ED6\u670D\u52A1\u5546\u3002":"You can skip this and use other providers instead."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:u4.map((F,G)=>{let H=G===I;return HQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[HQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),HQ.jsxDEV(R,{bold:H,color:H?F.color||"white":void 0,children:g?F.label.zh:F.label.en},void 0,!1,void 0,this),H&&HQ.jsxDEV(R,{dimColor:!0,children:g?F.hint.zh:F.hint.en},void 0,!1,void 0,this)]},F.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),HQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),HQ.jsxDEV(R,{dimColor:!0,children:g?"\u8DF3\u8FC7":"skip"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var TI=YA(NB(),1);YQ();var $B=YA(xB(),1),dH=12,hY={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function bY({onDone:B}){let I=jg(),C=dQ()==="zh",[g,F]=TI.useState(0),[G,H]=TI.useState(0),[M,L]=TI.useState(0),[u,W]=TI.useState({}),[q,K]=TI.useState(null),[z,y]=TI.useState(""),S=I[g],k=TI.useCallback(async(NA)=>{W((UA)=>({...UA,[NA]:{loading:!0,versions:[],current:null}}));let RA=I.find((UA)=>UA.id===NA);if(!RA)return;try{let[UA,t]=await Promise.all([Q3(RA.package),E3(RA)]),MA=UA.map(($A)=>({...$A,isCurrent:$A.version===t}));W(($A)=>({...$A,[NA]:{loading:!1,versions:MA,current:t}}))}catch(UA){W((t)=>({...t,[NA]:{loading:!1,error:UA.message,versions:[],current:null}}))}},[I]);TI.useEffect(()=>{if(!S)return;if(!u[S.id])k(S.id)},[g,S?.id]),TI.useEffect(()=>{H(0),L(0)},[g]),TI.useEffect(()=>{if(!z)return;let NA=setTimeout(()=>y(""),3000);return()=>clearTimeout(NA)},[z]);let i=S?u[S.id]:void 0,l=i?.versions??[],CA=TI.useCallback(async(NA)=>{if(!S||q)return;K(NA);try{await I3(S,NA),y(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${NA}`:`\u2713 Switched to ${NA}`),await k(S.id)}catch(RA){y(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${RA.message}`:`\u2717 Install failed: ${RA.message}`)}finally{K(null)}},[S,q,k,C]);TQ((NA,RA)=>{if(q)return;if(RA.escape||NA==="q"){B();return}if(RA.leftArrow){F((t)=>t>0?t-1:I.length-1);return}if(RA.rightArrow){F((t)=>t<I.length-1?t+1:0);return}if(NA==="r"){if(S)k(S.id);return}if(!l.length)return;let UA=l.length-1;if(RA.upArrow){H((t)=>{let MA=Math.max(0,t-1);if(MA<M)L(MA);return MA});return}if(RA.downArrow){H((t)=>{let MA=Math.min(UA,t+1);if(MA>=M+dH)L(MA-dH+1);return MA});return}if(RA.return){let t=l[G];if(t&&!t.isCurrent)CA(t.version)}});let QA=hY[S?.id]?.color||"white",wA=l.slice(M,M+dH);return $B.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[$B.jsxDEV(h,{borderStyle:"round",borderColor:"gray",paddingX:3,children:[$B.jsxDEV(R,{bold:!0,children:["\uD83D\uDCE6 ",C?"\u5BA2\u6237\u7AEF\u7248\u672C\u7BA1\u7406":"Client Versions"]},void 0,!0,void 0,this),z&&$B.jsxDEV(R,{color:z.startsWith("\u2713")?"green":"red",children:[" ",z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$B.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:I.map((NA,RA)=>{let UA=hY[NA.id]||{icon:"\u25AA",color:"white"},t=RA===g;return $B.jsxDEV(h,{borderStyle:t?"bold":"single",borderColor:t?UA.color:"gray",paddingX:2,children:$B.jsxDEV(R,{bold:t,color:t?UA.color:void 0,dimColor:!t,children:[UA.icon," ",NA.name]},void 0,!0,void 0,this)},NA.id,!1,void 0,this)})},void 0,!1,void 0,this),$B.jsxDEV(h,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:QA,paddingX:2,paddingY:1,children:!i||i.loading?$B.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):i.error?$B.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",i.error]},void 0,!0,void 0,this):l.length===0?$B.jsxDEV(R,{dimColor:!0,children:C?"\u6682\u65E0\u7248\u672C":"No versions"},void 0,!1,void 0,this):$B.jsxDEV(h,{flexDirection:"column",children:[$B.jsxDEV(R,{dimColor:!0,children:[C?`\u5171 ${l.length} \u4E2A\u7248\u672C\uFF0C\u5F53\u524D\u5B89\u88C5\uFF1A`:`${l.length} versions, current: `,$B.jsxDEV(R,{color:QA,children:i.current??(C?"\u672A\u5B89\u88C5":"not installed")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$B.jsxDEV(h,{marginTop:1,flexDirection:"column",children:wA.map((NA,RA)=>{let t=M+RA===G,MA=NA.publishedAt?NA.publishedAt.slice(0,10):"",$A=NA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",ZA=q===NA.version,WA=t?QA:NA.isCurrent?"green":void 0;return $B.jsxDEV(h,{paddingLeft:1,children:$B.jsxDEV(R,{color:WA,bold:t,dimColor:!t&&!NA.isCurrent,children:[t?"\u25B6 ":" ",NA.version.padEnd(16),MA.padEnd(14),$A,ZA?C?" \u23F3 \u5B89\u88C5\u4E2D...":" \u23F3 installing...":""]},void 0,!0,void 0,this)},NA.version,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$B.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5207\u6362\u5DE5\u5177":"switch"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u9009\u62E9":"select"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5B89\u88C5":"install"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),$B.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var bQ=YA(NB(),1);YQ();K3();var tQ=YA(NB(),1);YQ();K3();lg();var YB=YA(xB(),1),jY=300,xY=200;function UP(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 pY({sid:B,onBack:I}){let C=F0()==="zh",[g,F]=tQ.useState(null),[G,H]=tQ.useState([]),[M,L]=tQ.useState(""),[u,W]=tQ.useState("idle"),[q,K]=tQ.useState(null),[z,y]=tQ.useState([]),S=tQ.useRef(0),k=tQ.useCallback(async()=>{let QA=await M2(B,xY);if(!QA)return;F(QA.meta),H(QA.log);try{let NA=await(await import("fs/promises")).stat(cQ(B));S.current=NA.size}catch{S.current=0}},[B]);tQ.useEffect(()=>{k()},[k]),tQ.useEffect(()=>{let QA=!1,wA=null,NA=async()=>{if(QA)return;try{let RA=await import("fs/promises"),UA=await RA.stat(cQ(B));if(UA.size>S.current){let t=await RA.open(cQ(B),"r"),MA=Buffer.alloc(UA.size-S.current);await t.read(MA,0,MA.length,S.current),await t.close(),S.current=UA.size;let $A=[];for(let ZA of MA.toString("utf-8").split(`
830
830
  `)){if(!ZA.trim())continue;try{$A.push(JSON.parse(ZA))}catch{}}if($A.length)H((ZA)=>[...ZA,...$A].slice(-xY))}if(Math.random()<0.1){let t=await M2(B,0);if(t)F(t.meta)}y(await D1(B))}catch{}wA=setTimeout(NA,jY)};return wA=setTimeout(NA,jY),()=>{if(QA=!0,wA)clearTimeout(wA)}},[B]);let i=tQ.useCallback(async()=>{if(u!=="idle"||!M.trim())return;let QA=M;L(""),K(null),W("sending");try{await G1(B,QA)}catch(wA){K(wA instanceof Error?wA.message:String(wA))}finally{W("idle");let wA=await M2(B,0);if(wA)F(wA.meta)}},[B,M,u]),l=tQ.useCallback(async()=>{if(u!=="sending")return I();W("cancelling"),await N1(B).catch(()=>{})},[u,B,I]),CA=tQ.useCallback(async(QA)=>{let wA=z[0];if(!wA)return;await F3(B,wA.approvalId,{decision:QA?"allow":"deny",by:"tui",decidedAt:Date.now()}),y((NA)=>NA.filter((RA)=>RA.approvalId!==wA.approvalId))},[z,B]);if(TQ((QA,wA)=>{if(wA.ctrl&&QA==="y"){CA(!0);return}if(wA.ctrl&&QA==="n"){CA(!1);return}if(wA.escape){l();return}if(wA.ctrl&&QA==="c"){l();return}if(wA.ctrl&&QA==="d"){I();return}if(wA.return){i();return}if(wA.backspace||wA.delete){L((NA)=>NA.slice(0,-1));return}if(M.length===0&&QA==="q"){I();return}if(QA&&!wA.ctrl&&QA.length===1)L((NA)=>NA+QA)}),!g)return YB.jsxDEV(h,{paddingX:2,paddingY:1,children:YB.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return YB.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[YB.jsxDEV(h,{children:[YB.jsxDEV(R,{bold:!0,children:"Session "},void 0,!1,void 0,this),YB.jsxDEV(R,{color:"cyan",children:g.sid.slice(0,8)},void 0,!1,void 0,this),YB.jsxDEV(R,{children:" "},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:g.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),YB.jsxDEV(h,{children:YB.jsxDEV(R,{dimColor:!0,children:[g.backend," \xB7 ",g.model??"-"," \xB7 status=",g.status," \xB7 turns=",g.turnCount]},void 0,!0,void 0,this)},void 0,!1,void 0,this),YB.jsxDEV(h,{children:YB.jsxDEV(R,{dimColor:!0,children:[C?"\u5DE5\u4F5C\u76EE\u5F55\uFF1A":"cwd: ",g.workdir]},void 0,!0,void 0,this)},void 0,!1,void 0,this),z.length>0&&YB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:1,children:[YB.jsxDEV(R,{color:"magenta",bold:!0,children:["\u26A0 ",z.length," ",C?"\u4E2A\u5F85\u5BA1\u6279":"pending"," \u2014 ",YB.jsxDEV(R,{bold:!0,children:"Ctrl-Y"},void 0,!1,void 0,this)," ",C?"\u6279\u51C6":"allow"," / ",YB.jsxDEV(R,{bold:!0,children:"Ctrl-N"},void 0,!1,void 0,this)," ",C?"\u62D2\u7EDD":"deny"]},void 0,!0,void 0,this),z.slice(0,3).map((QA,wA)=>YB.jsxDEV(R,{color:wA===0?"magenta":void 0,dimColor:wA!==0,children:[wA===0?"\u25B6 ":" ","[",QA.approvalType,"] ",QA.approvalId.slice(0,12)]},QA.approvalId,!0,void 0,this))]},void 0,!0,void 0,this),YB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:1,children:G.length===0?YB.jsxDEV(R,{dimColor:!0,children:C?"\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09":"(no log yet)"},void 0,!1,void 0,this):G.slice(-30).map((QA,wA)=>{let NA=UP(QA);return YB.jsxDEV(R,{color:NA.color,dimColor:NA.dim,children:NA.text||" "},wA,!1,void 0,this)})},void 0,!1,void 0,this),q&&YB.jsxDEV(h,{marginTop:1,children:YB.jsxDEV(R,{color:"red",children:["\u2717 ",q]},void 0,!0,void 0,this)},void 0,!1,void 0,this),YB.jsxDEV(h,{marginTop:1,children:[YB.jsxDEV(R,{color:"cyan",bold:!0,children:u==="sending"?"\u23F3 ":u==="cancelling"?"\u270B ":"\u25B6 "},void 0,!1,void 0,this),YB.jsxDEV(R,{children:M},void 0,!1,void 0,this),u==="idle"&&YB.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this),u==="sending"&&YB.jsxDEV(R,{dimColor:!0,children:[" (",C?"\u6B63\u5728\u53D1\u9001\u2026ESC \u53D6\u6D88":"sending\u2026 ESC cancel",")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),YB.jsxDEV(h,{marginTop:1,gap:2,children:[YB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:C?"\u53D1\u9001":"send"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,bold:!0,children:"^Y/^N"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:C?"\u6279/\u62D2":"allow/deny"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),YB.jsxDEV(R,{dimColor:!0,children:C?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var yA=YA(xB(),1);function iY(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 uP(B){switch(B){case"running":return"yellow";case"idle":return"green";case"closed":return"gray";case"dead":return"red";default:return"white"}}function dY({onDone:B}){let I=F0()==="zh",[C,g]=bQ.useState(null),[F,G]=bQ.useState({}),[H,M]=bQ.useState(0),[L,u]=bQ.useState(null),[W,q]=bQ.useState(0),[K,z]=bQ.useState({kind:"list"}),y=bQ.useCallback(async()=>{let[S,k]=await Promise.all([M3(),u3()]);g(S),G(k),M((i)=>Math.max(0,Math.min(i,S.length-1)))},[]);if(bQ.useEffect(()=>{y()},[y,W]),bQ.useEffect(()=>{let S=setInterval(()=>q((k)=>k+1),5000);return()=>clearInterval(S)},[]),TQ((S,k)=>{if(L)return;if(K.kind!=="list")return;if(k.escape||S==="q"){B();return}if(S==="n"){z({kind:"new",backend:"claude",model:"",name:"",field:"backend"});return}if(!C||C.length===0){if(S==="r")q((l)=>l+1);return}if(k.upArrow||S==="k"){M((l)=>Math.max(0,l-1));return}if(k.downArrow||S==="j"){M((l)=>Math.min(C.length-1,l+1));return}if(S==="r"){q((l)=>l+1);return}if(S==="p"){u(I?"\u6E05\u7406\u4E2D...":"purging..."),U3().then(()=>{u(null),y()});return}let i=C[H];if(!i)return;if(k.return||S==="o"){z({kind:"detail",sid:i.sid});return}if(S==="d"){u(`closing ${i.sid.slice(0,8)}...`),ag(i.sid,!1).then(()=>{u(null),y()});return}if(S==="x"){u(`purging ${i.sid.slice(0,8)}...`),ag(i.sid,!0).then(()=>{u(null),y()});return}}),K.kind==="detail")return yA.jsxDEV(pY,{sid:K.sid,onBack:()=>{z({kind:"list"}),y()}},void 0,!1,void 0,this);if(K.kind==="new")return yA.jsxDEV(KP,{initial:K,onCancel:()=>z({kind:"list"}),onCreated:(S)=>{z({kind:"detail",sid:S})}},void 0,!1,void 0,this);if(!C)return yA.jsxDEV(h,{paddingX:2,paddingY:1,children:yA.jsxDEV(R,{dimColor:!0,children:I?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return yA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[yA.jsxDEV(R,{bold:!0,children:I?"Agent \u4F1A\u8BDD\u7BA1\u7406":"Agent Sessions"},void 0,!1,void 0,this),yA.jsxDEV(h,{marginTop:1,children:yA.jsxDEV(R,{dimColor:!0,children:[I?"\u9ED8\u8BA4 Provider\uFF1A":"Defaults: ",Object.keys(F).length===0?I?"\uFF08\u672A\u8BBE\u7F6E\uFF09":"(unset)":Object.entries(F).map(([S,k])=>`${S}=${k.slice(0,8)}`).join(" \u2502 ")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.length===0?yA.jsxDEV(h,{marginTop:2,flexDirection:"column",children:yA.jsxDEV(R,{dimColor:!0,children:I?"\uFF08\u6682\u65E0 session \u2014 \u6309 n \u65B0\u5EFA\uFF09":"(no sessions \u2014 press n to create)"},void 0,!1,void 0,this)},void 0,!1,void 0,this):yA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[yA.jsxDEV(h,{children:yA.jsxDEV(R,{bold:!0,children:["sid".padEnd(10),"backend".padEnd(9),"name".padEnd(20),"model".padEnd(22),"status".padEnd(9),"turns".padEnd(7),"age".padEnd(6),"last"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.map((S,k)=>{let i=k===H;return yA.jsxDEV(h,{children:[yA.jsxDEV(R,{color:i?"cyan":void 0,inverse:i,children:i?"\u25B6 ":" "},void 0,!1,void 0,this),yA.jsxDEV(R,{color:i?"cyan":void 0,children:S.sid.slice(0,8).padEnd(10)},void 0,!1,void 0,this),yA.jsxDEV(R,{children:S.backend.padEnd(9)},void 0,!1,void 0,this),yA.jsxDEV(R,{children:(S.name??"").slice(0,18).padEnd(20)},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:(S.model??"-").slice(0,20).padEnd(22)},void 0,!1,void 0,this),yA.jsxDEV(R,{color:uP(S.status),children:S.status.padEnd(9)},void 0,!1,void 0,this),yA.jsxDEV(R,{children:String(S.turnCount).padEnd(7)},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:iY(Date.now()-S.createdAt).padEnd(6)},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:iY(Date.now()-S.lastActiveAt)},void 0,!1,void 0,this)]},S.sid,!0,void 0,this)})]},void 0,!0,void 0,this),L&&yA.jsxDEV(h,{marginTop:1,children:yA.jsxDEV(R,{color:"yellow",children:["\u23F3 ",L]},void 0,!0,void 0,this)},void 0,!1,void 0,this),yA.jsxDEV(h,{marginTop:2,gap:2,children:[yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u9009\u62E9":"select"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u8FDB\u5165":"open"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"n"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u65B0\u5EFA":"new"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u5173\u95ED":"close"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"x"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u5220\u9664":"purge"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:I?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function KP({initial:B,onCancel:I,onCreated:C}){let g=F0()==="zh",[F,G]=bQ.useState(B.backend),[H,M]=bQ.useState(B.model),[L,u]=bQ.useState(B.name),[W,q]=bQ.useState(B.field),[K,z]=bQ.useState(!1),[y,S]=bQ.useState(null),k=bQ.useCallback(async()=>{if(K)return;z(!0),S(null);try{let i=await w1({backend:F,model:H.trim()||void 0,name:L.trim()||void 0});C(i.sid)}catch(i){S(i instanceof Error?i.message:String(i)),z(!1)}},[F,H,L,K,C]);return TQ((i,l)=>{if(K)return;if(l.escape){I();return}if(l.tab||l.downArrow){q((CA)=>CA==="backend"?"model":CA==="model"?"name":"backend");return}if(l.upArrow){q((CA)=>CA==="backend"?"name":CA==="model"?"backend":"model");return}if(W==="backend"){if(l.leftArrow||l.rightArrow||i===" "){G((CA)=>CA==="claude"?"codex":"claude");return}if(l.return){k();return}return}if(W==="model"){if(l.return){q("name");return}if(l.backspace||l.delete){M((CA)=>CA.slice(0,-1));return}if(i&&!l.ctrl&&i.length===1)M((CA)=>CA+i);return}if(W==="name"){if(l.return){k();return}if(l.backspace||l.delete){u((CA)=>CA.slice(0,-1));return}if(i&&!l.ctrl&&i.length===1)u((CA)=>CA+i)}}),yA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[yA.jsxDEV(R,{bold:!0,children:g?"\u65B0\u5EFA Agent Session":"New agent session"},void 0,!1,void 0,this),yA.jsxDEV(h,{marginTop:1,children:yA.jsxDEV(R,{color:W==="backend"?"cyan":void 0,bold:W==="backend",children:[W==="backend"?"\u25B6 ":" ",g?"\u540E\u7AEF":"backend",": ",F==="claude"?"\u25CF claude \u25CB codex":"\u25CB claude \u25CF codex"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),yA.jsxDEV(h,{children:yA.jsxDEV(R,{color:W==="model"?"cyan":void 0,bold:W==="model",children:[W==="model"?"\u25B6 ":" ",g?"\u6A21\u578B":"model",": ",H||(g?"\uFF08\u7559\u7A7A\u8D70\u9ED8\u8BA4\uFF09":"(default)"),W==="model"&&yA.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),yA.jsxDEV(h,{children:yA.jsxDEV(R,{color:W==="name"?"cyan":void 0,bold:W==="name",children:[W==="name"?"\u25B6 ":" ",g?"\u540D\u5B57":"name",": ",L||(g?"\uFF08\u7559\u7A7A\u81EA\u52A8\uFF09":"(auto)"),W==="name"&&yA.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),y&&yA.jsxDEV(h,{marginTop:1,children:yA.jsxDEV(R,{color:"red",children:["\u2717 ",y]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&yA.jsxDEV(h,{marginTop:1,children:yA.jsxDEV(R,{color:"yellow",children:["\u23F3 ",g?"\u521B\u5EFA\u4E2D...":"creating..."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),yA.jsxDEV(h,{marginTop:1,gap:2,children:[yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Tab/\u2191\u2193"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:g?"\u5207\u5B57\u6BB5":"switch"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:g?"\u521B\u5EFA":"create"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),yA.jsxDEV(R,{dimColor:!0,children:g?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}sE();var oI=YA(xB(),1);function RP({onLaunch:B,onExit:I,initialView:C="launcher"}){let[g,F]=U0.useState(C),[G,H]=U0.useState([]),M=U0.useRef(null),L=U0.useRef(!1);U0.useEffect(()=>{if(L.current||C!=="launcher")return;L.current=!0,VY().then((y)=>{if(y)F("key-guide")})},[C]);let u=U0.useCallback((y)=>{if(H((S)=>[...S.slice(-4),y]),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)},[]);U0.useEffect(()=>{let y=0;return oU({info:(S)=>u({text:S,type:"info"}),warn:(S)=>u({text:S,type:"warn"}),error:(S)=>u({text:S,type:"error"}),success:(S)=>u({text:S,type:"success"}),spin:(S)=>{let k=++y;return u({id:k,text:S,type:"spin"}),{stop:(i)=>{if(H((l)=>{let CA=l.filter((QA)=>QA.id!==k);if(i)CA.push({text:i,type:"success"});return CA.slice(-5)}),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)},update:(i)=>{if(H((l)=>l.map((CA)=>CA.id===k?{...CA,text:i}:CA)),M.current)clearTimeout(M.current);M.current=setTimeout(()=>H([]),5000)}}}}),()=>fw()},[u]);let W=U0.useCallback(()=>F("launcher"),[]),q={info:"cyan",warn:"yellow",error:"red",success:"green",spin:"yellow"},K={info:"\u2139",warn:"\u26A0",error:"\u2717",success:"\u2713",spin:"\u23F3"},z=(()=>{switch(g){case"launcher":return oI.jsxDEV(YY,{onResult:(y)=>{switch(y.type){case"launch":B(y);break;case"agent":F("agents");break;case"providers":F("providers");break;case"stats":F("stats");break;case"config":F("config");break;case"language":F("language");break;case"exit":I();break}}},void 0,!1,void 0,this);case"providers":return oI.jsxDEV(OY,{onDone:(y)=>{if(y==="client-versions")F("client-versions");else W()}},void 0,!1,void 0,this);case"agents":return oI.jsxDEV(dY,{onDone:W},void 0,!1,void 0,this);case"client-versions":return oI.jsxDEV(bY,{onDone:()=>F("providers")},void 0,!1,void 0,this);case"stats":return oI.jsxDEV(kY,{onExit:W},void 0,!1,void 0,this);case"config":return oI.jsxDEV($Y,{isReconfigure:!0,onDone:W},void 0,!1,void 0,this);case"language":return oI.jsxDEV(vY,{onDone:W},void 0,!1,void 0,this);case"key-guide":return oI.jsxDEV(fY,{onDone:(y)=>{if(y==="configure")F("config");else mY(y).then(()=>F("launcher"))}},void 0,!1,void 0,this)}})();return oI.jsxDEV(h,{flexDirection:"column",children:[G.length>0&&oI.jsxDEV(h,{flexDirection:"column",paddingX:2,children:G.map((y,S)=>oI.jsxDEV(R,{color:q[y.type],dimColor:y.type==="info",children:[K[y.type]," ",y.text]},S,!0,void 0,this))},void 0,!1,void 0,this),z]},void 0,!0,void 0,this)}function cH(){return new Promise((B)=>{let I=null;function C(){try{if(process.stdin.removeAllListeners(),process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause(),process.stdin.unref()}catch{}}function g(G){I?.clear(),I?.unmount(),I=null,C(),fw(),B(G)}function F(){I?.clear(),I?.unmount(),I=null,C(),fw(),B(null)}I=VH(oI.jsxDEV(RP,{onLaunch:g,onExit:F},void 0,!1,void 0,this))})}WI();YQ();JE();sE();w0();cB();w0();var WP=2000,cY=100;function XE(B){if(bF||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${B}
831
831
  `)}function lY(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 YP(B,I){let C=`${B}/v1/announcements/popup`;try{let g=await fetch(C,{headers:{Authorization:`Bearer ${I}`},signal:AbortSignal.timeout(WP)});if(!g.ok)return XE(`HTTP ${g.status} from ${C}\uFF08par \u53EF\u80FD\u672A\u90E8\u7F72\u65B0\u8DEF\u7531 /v1/announcements/popup\uFF09`),null;let G=(await g.json())?.announcement;if(!G)return XE("\u8FD4\u56DE announcement=null\uFF08par \u540E\u53F0\u6CA1\u6709 published+popup=true \u7684\u516C\u544A\uFF09"),null;if(typeof G.id!=="string"||typeof G.title!=="string")return XE(`payload \u7F3A id/title\uFF0C\u4E22\u5F03\uFF1A${JSON.stringify(G)}`),null;return XE(`\u62C9\u5230\u516C\u544A id=${G.id} title=${G.title} popup_once=${!!G.popup_once}`),{id:G.id,title:G.title,content:G.content??"",type:G.type,popup_once:!!G.popup_once}}catch(g){return XE(`fetch \u5931\u8D25\uFF1A${g instanceof Error?g.message:String(g)}`),null}}async function ZP(B){return((await QB()).seenAnnouncementIds??[]).includes(B)}async function XP(B){let I=await QB(),C=I.seenAnnouncementIds??[];if(C.includes(B))return;let g=[...C,B];if(g.length>cY)g.splice(0,g.length-cY);I.seenAnnouncementIds=g,await RI(I)}async function qP(){let B=lY(await lI());if(B)return B;for(let I of await SI()){let C=lY(I);if(C)return C}return null}async function aY(){let B=await qP();if(!B){XE("\u8DF3\u8FC7\uFF1A\u6CA1\u6709\u53EF\u7528\u7684 tako/custom provider\uFF08apiKey + baseUrl\uFF09");return}XE(`\u67E5\u8BE2\u516C\u544A\uFF1A${B.baseUrl}/v1/announcements/popup`);let I=await YP(B.baseUrl,B.apiKey);if(!I)return;if(I.popup_once&&await ZP(I.id)){XE(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${I.id}`);return}if(XE(`\u5F39\u7A97\uFF1A${I.id}`),await _7(I),I.popup_once)await XP(I.id),XE(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${I.id}`)}async function oY(){await SN(),await kN(),await Hu(),await Promise.race([JN(await SI()),new Promise((B)=>setTimeout(B,3000))]),await aY()}async function nY(B){let I=dI(B.clientId);if(!I)return!1;fQ("menu_action",{action:"launch",client_id:B.clientId});let C=await A3(B.clientId);if(!C)return iA.warn(bA("cli.noProvider")||"\u672A\u914D\u7F6E\u53EF\u7528\u7684\u670D\u52A1\u5546"),!1;let F=process.platform==="win32"&&!!process.env.TAKO_WINDOWS_HANDOFF_FILE,G=await ow(I,{projectPath:B.projectPath,args:B.args,envVars:B.envVars,selectedOptionIds:B.selectedOptionIds,providerContext:C,relaunchTakoOnWindows:F});if(!G.success)return iA.error(G.error||bA("cli.launchFailed")),!1;if(F)return!0;return!1}async function rY(){await oY();while(!0){let B=await cH();if(!B)break;if(B.type!=="launch")continue;if(await nY(B))process.exit(0)}}await AK(rY);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.3.24",
3
+ "version": "0.3.25",
4
4
  "description": "Tako CLI — unified launcher for AI coding tools (Claude Code, Codex, Gemini) with multi-agent session management",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/tako-dev/cli#readme",