tako-cli 0.3.17 → 0.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index-ink.js CHANGED
@@ -8,7 +8,7 @@ var oq=Object.create;var{getPrototypeOf:nq,defineProperty:fF,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 fw={};F0(fw,{writeClaudeAuth:()=>BO,readClaudeAuth:()=>AO});import{homedir as BL,platform as ak,userInfo as ok}from"os";import{join as YN}from"path";function IL(){return[process.env.USER||(()=>{try{return ok().username}catch{return""}})(),"root"].filter(Boolean)}async function nk(B){let I=Bun.spawn(["security","find-generic-password","-s",QL,"-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 rk(){for(let B of IL()){let I=await nk(B);if(I)return I}return null}async function sk(B){let I=JSON.stringify(B),C=IL()[0],g=Bun.spawn(["security","add-generic-password","-U","-s",QL,"-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 tk(){try{let B=await import("fs/promises");return JSON.parse(await B.readFile(CL,"utf-8"))}catch{return null}}async function ek(B){let I=await import("fs/promises");await I.mkdir(EL,{recursive:!0}),await I.writeFile(CL,JSON.stringify(B,null,2)+`
10
10
  `,{mode:384})}async function AO(){let B=gL?await rk():await tk(),I;try{let C=await import("fs/promises"),g=JSON.parse(await C.readFile(RN,"utf-8"));if(g.oauthAccount&&typeof g.oauthAccount==="object")I=g.oauthAccount}catch{}return{credentials:B??void 0,oauthAccount:I}}async function BO(B){if(B.credentials)if(gL)await sk(B.credentials);else await ek(B.credentials);if(B.oauthAccount){let I=await import("fs/promises"),C={};try{C=JSON.parse(await I.readFile(RN,"utf-8"))}catch{}C.oauthAccount=B.oauthAccount,await I.writeFile(RN,JSON.stringify(C,null,2)+`
11
- `)}}var QL="Claude Code-credentials",EL,CL,RN,gL;var hw=SB(()=>{EL=YN(BL(),".claude"),CL=YN(EL,".credentials.json"),RN=YN(BL(),".claude.json"),gL=ak()==="darwin"});var DL={};F0(DL,{updateProvider:()=>pg,setDefaultProvider:()=>ZN,setClientProvider:()=>lF,resolveXiaomiBaseUrl:()=>UN,resolveProviderContext:()=>$I,migrateIfNeeded:()=>XN,mergeDetectedProviders:()=>oF,isProviderCompatible:()=>Q2,getProvidersForClient:()=>eE,getProviders:()=>yI,getProvider:()=>QO,getModelChoices:()=>dF,getDefaultSupportedClients:()=>cI,getDefaultProvider:()=>lI,getDefaultModel:()=>B2,getDefaultBaseUrl:()=>uN,getClientProvider:()=>AC,fixupProviders:()=>qN,detectProviders:()=>aF,deleteProvider:()=>WN,addProvider:()=>xg,XIAOMI_TOKEN_PLAN_URL:()=>sU,XIAOMI_ANTHROPIC_URL:()=>JN,PROVIDER_TYPE_NAMES:()=>w0,DEEPSEEK_ANTHROPIC_URL:()=>MN});async function yI(){return(await QB()).providers??[]}async function QO(B){return(await yI()).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 eE(B){return(await yI()).filter((g)=>Q2(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 WI(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 WI(C)}async function WN(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 WI(I)}async function ZN(B){let I=await QB();if(!(I.providers??[]).some((g)=>g.id===B))return;I.defaultProviderId=B,await WI(I)}async function AC(B){let I=await QB(),C=I.clientProviderMap?.[B];if(C){let g=(I.providers??[]).find((F)=>F.id===C);if(g&&Q2(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 WI(C)}function $I(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:u}=await Promise.resolve().then(() => (hw(),fw)),J=await u(),L=J.credentials||J.oauthAccount?{credentials:J.credentials,oauthAccount:J.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:L}}catch{return null}}async function EO(){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 EO();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 u=C.find((J)=>J.type===G.type&&J.email===G.email);if(u)u.authData=G.authData}}if(F>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await WI(I)}return F}async function XN(){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:eQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await WI(B),!0}async function qN(){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:eQ,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 WI(B)}var N0=SB(()=>{iB();dC();dC()});var RL={};F0(RL,{showRegionInfo:()=>zN,getNpmRegistry:()=>aI,getMirrors:()=>LL,getLatestBunVersion:()=>KL,getBunMirrorDownloadUrl:()=>ON,getBunInstallCommand:()=>kN,detectRegion:()=>cC,MIRRORS:()=>nF});import{readFileSync as zO,writeFileSync as SO,mkdirSync as yO}from"fs";import{join as ML}from"path";import{homedir as JL}from"os";function TO(){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 vO(){try{let B=zO(UL,"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>$O)return null;return I.region}catch{return null}}function uL(B){try{yO(ML(JL(),".tako"),{recursive:!0}),SO(UL,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function _O(){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 VO(){if(bw)return bw;return bw=(async()=>{let I=[PO,mO,fO,hO].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"}})(),bw}async function cC(){if(E2)return E2;let B=TO();if(B)return E2=B,B;let I=vO();if(I)return E2=I,I;let C=_O();if(C)return E2=C,uL(C),C;let g=await VO();return E2=g,uL(g),g}async function PO(){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 mO(){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 fO(){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 hO(){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 LL(){let B=await cC();return nF[B]}async function aI(){return(await LL()).npm}function kN(){return"curl -fsSL https://bun.sh/install | bash"}async function KL(){let B=nF.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),u=G.replace("bun-v","").split(".").map(Number);for(let J=0;J<3;J++)if(H[J]!==u[J])return u[J]-H[J];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function ON(){let B=nF.cn.bunBinary,I=await KL(),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 zN(){let B=await cC(),I=nF[B];if(B==="cn")lA.info(`${bA("region.usingChinaMirror")} npm: ${I.npm}`);else lA.info(bA("region.usingGlobalMirror"))}var E2=null,bw=null,UL,$O=2592000000,nF;var C2=SB(()=>{WQ();tE();UL=ML(JL(),".tako","region.json"),nF={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var bO=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)}},YL=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 bO({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 WL=()=>{};function ZL(){if(!g2)g2=new YL({clientId:jO,clientSecret:xO,apiUrl:pO});return g2}function XL(B,I,C){let g=ZL().track(B,{profileId:I,...C}).catch(()=>{});jw.push(g)}function qL(B,I){let{email:C,...g}=I,F=ZL().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});jw.push(F)}async function kL(){if(await Promise.allSettled(jw),jw.length=0,g2){try{g2.flush()}catch{}g2=null}}var jO="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",xO="sec_1e0ea34016bc3a5f8ef5",pO="https://op.shiroha.tech/api",g2=null,jw;var OL=SB(()=>{WL();jw=[]});function zL(){return{cli_version:iO,platform:process.platform,arch:process.arch,locale:G0(),node_version:process.version}}function SL(B){return Bun.hash(B).toString(16).slice(0,8)}var iO="0.3.17";var SN=SB(()=>{WQ()});async function yL(){if(D2!==null)return D2;try{return D2=(await QB()).telemetryEnabled!==!1,D2}catch{return D2=!1,!1}}async function $L(){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(yN)return;try{if(!await yL())return;let B=await QB(),I=await $L();if(I==="anonymous")return;let g=(B.providers??[]).find((G)=>G.email)?.email,F=await cC();qL(I,{...g?{email:g}:{},region:F,locale:G0(),first_seen_version:dO,platform:process.platform,arch:process.arch}),yN=!0}catch{}}function PQ(B,I){cO(B,I).catch(()=>{})}async function cO(B,I){try{if(!await yL())return;let C=await $L();XL(B,C,{...zL(),...I})}catch{}}async function rF(){await kL()}function QC(){D2=null,yN=!1}var dO="0.3.17",yN=!1,D2=null;var uE=SB(()=>{OL();iB();C2();WQ();SN();SN()});function nO(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 xw(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(nO(I,F))};H();let u=setInterval(H,1000),J=(X)=>{if(!X)return;if(G.push(X),lO.test(X))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(TL.test(X)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let q=X.match(TL);if(q)F.pkgCount=parseInt(q[1],10)}else if(aO.test(X))F.phase="\u5199\u5165 lockfile";else if(oO.test(X))F.phase="\u5B8C\u6210";H()},L=async(X)=>{if(!X)return;let q=X.getReader(),K=new TextDecoder,O="";try{while(!0){let{done:y,value:z}=await q.read();if(y)break;O+=K.decode(z,{stream:!0}).replace(/\r/g,"");let $=O.split(`
11
+ `)}}var QL="Claude Code-credentials",EL,CL,RN,gL;var hw=SB(()=>{EL=YN(BL(),".claude"),CL=YN(EL,".credentials.json"),RN=YN(BL(),".claude.json"),gL=ak()==="darwin"});var DL={};F0(DL,{updateProvider:()=>pg,setDefaultProvider:()=>ZN,setClientProvider:()=>lF,resolveXiaomiBaseUrl:()=>UN,resolveProviderContext:()=>$I,migrateIfNeeded:()=>XN,mergeDetectedProviders:()=>oF,isProviderCompatible:()=>Q2,getProvidersForClient:()=>eE,getProviders:()=>yI,getProvider:()=>QO,getModelChoices:()=>dF,getDefaultSupportedClients:()=>cI,getDefaultProvider:()=>lI,getDefaultModel:()=>B2,getDefaultBaseUrl:()=>uN,getClientProvider:()=>AC,fixupProviders:()=>qN,detectProviders:()=>aF,deleteProvider:()=>WN,addProvider:()=>xg,XIAOMI_TOKEN_PLAN_URL:()=>sU,XIAOMI_ANTHROPIC_URL:()=>JN,PROVIDER_TYPE_NAMES:()=>w0,DEEPSEEK_ANTHROPIC_URL:()=>MN});async function yI(){return(await QB()).providers??[]}async function QO(B){return(await yI()).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 eE(B){return(await yI()).filter((g)=>Q2(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 WI(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 WI(C)}async function WN(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 WI(I)}async function ZN(B){let I=await QB();if(!(I.providers??[]).some((g)=>g.id===B))return;I.defaultProviderId=B,await WI(I)}async function AC(B){let I=await QB(),C=I.clientProviderMap?.[B];if(C){let g=(I.providers??[]).find((F)=>F.id===C);if(g&&Q2(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 WI(C)}function $I(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:u}=await Promise.resolve().then(() => (hw(),fw)),J=await u(),L=J.credentials||J.oauthAccount?{credentials:J.credentials,oauthAccount:J.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:L}}catch{return null}}async function EO(){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 EO();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 u=C.find((J)=>J.type===G.type&&J.email===G.email);if(u)u.authData=G.authData}}if(F>0){if(I.providers=C,!I.defaultProviderId&&C.length>0)I.defaultProviderId=C[0].id;await WI(I)}return F}async function XN(){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:eQ,apiId:B.apiId,supportedClients:cI("tako"),createdAt:new Date().toISOString(),builtin:!0};return B.providers=[I],B.defaultProviderId=I.id,await WI(B),!0}async function qN(){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:eQ,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 WI(B)}var N0=SB(()=>{iB();dC();dC()});var RL={};F0(RL,{showRegionInfo:()=>zN,getNpmRegistry:()=>aI,getMirrors:()=>LL,getLatestBunVersion:()=>KL,getBunMirrorDownloadUrl:()=>ON,getBunInstallCommand:()=>kN,detectRegion:()=>cC,MIRRORS:()=>nF});import{readFileSync as zO,writeFileSync as SO,mkdirSync as yO}from"fs";import{join as ML}from"path";import{homedir as JL}from"os";function TO(){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 vO(){try{let B=zO(UL,"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>$O)return null;return I.region}catch{return null}}function uL(B){try{yO(ML(JL(),".tako"),{recursive:!0}),SO(UL,JSON.stringify({region:B,detectedAt:Date.now()}),"utf-8")}catch{}}function _O(){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 VO(){if(bw)return bw;return bw=(async()=>{let I=[PO,mO,fO,hO].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"}})(),bw}async function cC(){if(E2)return E2;let B=TO();if(B)return E2=B,B;let I=vO();if(I)return E2=I,I;let C=_O();if(C)return E2=C,uL(C),C;let g=await VO();return E2=g,uL(g),g}async function PO(){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 mO(){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 fO(){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 hO(){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 LL(){let B=await cC();return nF[B]}async function aI(){return(await LL()).npm}function kN(){return"curl -fsSL https://bun.sh/install | bash"}async function KL(){let B=nF.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),u=G.replace("bun-v","").split(".").map(Number);for(let J=0;J<3;J++)if(H[J]!==u[J])return u[J]-H[J];return 0});if(g.length===0)throw Error("No bun versions found on mirror");return g[0]}async function ON(){let B=nF.cn.bunBinary,I=await KL(),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 zN(){let B=await cC(),I=nF[B];if(B==="cn")lA.info(`${bA("region.usingChinaMirror")} npm: ${I.npm}`);else lA.info(bA("region.usingGlobalMirror"))}var E2=null,bw=null,UL,$O=2592000000,nF;var C2=SB(()=>{WQ();tE();UL=ML(JL(),".tako","region.json"),nF={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var bO=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)}},YL=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 bO({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 WL=()=>{};function ZL(){if(!g2)g2=new YL({clientId:jO,clientSecret:xO,apiUrl:pO});return g2}function XL(B,I,C){let g=ZL().track(B,{profileId:I,...C}).catch(()=>{});jw.push(g)}function qL(B,I){let{email:C,...g}=I,F=ZL().identify({profileId:B,...typeof C==="string"?{email:C}:{},firstName:String(g.platform||""),properties:g}).catch(()=>{});jw.push(F)}async function kL(){if(await Promise.allSettled(jw),jw.length=0,g2){try{g2.flush()}catch{}g2=null}}var jO="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",xO="sec_1e0ea34016bc3a5f8ef5",pO="https://op.shiroha.tech/api",g2=null,jw;var OL=SB(()=>{WL();jw=[]});function zL(){return{cli_version:iO,platform:process.platform,arch:process.arch,locale:G0(),node_version:process.version}}function SL(B){return Bun.hash(B).toString(16).slice(0,8)}var iO="0.3.18";var SN=SB(()=>{WQ()});async function yL(){if(D2!==null)return D2;try{return D2=(await QB()).telemetryEnabled!==!1,D2}catch{return D2=!1,!1}}async function $L(){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(yN)return;try{if(!await yL())return;let B=await QB(),I=await $L();if(I==="anonymous")return;let g=(B.providers??[]).find((G)=>G.email)?.email,F=await cC();qL(I,{...g?{email:g}:{},region:F,locale:G0(),first_seen_version:dO,platform:process.platform,arch:process.arch}),yN=!0}catch{}}function PQ(B,I){cO(B,I).catch(()=>{})}async function cO(B,I){try{if(!await yL())return;let C=await $L();XL(B,C,{...zL(),...I})}catch{}}async function rF(){await kL()}function QC(){D2=null,yN=!1}var dO="0.3.18",yN=!1,D2=null;var uE=SB(()=>{OL();iB();C2();WQ();SN();SN()});function nO(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 xw(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(nO(I,F))};H();let u=setInterval(H,1000),J=(X)=>{if(!X)return;if(G.push(X),lO.test(X))F.phase="\u89E3\u6790\u4F9D\u8D56";else if(TL.test(X)){F.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let q=X.match(TL);if(q)F.pkgCount=parseInt(q[1],10)}else if(aO.test(X))F.phase="\u5199\u5165 lockfile";else if(oO.test(X))F.phase="\u5B8C\u6210";H()},L=async(X)=>{if(!X)return;let q=X.getReader(),K=new TextDecoder,O="";try{while(!0){let{done:y,value:z}=await q.read();if(y)break;O+=K.decode(z,{stream:!0}).replace(/\r/g,"");let $=O.split(`
12
12
  `);O=$.pop()??"";for(let d of $)J(d)}if(O)J(O)}finally{q.releaseLock()}};try{await Promise.all([L(B.stderr),L(B.stdout)])}finally{clearInterval(u)}return G.join(`
13
13
  `)}var lO,TL,aO,oO;var $N=SB(()=>{lO=/^Resolving dependencies/,TL=/^Resolved, downloaded and extracted \[(\d+)\]/,aO=/^Saved lockfile/,oO=/^(\d+) packages? installed/});function rO(B){return B.replace(/\r/g,`
14
14
  `).replace(/\n{3,}/g,`
@@ -738,12 +738,12 @@ ${H}`:G||H}function BN(B,{maxDepth:I=1000,numbersAsFloat:C=!1}={}){if(xF(B)!=="o
738
738
  `),{args:["--setting-sources","project,local","--settings",g],cleanedFields:u,settingsPath:g}}async function MO(B){let{readClaudeAuth:I,writeClaudeAuth:C}=await Promise.resolve().then(() => (hw(),fw)),{getProviders:g,updateProvider:F}=await Promise.resolve().then(() => (N0(),DL)),G=B.authData?.credentials,H=B.authData?.oauthAccount;if(!G){lA.warn(bA("claudeCode.subscriptionMissingAuth"));return}let u=await I(),J=u.oauthAccount?.emailAddress;if(J&&u.credentials){let q=(await g()).find((K)=>K.type==="claude-subscription"&&K.email===J);if(q){let K={credentials:u.credentials,oauthAccount:u.oauthAccount};if(JSON.stringify(q.authData)!==JSON.stringify(K))await F(q.id,{authData:K})}else if(J!==H?.emailAddress)lA.warn(bA("claudeCode.unknownCurrentAccount",{email:J}))}await C({credentials:G,oauthAccount:H});let L=H?.emailAddress||"?";lA.info(bA("claudeCode.subscriptionSwitched",{email:L}))}var JO={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?I2(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:MN,ANTHROPIC_AUTH_TOKEN:B.apiKey,...C?{ANTHROPIC_MODEL:C}:{}};case"xiaomi":return{...I,ANTHROPIC_BASE_URL:UN(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 uO();if(F)g=F.args}if(B.type==="claude-subscription")await MO(B);return g.length>0?{args:g}:void 0},launchOptions:(B)=>XO(B)},UO=[{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"]}],LO=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],KO=["deepseek-v4-flash","deepseek-v4-pro"],RO=["mimo-v2.5-pro"];function YO(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 SI.find((g)=>g.id===B)?.displayName??B}function I2(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=SI.find((C)=>C.id===B);if(!I||I.contextWindow<1e6)return B;return`${B}[1m]`}function FL(B){if(B>=1e6)return"1M";if(B>0)return`${Math.round(B/1000)}k`;return"?"}function WO(B){if(!B.baseUrl)return null;let I=iC(B.baseUrl,"claude");if(!I||I.length===0)return null;let C=iF(I);if(C.length===0)return null;return C.map((g)=>{let F=I2(g.id);return{id:`model-${g.id}`,label:{en:g.displayName,zh:g.displayName},shortLabel:g.displayName,description:{en:`Use ${g.displayName} (${FL(g.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${g.displayName}\uFF08\u4E0A\u4E0B\u6587 ${FL(g.contextWindow)}\uFF09`},flag:`--model ${F}`,args:[],envVars:{ANTHROPIC_MODEL:F},group:"model"}})}function ZO(B){if(HE(),B&&(B.type==="tako"||B.type==="custom")){let g=WO(B);if(g)return g}let I=B?.type==="deepseek"?KO:B?.type==="xiaomi"?RO:LO,C=[];for(let g of I){let G=SI.find((L)=>L.id===g)?.contextWindow??0,H=G>=1e6?"1M":G>0?`${Math.round(G/1000)}k`:"?",u=YO(g),J=I2(g);C.push({id:`model-${g}`,label:{en:u,zh:u},shortLabel:u,description:{en:`Use ${u} (${H} ctx)`,zh:`\u4F7F\u7528 ${u}\uFF08\u4E0A\u4E0B\u6587 ${H}\uFF09`},flag:`--model ${J}`,args:[],envVars:{ANTHROPIC_MODEL:J},group:"model"})}return C}function XO(B){return[...UO,...ZO(B)]}eD(JO);ZI();import{homedir as qO}from"os";import{join as NL}from"path";var HL=NL(qO(),".gemini"),GL=NL(HL,"settings.json");async function kO(){let B=await import("fs/promises");try{await B.mkdir(HL,{recursive:!0})}catch{}let I={};try{I=JSON.parse(await B.readFile(GL,"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(GL,JSON.stringify(I,null,2)+`
739
739
  `)}var OO={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:kO};eD(OO);ZI();tE();C2();iB();WQ();uE();$N();import{join as V0}from"path";function vL(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 _L(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.17";function sO(){return[cQ,"update",TN,"--latest"]}function tO(){return[cQ,"add",`${TN}@latest`]}function eO(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 Az(){try{let B=await aI(),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 Bz(){let B=await Az();if(!B)return{hasUpdate:!1,currentVersion:sF};return{hasUpdate:eO(B,sF)>0,latestVersion:B,currentVersion:sF}}async function PL(){let B=await import("fs/promises"),I=V0(nB,"bin"),C=V0(I,"tako"),g=V0(v0,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32")await B.writeFile(V0(I,"tako.cmd"),vL(cQ,g)),await B.writeFile(V0(I,"tako.ps1"),_L(cQ,g));else{let G=`#!/bin/bash
741
+ `)}var TN="tako-cli",sF="0.3.18";function sO(){return[cQ,"update",TN,"--latest"]}function tO(){return[cQ,"add",`${TN}@latest`]}function eO(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 Az(){try{let B=await aI(),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 Bz(){let B=await Az();if(!B)return{hasUpdate:!1,currentVersion:sF};return{hasUpdate:eO(B,sF)>0,latestVersion:B,currentVersion:sF}}async function PL(){let B=await import("fs/promises"),I=V0(nB,"bin"),C=V0(I,"tako"),g=V0(v0,"node_modules/tako-cli/dist/index.js");if(await B.mkdir(I,{recursive:!0}),process.platform==="win32")await B.writeFile(V0(I,"tako.cmd"),vL(cQ,g)),await B.writeFile(V0(I,"tako.ps1"),_L(cQ,g));else{let G=`#!/bin/bash
742
742
  exec "${cQ}" "${g}" "$@"
743
743
  `;await B.writeFile(C,G,{mode:493})}}async function Qz(B){let I=jg(),C=`\u6B63\u5728\u66F4\u65B0\u5230 v${B}`;I.start(C);try{let g=await aI(),F=await import("fs/promises");await F.mkdir(v0,{recursive:!0});let G=V0(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(sO(),{cwd:v0,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:g}}),u=await xw(H,C,(J)=>I.update(J));if(await H.exited,H.exitCode===0)return await PL(),PQ("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(),lA.warn(`\u66F4\u65B0\u5931\u8D25: ${F2(u)}`),!1}catch(g){return I.stop(),lA.warn(`\u66F4\u65B0\u5931\u8D25: ${F2(g instanceof Error?g.message:void 0)}`),!1}}async function Iz(){let B=await import("fs/promises"),I=V0(v0,"bun.lock");try{await B.unlink(I)}catch{}}async function Ez(){let B=await import("fs/promises");try{let I=await aI();await B.mkdir(v0,{recursive:!0});let C=V0(v0,"package.json");try{await B.access(C)}catch{await B.writeFile(C,JSON.stringify({name:"tako-local",private:!0},null,2))}await Iz();let g=Bun.spawn(tO(),{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 Cz(){let B=await import("fs/promises"),I=V0(nB,"bin"),C=V0(I,"tako"),g=V0(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")){lA.info(bA("updater.migrating"));let G=!1;try{await B.access(g),G=!0}catch{G=!1}if(!G){let H=jg();if(H.start(bA("updater.installingLocally")),!await Ez())return H.stop(bA("updater.migrationFailed")),!1;H.stop(bA("updater.installComplete"))}return await PL(),!0}}catch{}return!1}async function tF(){try{if(await Cz())lA.info(bA("updater.migrationComplete")),process.exit(0);let I=await Bz();if(I.hasUpdate&&I.latestVersion){if(lA.warn(bA("updater.newVersionAvailable",{version:I.latestVersion,current:sF})),await Qz(I.latestVersion))lA.info(bA("updater.pleaseRestart")),process.exit(0)}}catch{}}ZI();eF();N0();iB();iB();import{homedir as Lz}from"os";var Kz=50,hN=3;async function bN(B){try{return(await(await import("fs/promises")).stat(B)).isDirectory()}catch{return!1}}async function lL(B,I,C){let g=await QB(),F=g.recentProjects||[],G=new Date().toISOString(),H=F.findIndex((J)=>J.path===B);if(H>=0){let J=F[H],L=J.clientUsage||{},X=L[I]||{count:0,lastAt:G};F[H]={...J,launchCount:J.launchCount+1,lastLaunchedAt:G,lastClientId:I,clientUsage:{...L,[I]:{count:X.count+1,lastAt:G,lastSelectedOptionIds:C??X.lastSelectedOptionIds}}}}else F.push({path:B,launchCount:1,lastLaunchedAt:G,lastClientId:I,clientUsage:{[I]:{count:1,lastAt:G,lastSelectedOptionIds:C}}});let u=F.sort((J,L)=>new Date(L.lastLaunchedAt).getTime()-new Date(J.lastLaunchedAt).getTime()).slice(0,Kz);g.recentProjects=u,await WI(g)}async function pw(B){let C=(await QB()).recentProjects||[],g=process.cwd(),G=C.find((u)=>u.path===g)?.clientUsage?.[B]?.lastSelectedOptionIds;if(G)return G;return C.filter((u)=>u.path!==g&&u.clientUsage?.[B]?.lastSelectedOptionIds).sort((u,J)=>{let L=new Date(u.clientUsage[B].lastAt).getTime();return new Date(J.clientUsage[B].lastAt).getTime()-L})[0]?.clientUsage?.[B]?.lastSelectedOptionIds??[]}function Rz(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 aL(B,I=hN,C=!0){let F=(await QB()).recentProjects||[],G=process.cwd(),u=F.filter((L)=>{if(C&&L.path===G)return!1;return L.clientUsage?.[B]||L.lastClientId===B}).map((L)=>({...L,lastUsedTime:Rz(L,B)})).sort((L,X)=>X.lastUsedTime-L.lastUsedTime),J=[];for(let{lastUsedTime:L,...X}of u){if(J.length>=I)break;if(await bN(X.path))J.push(X)}return J}async function oL(){let I=(await QB()).recentProjects||[],C=process.cwd();return I.find((F)=>F.path===C)?.lastClientId||null}function jN(B,I=25){let C=Lz(),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 nL(B){let{t:I}=(WQ(),eq(AL)),C=Date.now(),g=new Date(B).getTime(),F=C-g,G=Math.floor(F/60000),H=Math.floor(F/3600000),u=Math.floor(F/86400000),J=Math.floor(u/7),L=Math.floor(u/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(u===1)return I("time.yesterday");if(u<7)return I("time.daysAgo",{n:u});if(u<30)return I("time.weeksAgo",{n:J});return I("time.monthsAgo",{n:L})}tE();WQ();uE();ZI();iB();eF();import{writeFile as Yz}from"fs/promises";var pN="TAKO_WINDOWS_HANDOFF_FILE",xN=new Uint8Array([239,187,191]);function A1(B){return`'${B.replace(/'/g,"''")}'`}function rL(B){if(B.length===0)return"@()";return`@(${B.map(A1).join(", ")})`}function Wz(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 iw(B,I){await Yz(B,Wz(Zz(I)))}function Zz(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} = ${A1(String(H))}`)}g.push(`Set-Location -LiteralPath ${A1(B.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${rL(C)}`,"$code = 0","try {",` & ${A1(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 = ${rL(H)}`,` & ${A1(G)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return g.push("}","exit $code",""),g.join(`\r
744
744
  `)}import{join as sL}from"path";async function tL(B){try{if(process.stdin.removeAllListeners(),!B&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}if(!B&&process.stdout.isTTY)try{process.stdout.write("\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h")}catch{}await new Promise((I)=>setTimeout(I,30));try{if(process.stdin.removeAllListeners(),!B&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}async function eL(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 rD(B);if(!G)G=sD(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 O=q(K,{encoding:"utf8"}).split(`
745
745
  `).map((z)=>z.trim().replace(/\r$/,"")).filter(Boolean),y=F?O.find((z)=>z.toLowerCase().endsWith(".exe"))??O.find((z)=>z.toLowerCase().endsWith(".cmd"))??O[0]:O[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 J={...B.getEnvVars(g),...I?.envVars??{}},L={...process.env,...J},X;if(B.runtime==="native")if(F&&G.toLowerCase().endsWith(".js"))X=[await ME(),G];else X=[G];else X=[await ME(),G];if(I?.args&&I.args.length>0)X=[...X,...I.args];if(F&&I?.handoffOnWindows){let q=process.env[pN];if(q)return await iw(q,{command:X,cwd:C,env:J}),{success:!0}}if(F&&I?.relaunchTakoOnWindows){let q=process.env[pN];if(q){let K=[sL(nB,"bin","tako.cmd")];return await iw(q,{command:X,cwd:C,env:J,relaunchCommand:K}),{success:!0}}}if(F){let q=await import("fs/promises"),{tmpdir:K}=await import("os"),O=sL(K(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await iw(O,{command:X,cwd:C}),await tL(F);try{let z=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",O],{env:L,stdio:["inherit","inherit","inherit"],cwd:C}).exited;return{success:z===0,exitCode:z}}catch(y){return await q.rm(O,{force:!0}).catch(()=>{}),{success:!1,error:y instanceof Error?y.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await tL(F),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(X,{env:L,stdio:["inherit","inherit","inherit"],cwd:C})}catch{await Bun.spawn(X,{env:L,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"}}}iB();import{dirname as Xz,join as qz}from"path";import{mkdir as kz}from"fs/promises";var Oz=0.95,zz=0.05,dN=null;function A7(){return dN??qz(nB,"model-usage.json")}function iN(){return{counts:{},updatedAt:new Date(0).toISOString()}}async function B7(){try{let B=Bun.file(A7());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 Sz(B){if(dN)await kz(Xz(dN),{recursive:!0});else await bF();await Bun.write(A7(),JSON.stringify(B,null,2))}async function Q7(){return{...(await B7()).counts}}async function I7(B){let I=await B7(),C={};for(let[g,F]of Object.entries(I.counts)){let G=F*Oz;if(G>=zz)C[g]=G}for(let g of B){if(!g.startsWith("model-"))continue;C[g]=(C[g]??0)+1}await Sz({counts:C,updatedAt:new Date().toISOString()})}async function yz(B,I){if(I?.providerContext)return I.providerContext;let C=await lI();if(C){let g=await eE(B.id);if(g.some((G)=>G.id===C.id))return $I(C);if(g.length>0)return $I(g[0])}return null}async function dw(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 cL(B);if(!g.success)return g;let F=await yz(B,I);if(!F)return{success:!1,error:bA("launcher.apiKeyNotConfigured")};let G=[],H={};if(B.setupConfigFiles){let L=await B.setupConfigFiles(F,I?.selectedOptionIds,{forLaunch:!0});if(L&&typeof L==="object")G=L.args??[],H=L.envVars??{}}await lL(C,B.id,I?.selectedOptionIds);try{let L=(I?.selectedOptionIds??[]).filter((X)=>X.startsWith("model-"));await I7(L)}catch{}let J=(await QB()).installedClients[B.id]?.version;return PQ("client_launched",{client_id:B.id,client_version:J,project_hash:SL(C),is_recent_project:!!I?.projectPath}),lA.info(bA("launcher.starting",{client:B.name})),await eL(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"}}}WQ();uE();import{homedir as Tz}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 rB={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var MQ={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 $z(){return!1}function JE(B){let I=IC[B];if(typeof I==="string")return I;return $z()?I.nerd:I.plain}class cw{id="directory";render(B){let I=this.formatPath(B.workspace.current_dir),C=JE("directory");return`${MQ.directory.icon}${C}${rB.reset} ${MQ.directory.text}${I}${rB.reset}`}formatPath(B){let I=Tz();if(B===I)return"~";if(B.startsWith(I+"/"))return"~"+B.slice(I.length);return B}}class lw{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:u}=await this.getAheadBehind(I),J=JE("git"),L=`${MQ.git.icon}${J}${rB.reset} ${MQ.git.text}${g}${rB.reset}`;if(L+=` ${G}${F}${rB.reset}`,H>0)L+=` ${MQ.git.clean}${IC.gitAhead}${H}${rB.reset}`;if(u>0)L+=` ${MQ.git.dirty}${IC.gitBehind}${u}${rB.reset}`;return L}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:MQ.git.clean};let F=C.trim();if(!F)return{status:IC.gitClean,statusColor:MQ.git.clean};if(F.includes("UU")||F.includes("AA")||F.includes("DD"))return{status:IC.gitConflict,statusColor:MQ.git.conflict};return{status:IC.gitDirty,statusColor:MQ.git.dirty}}catch{return{status:IC.gitClean,statusColor:MQ.git.clean}}}async getAheadBehind(B){try{let I=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:B,stdout:"pipe",stderr:"pipe"}),C=await new Response(I.stdout).text(),F=await I.exited===0?parseInt(C.trim(),10)||0:0,G=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:B,stdout:"pipe",stderr:"pipe"}),H=await new Response(G.stdout).text(),J=await G.exited===0?parseInt(H.trim(),10)||0:0;return{ahead:F,behind:J}}catch{return{ahead:0,behind:0}}}}var vz={"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 aw{id="model";render(B){let I=B.model.id,C=vz[I]||this.simplifyModelName(B.model.display_name),g=JE("model");return`${MQ.model.icon}${g}${rB.reset} ${MQ.model.text}${C}${rB.reset}`}simplifyModelName(B){let I=B.replace(/^Claude\s+/i,"");return I=I.replace(/-\d{8}$/,""),I}}var _z=200000;class UE{id="context";static cache=null;static CACHE_TTL=5000;async render(B){let I=await this.getTokensWithCache(B.transcript_path),g=EN(B.model.id)?.contextWindow??_z,F=Math.round((I??0)/g*100),G=Math.max(0,100-F),H=JE("context"),u=G<=20?yB.brightRed:G<=50?yB.brightYellow:yB.brightGreen;return`${MQ.context.icon}${H}${rB.reset} ${u}${G}%${rB.reset}`}async getTokensWithCache(B){let I=Date.now();if(UE.cache&&UE.cache.path===B&&I-UE.cache.timestamp<UE.CACHE_TTL)return UE.cache.tokens;let C=await this.parseTranscriptTokens(B);return UE.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}}}ow();iB();N0();class nw{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await AC("claude-code")??await lI();if(!B){let C=await hg().catch(()=>"");if(!C)return null;let g=await dg(C);return this.renderTako(g)}let I=await B1(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)}${rB.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(`${rB.dim} \xB7 ${rB.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}%${rB.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}%${rB.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)}${rB.reset}`}icon(){return`${MQ.todayUsage.icon}${JE("todayUsage")}${rB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class oN{separator=`${MQ.separator} \u2502 ${rB.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 nz}from"path";import{homedir as nN}from"os";import{mkdir as rz}from"fs/promises";var J7=cg(nN(),".tako"),sz=cg(J7,"cli"),tz=cg(J7,"bin",process.platform==="win32"?"tako.cmd":"tako");function ez(){if(process.platform==="win32")return cg(process.env.APPDATA||cg(nN(),"AppData","Roaming"),"claude","settings.json");return cg(nN(),".claude","settings.json")}var AS=process.platform==="win32",BS="0.1.48";function QS(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,u=g[G]||0;if(H!==u)return H-u}return 0}async function IS(){let B=cg(sz,"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 ES(){let B=await IS();if(!B)return!1;return QS(B,BS)>=0}function CS(){return tz}function gS(){return`"${DS(CS())}" statusline`}function DS(B){if(AS)return B.replace(/\\/g,"/");return B}async function rN(){if(!await ES())return;let I=ez(),C={};try{let G=Bun.file(I);if(await G.exists())C=await G.json()}catch{}let g={type:"command",command:gS(),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 rz(nz(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var FS=[new cw,new lw,new aw,new UE,new nw];async function wS(B){let I=await Promise.all(FS.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 U7(){try{let B=await Bun.stdin.json(),I=await wS(B);console.log(I)}catch{process.exit(0)}}N0();uE();async function rw(B){let I=await eE(B);if(I.length===0)return null;let C=await AC(B);if(C)return $I(C);if(I.length===1)return $I(I[0]);let g=await lI();if(g&&I.some((F)=>F.id===g.id))return $I(g);return $I(I[0])}async function L7(){let B=await aF();if(await oF(B)>0){for(let C of B)PQ("provider_added",{provider_type:C.type,method:"auto_detect"});QC(),_0()}}var GS={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function sw(B,I,C,g){let F=I.filter((u)=>u!==C),G=await NS(B,F,g);if(B!=="claude-code")return G?[G,...F]:F;let H=[];if(G)H.push(G);for(let u=0;u<F.length;u++){let J=F[u];if(J==="--model"&&u+1<F.length){H.push(J,I2(F[u+1])),u++;continue}if(J.startsWith("--model=")){let L=J.slice(8);H.push(`--model=${I2(L)}`);continue}H.push(J)}return H}async function NS(B,I,C){let g=GS[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??pw)(B)).includes(g.optionId)?g.flag:null}ZI();iB();C2();import{join as tw}from"path";async function ew(B){let C=`${await aI()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),G=Object.keys(F.versions??{});if(!G.length)throw Error("no versions found");let H=F.time??{},u=G.map((J)=>({version:J,publishedAt:H[J],isCurrent:!1}));return u.sort((J,L)=>{let X=J.publishedAt?Date.parse(J.publishedAt):0;return(L.publishedAt?Date.parse(L.publishedAt):0)-X}),u}async function A3(B,I){let C=await import("fs/promises"),g=rE(B.id);await C.mkdir(g,{recursive:!0});let F=tw(g,"bun.lock"),G=tw(g,"node_modules");await C.rm(F,{force:!0}).catch(()=>{}),await C.rm(G,{recursive:!0,force:!0}).catch(()=>{});let H=tw(g,"package.json");await Bun.write(H,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let u=await aI(),{detectRegion:J}=await Promise.resolve().then(() => (C2(),RL)),L=await J(),{log:X}=await Promise.resolve().then(() => (tE(),eU));X.info(`\u7F51\u7EDC\u73AF\u5883: ${L==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${u}`);let q=Bun.spawn([cQ,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:u}});if(await q.exited,q.exitCode!==0){let O=await new Response(q.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${O.slice(0,500).trim()}`)}let K=await QB();await fg({installedClients:{...K.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function B3(B){let I=rE(B.id),C=tw(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}iB();var K3="0.3.17";function Ry(){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}}}ow();iB();N0();class nw{id="quota";async render(B){let I=await this.tryRenderOfficial();if(I)return I;return this.renderSessionCost(B)}async tryRenderOfficial(){try{let B=await AC("claude-code")??await lI();if(!B){let C=await hg().catch(()=>"");if(!C)return null;let g=await dg(C);return this.renderTako(g)}let I=await B1(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)}${rB.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(`${rB.dim} \xB7 ${rB.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}%${rB.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}%${rB.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)}${rB.reset}`}icon(){return`${MQ.todayUsage.icon}${JE("todayUsage")}${rB.reset}`}fmtCost(B){if(B>=100)return`$${Math.round(B)}`;if(B>=10)return`$${B.toFixed(1)}`;return`$${B.toFixed(2)}`}}class oN{separator=`${MQ.separator} \u2502 ${rB.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 nz}from"path";import{homedir as nN}from"os";import{mkdir as rz}from"fs/promises";var J7=cg(nN(),".tako"),sz=cg(J7,"cli"),tz=cg(J7,"bin",process.platform==="win32"?"tako.cmd":"tako");function ez(){if(process.platform==="win32")return cg(process.env.APPDATA||cg(nN(),"AppData","Roaming"),"claude","settings.json");return cg(nN(),".claude","settings.json")}var AS=process.platform==="win32",BS="0.1.48";function QS(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,u=g[G]||0;if(H!==u)return H-u}return 0}async function IS(){let B=cg(sz,"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 ES(){let B=await IS();if(!B)return!1;return QS(B,BS)>=0}function CS(){return tz}function gS(){return`"${DS(CS())}" statusline`}function DS(B){if(AS)return B.replace(/\\/g,"/");return B}async function rN(){if(!await ES())return;let I=ez(),C={};try{let G=Bun.file(I);if(await G.exists())C=await G.json()}catch{}let g={type:"command",command:gS(),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 rz(nz(I),{recursive:!0}),await Bun.write(I,JSON.stringify(C,null,2))}var FS=[new cw,new lw,new aw,new UE,new nw];async function wS(B){let I=await Promise.all(FS.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 U7(){try{let B=await Bun.stdin.json(),I=await wS(B);console.log(I)}catch{process.exit(0)}}N0();uE();async function rw(B){let I=await eE(B);if(I.length===0)return null;let C=await AC(B);if(C)return $I(C);if(I.length===1)return $I(I[0]);let g=await lI();if(g&&I.some((F)=>F.id===g.id))return $I(g);return $I(I[0])}async function L7(){let B=await aF();if(await oF(B)>0){for(let C of B)PQ("provider_added",{provider_type:C.type,method:"auto_detect"});QC(),_0()}}var GS={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function sw(B,I,C,g){let F=I.filter((u)=>u!==C),G=await NS(B,F,g);if(B!=="claude-code")return G?[G,...F]:F;let H=[];if(G)H.push(G);for(let u=0;u<F.length;u++){let J=F[u];if(J==="--model"&&u+1<F.length){H.push(J,I2(F[u+1])),u++;continue}if(J.startsWith("--model=")){let L=J.slice(8);H.push(`--model=${I2(L)}`);continue}H.push(J)}return H}async function NS(B,I,C){let g=GS[B];if(!g)return null;if(I.includes(g.flag))return null;return(await(C?.getLastSelectedOptionIds??pw)(B)).includes(g.optionId)?g.flag:null}ZI();iB();C2();import{join as tw}from"path";async function ew(B){let C=`${await aI()}/${encodeURIComponent(B).replace("%40","@")}`,g=await fetch(C,{signal:AbortSignal.timeout(1e4)});if(!g.ok)throw Error(`registry http ${g.status}`);let F=await g.json(),G=Object.keys(F.versions??{});if(!G.length)throw Error("no versions found");let H=F.time??{},u=G.map((J)=>({version:J,publishedAt:H[J],isCurrent:!1}));return u.sort((J,L)=>{let X=J.publishedAt?Date.parse(J.publishedAt):0;return(L.publishedAt?Date.parse(L.publishedAt):0)-X}),u}async function A3(B,I){let C=await import("fs/promises"),g=rE(B.id);await C.mkdir(g,{recursive:!0});let F=tw(g,"bun.lock"),G=tw(g,"node_modules");await C.rm(F,{force:!0}).catch(()=>{}),await C.rm(G,{recursive:!0,force:!0}).catch(()=>{});let H=tw(g,"package.json");await Bun.write(H,JSON.stringify({name:`tako-${B.id}-host`,version:"0.0.0",private:!0},null,2));let u=await aI(),{detectRegion:J}=await Promise.resolve().then(() => (C2(),RL)),L=await J(),{log:X}=await Promise.resolve().then(() => (tE(),eU));X.info(`\u7F51\u7EDC\u73AF\u5883: ${L==="cn"?"\u56FD\u5185":"\u6D77\u5916"} | registry: ${u}`);let q=Bun.spawn([cQ,"add",`${B.package}@${I}`],{cwd:g,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:u}});if(await q.exited,q.exitCode!==0){let O=await new Response(q.stderr).text();throw Error(`bun add ${B.package}@${I} failed: ${O.slice(0,500).trim()}`)}let K=await QB();await fg({installedClients:{...K.installedClients,[B.id]:{version:I,installedAt:new Date().toISOString()}}})}async function B3(B){let I=rE(B.id),C=tw(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}iB();var K3="0.3.18";function Ry(){console.log(`
747
747
  ${bA("cli.version",{version:K3})}
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 u=ED(this.options.stdout);if(u)this.options.stdout.write(ID);if(this.options.stdout.write(JQ.clearTerminal+this.fullStaticOutput+I),this.lastOutput=I,this.lastOutputToRender=H,this.lastOutputHeight=C,this.log.sync(H),u)this.options.stdout.write(nC);return}if(F){let u=ED(this.options.stdout);if(u)this.options.stdout.write(ID);if(this.log.clear(),this.options.stdout.write(g),this.log(H),u)this.options.stdout.write(nC)}else if(I!==this.lastOutput||this.log.isCursorDirty())this.throttledLog(H);this.lastOutput=I,this.lastOutputToRender=H,this.lastOutputHeight=C};render(B){let I=bH.default.createElement(rC.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},bH.default.createElement(BW,{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)u0.updateContainer(I,this.container,null,C4);else u0.updateContainerSync(I,this.container,null,C4),u0.flushSyncWork()}writeToStdout(B){if(this.isUnmounted)return;if(this.options.debug){this.options.stdout.write(B+this.fullStaticOutput+this.lastOutput);return}if(RE){this.options.stdout.write(B);return}let I=ED(this.options.stdout);if(I)this.options.stdout.write(ID);if(this.log.clear(),this.options.stdout.write(B),this.restoreLastOutput(),I)this.options.stdout.write(nC)}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(RE){this.options.stderr.write(B);return}let I=ED(this.options.stdout);if(I)this.options.stdout.write(ID);if(this.log.clear(),this.options.stderr.write(B),this.restoreLastOutput(),I)this.options.stdout.write(nC)}unmount(B){if(this.isUnmounted||this.isUnmounting)return;if(this.isUnmounting=!0,this.beforeExitHandler)v2.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0;let I=this.options.stdout,C=!I.destroyed&&!I.writableEnded&&(I.writable??!0),g=(L)=>{if(typeof L.flush!=="function")return;if(C)L.flush();else if(typeof L.cancel==="function")L.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(RE)this.options.stdout.write(this.lastOutput+`
827
827
  `);else if(!this.options.debug)this.log.done()}if(this.kittyProtocolEnabled=!1,this.options.concurrent)u0.updateContainer(null,this.container,null,C4);else u0.updateContainerSync(null,this.container,null,C4),u0.flushSyncWork();T2.delete(this.options.stdout);let{exitResult:G}=this,H=()=>{if(hH(B))this.rejectExitPromise(B);else this.resolveExitPromise(G)},u=B!==void 0&&!hH(B),J=I._writableState!==void 0||I.writableLength!==void 0;if(u)H();else if(C&&J)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()},v2.once("beforeExit",this.beforeExitHandler);return this.exitPromise}clear(){if(!RE&&!this.options.debug)this.log.clear(),this.log.sync(this.lastOutputToRender||this.lastOutput+`
828
828
  `)}patchConsole(){if(this.options.debug)return;this.restoreConsole=YK((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=v2.env.TERM??"",F=v2.env.TERM_PROGRAM??"",G="KITTY_WINDOW_ID"in v2.env||g==="xterm-kitty"||F==="WezTerm"||F==="ghostty";if(!RE&&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 u=DV(g);if(g=[],u.length>0)I.unshift(Buffer.from(u))},G=(u)=>{let J=typeof u==="string"?Buffer.from(u):u;for(let L of J)g.push(L);if(gV(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[>${IW(B)}u`),this.kittyProtocolEnabled=!0}}var wV=(B,I)=>{let C={stdout:F4.stdout,stdin:F4.stdin,stderr:F4.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,maxFps:30,incrementalRendering:!1,concurrent:!1,...GV(I)},g=NV(C.stdout,()=>new D4(C),C.concurrent??!1);return g.render(B),{rerender:g.render,unmount(){g.unmount()},waitUntilExit:g.waitUntilExit,cleanup:()=>T2.delete(C.stdout),clear:g.clear}},jH=wV,GV=(B={})=>{if(B instanceof FV)return{stdout:B,stdin:F4.stdin};return B},NV=(B,I,C)=>{let g=T2.get(B);if(!g)g=I(),T2.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 HV=YA(k3(),1);var w4=YA(HB(),1);var gW=YA(HB(),1);var uV=YA(HB(),1);var MV=YA(HB(),1);var pH=YA(HB(),1);import{Buffer as JV}from"buffer";var UV=/^(?:\x1b)([a-zA-Z0-9])$/,LV=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,FW={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"},wW=[...Object.values(FW),"backspace"],KV=(B)=>{return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(B)},RV=(B)=>{return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(B)},GW=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,YV=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,WV={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},ZV={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"},DW={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"},NW=(B)=>B>=0&&B<=1114111&&!(B>=55296&&B<=57343),xH=(B)=>NW(B)?String.fromCodePoint(B):"?";function HW(B){if(B===3)return"release";if(B===2)return"repeat";return"press"}function uW(B){return{ctrl:!!(B&WE.ctrl),shift:!!(B&WE.shift),meta:!!(B&WE.meta),option:!!(B&WE.alt),super:!!(B&WE.super),hyper:!!(B&WE.hyper),capsLock:!!(B&WE.capsLock),numLock:!!(B&WE.numLock)}}var XV=(B)=>{let I=GW.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(!NW(C))return null;let H;if(G)H=G.split(":").map((L)=>xH(parseInt(L,10))).join("");let u,J;if(C===32)u="space",J=!0;else if(C===13)u="return",J=!0;else if(DW[C])u=DW[C],J=!1;else if(C>=1&&C<=26)u=String.fromCodePoint(C+96),J=!1;else u=xH(C).toLowerCase(),J=!0;if(J&&!H)H=xH(C);return{name:u,...uW(g),eventType:HW(F),sequence:B,raw:B,isKittyProtocol:!0,isPrintable:J,text:H}},qV=(B)=>{let I=YV.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==="~"?ZV[C]:WV[G];if(!H)return null;return{name:H,...uW(g),eventType:HW(F),sequence:B,raw:B,isKittyProtocol:!0,isPrintable:!1}},kV=(B="")=>{let I;if(JV.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=XV(B);if(C)return C;let g=qV(B);if(g)return g;if(GW.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=UV.exec(B))F.meta=!0,F.shift=/^[A-Z]$/.test(I[1]);else if(I=LV.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(""),u=(I[3]||I[5]||1)-1;F.ctrl=!!(u&4),F.meta=!!(u&10),F.shift=!!(u&1),F.code=H,F.name=FW[H],F.shift=KV(H)||F.shift,F.ctrl=RV(H)||F.ctrl}return F},MW=kV;var JW=YA(HB(),1);var OV=()=>JW.useContext(t3),_2=OV;var zV=(B,I={})=>{let{stdin:C,setRawMode:g,internal_exitOnCtrlC:F,internal_eventEmitter:G}=_2();pH.useEffect(()=>{if(I.isActive===!1)return;return g(!0),()=>{g(!1)}},[I.isActive,g]),pH.useEffect(()=>{if(I.isActive===!1)return;let H=(u)=>{let J=MW(u),L={upArrow:J.name==="up",downArrow:J.name==="down",leftArrow:J.name==="left",rightArrow:J.name==="right",pageDown:J.name==="pagedown",pageUp:J.name==="pageup",home:J.name==="home",end:J.name==="end",return:J.name==="return",escape:J.name==="escape",ctrl:J.ctrl,shift:J.shift,tab:J.name==="tab",backspace:J.name==="backspace",delete:J.name==="delete",meta:J.meta||J.name==="escape"||J.option,super:J.super??!1,hyper:J.hyper??!1,capsLock:J.capsLock??!1,numLock:J.numLock??!1,eventType:J.eventType},X;if(J.isKittyProtocol)if(J.isPrintable)X=J.text??J.name;else if(J.ctrl&&J.name.length===1)X=J.name;else X="";else if(J.ctrl)X=J.name;else X=J.sequence;if(!J.isKittyProtocol&&wW.includes(J.name))X="";if(X.startsWith("\x1B"))X=X.slice(1);if(X.length===1&&typeof X[0]==="string"&&/[A-Z]/.test(X[0]))L.shift=!0;if(!(X==="c"&&L.ctrl)||!F)u0.batchedUpdates(()=>{B(X,L)})};return G?.on("input",H),()=>{G?.removeListener("input",H)}},[I.isActive,C,F,B])},yQ=zV;var SV=YA(HB(),1);var UW=YA(HB(),1);var yV=()=>UW.useContext(e3),V2=yV;var $V=YA(HB(),1);var iH=YA(HB(),1);var TV=YA(HB(),1);var vV=YA(HB(),1);var G4=YA(HB(),1);var cB=YA(HB(),1);ZI();N0();WQ();ow();ZI();WQ();N0();async function LW(B=45){let I=bg(),C=await oL(),g=await lI(),F=lQ()==="zh",G=[...I].sort((J,L)=>{if(J.id===C)return-1;if(L.id===C)return 1;return 0}),H=[];for(let J of G){let L=await aL(J.id,hN,!0),X=process.cwd(),q=[{label:F?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:jN(X,B),path:X},...L.map((AA)=>({label:jN(AA.path,B),hint:nL(AA.lastLaunchedAt),path:AA.path}))],K=await eE(J.id),y=await AC(J.id)||K.find((AA)=>AA.id===g?.id)||K[0],z=y?K.findIndex((AA)=>AA.id===y.id):0,$=tD(J,y),d=new Set($.map((AA)=>AA.id)),IA=(await pw(J.id)).filter((AA)=>d.has(AA));H.push({client:J,projects:q,providers:K,activeProvider:y,activeProvIdx:Math.max(z,0),launchOptions:$,lastSelectedOptionIds:IA})}let u={};try{u=await Q7()}catch{u={}}return{clients:H,defaultIdx:0,hasProviders:H.some((J)=>J.providers.length>0),pickCounts:u,zh:F}}function KW(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 i1(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function RW(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 YW(B,I,C){let g=new Set(I.map((L)=>L.id)),F=new Set(I.filter((L)=>L.group==="model").map((L)=>L.id)),G=C?`model-${C}`:void 0,H=new Set,u=!1,J=!1;for(let L of B)if(g.has(L)){if(H.add(L),F.has(L))J=!0}else u=!0;if(!J&&G&&F.has(G))H.add(G),u=!0;return u?H:B}function _V(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 VV(B){return B.replace(/\x1b\[[0-9;]*m/g,"")}function d1(B){let I=VV(B),C=0;for(let g of I)C+=_V(g)?2:1;return C}function WW(B,I,C="left"){let g=d1(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 qW=6,kW=4,cH=16,PV=12;function P2(B,I,C){if(!B.some((J)=>(C[J.id]??0)>0))return{list:B,hiddenCount:0};let F=new Map(B.map((J,L)=>[J.id,L])),G=B.filter((J)=>(C[J.id]??0)>0).sort((J,L)=>{let X=(C[L.id]??0)-(C[J.id]??0);if(X!==0)return X;return(F.get(J.id)??0)-(F.get(L.id)??0)}).slice(0,qW).map((J)=>J.id),H=new Set(G);for(let J of B)if(I.has(J.id))H.add(J.id);let u=B.filter((J)=>H.has(J.id));return{list:u,hiddenCount:B.length-u.length}}function lH(B,I){return!B.some((g)=>(I[g.id]??0)>0)&&B.length>qW?"grid":"collapsed"}function mV(B,I){if(B.length===0)return 1;let C=Math.max(...B.map((G)=>d1(G))),g=Math.max(cH,C+4),F=Math.max(g,I-PV);return Math.max(1,Math.min(kW,B.length,Math.floor(F/g)))}function m2(B,I,C){let g=B.map((F)=>F.label[C?"zh":"en"]||F.label.en||F.id);return mV(g,I)}function fV(B,I){let C=Math.max(1,Math.min(kW,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 N4(B){return B.startsWith("model-")?B.slice(6):B}function dH(B){let I=N4(B).toLowerCase();return I.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||I.slice(0,3)||I}function ZW(B){let I=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],C=I.indexOf(B);return C===-1?I.length:C}function XW(B){let I=N4(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 hV(B,I){let C=dH(B),g=dH(I),F=ZW(C)-ZW(g)||C.localeCompare(g);if(F!==0)return F;let G=XW(B),H=XW(I),u=Math.max(G.length,H.length);for(let J=0;J<u;J++){let L=G[J],X=H[J];if(L===void 0)return 1;if(X===void 0)return-1;if(typeof L==="number"&&typeof X==="number"){if(L!==X)return X-L;continue}let q=String(L),K=String(X);if(q!==K)return q.localeCompare(K)}return N4(B).localeCompare(N4(I))}function f2(B,I){let C=[...B].sort(hV),g=[];for(let G of C){let H=dH(G),u=g[g.length-1];if(u?.family===H)u.ids.push(G);else g.push({family:H,ids:[G]})}let F=g.map((G)=>({family:G.family,rows:fV(G.ids,I).rows}));return{groups:F,flat:F.flatMap((G)=>G.rows.flat())}}function aH(B,I,C){return f2(B,C).flat.indexOf(I)}function OW(B,I){return f2(B,I).groups.flatMap((C)=>C.rows)}var LB=YA(bB(),1),jV=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function zW({zh:B}){return LB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:jV.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 SW({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 u=C===H,J=H===I;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:u?g:void 0,bold:u,children:u?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:u,color:u?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),J&&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(zW,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yW({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:G,pickCounts:H={}}){let u=I.filter((q)=>q.group===B),J=B==="model"?P2(u,C,H):{list:u,hiddenCount:0},L=B==="model"?G?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,X=!u.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 ",L]},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),X&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),J.list.map((q,K)=>{let O=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:O?F:void 0,bold:O,children:O?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:O,color:O?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),O&&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)}),J.hiddenCount>0&&LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:g===J.list.length+1?F:void 0,bold:g===J.list.length+1,children:g===J.list.length+1?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:g===J.list.length+1,color:g===J.list.length+1?F:void 0,children:[" ",G?`\u25BE \u663E\u793A\u5168\u90E8 (${J.hiddenCount})`:`\u25BE Show all (${J.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(zW,{zh:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var LQ=YA(bB(),1);function xV({zh:B}){return LQ.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:[LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193\u2190\u2192"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u9009\u62E9":"select"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $W({options:B,enabled:I,pickerIdx:C,color:g,zh:F}){let{stdout:G}=V2(),H=B.map((K)=>K.id),u=new Map(B.map((K)=>[K.id,K])),J=(K)=>u.get(K)?.label[F?"zh":"en"]||u.get(K)?.label.en||K,L=m2(B,G.columns||80,F),X=f2(H,L),q=Math.max(cH,...H.length>0?H.map((K)=>d1(J(K))+3):[0]);return LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[LQ.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u6A21\u578B":"Pick Model"]},void 0,!0,void 0,this),LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,children:X.groups.map((K,O)=>LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[O>0&&LQ.jsxDEV(h,{children:LQ.jsxDEV(R,{dimColor:!0,children:"\u254C".repeat(Math.max(8,q*L))},void 0,!1,void 0,this)},void 0,!1,void 0,this),K.rows.map((y,z)=>LQ.jsxDEV(h,{children:y.map(($)=>{let l=X.flat.indexOf($)===C,IA=I.has($),AA=J($);return LQ.jsxDEV(h,{marginRight:1,children:[LQ.jsxDEV(R,{color:l?g:void 0,bold:l,children:l?"\u25B8":" "},void 0,!1,void 0,this),LQ.jsxDEV(R,{color:l?g:void 0,bold:l,children:WW(AA,q)},void 0,!1,void 0,this),IA&&LQ.jsxDEV(R,{color:"green",children:"\u2605"},void 0,!1,void 0,this)]},$,!0,void 0,this)})},`${K.family}-${z}`,!1,void 0,this))]},K.family,!0,void 0,this))},void 0,!1,void 0,this),LQ.jsxDEV(xV,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var t=YA(bB(),1),pV="0.3.17",TW={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},vW={icon:"\u25AA",color:"white"};function _W({color:B}){let{stdout:I}=V2(),C=Math.max((I.columns||80)-6,20);return t.jsxDEV(h,{marginY:0,children:t.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function iV(B){return B>30?"green":B>10?"yellow":"red"}function dV({provider:B,zh:I}){if(!B)return t.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,u]=G.split("@");if(H&&u)G=H.length>14?`${H.slice(0,12)}\u2026@${u}`:G}return t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),G&&t.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cV({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return t.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 u=B.daily??B.primary??B.secondary;if(!u)return null;let J=u.costUsed??0;return t.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",t.jsxDEV(R,{color:"green",children:["$",J.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,u,J)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return J?`${J}d`:`${u}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],G=(H,u,J)=>{if(F.length)F.push(t.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let L=g(J);F.push(t.jsxDEV(cB.default.Fragment,{children:[`${u} \u5269 `,t.jsxDEV(R,{color:iV(L),children:[L,"%"]},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 t.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function lV({clients:B,defaultIdx:I,hasProviders:C,pickCounts:g,onResult:F}){let{stdout:G}=V2(),[H,u]=cB.useState(I),[J,L]=cB.useState("projects"),[X,q]=cB.useState(0),[K,O]=cB.useState(0),[y,z]=cB.useState(()=>B[I]?.activeProvIdx||0),[$,d]=cB.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[l,IA]=cB.useState(""),[AA,GA]=cB.useState(null),[NA,KA]=cB.useState("collapsed"),[JA,s]=cB.useState(!1),[UA,yA]=cB.useState(0),XA=B[H],WA=XA.projects,KB=XA.providers,QA=TW[XA.client.id]||vW,gA=lQ()==="zh",LA=KB[y],mA=cB.default.useMemo(()=>tD(XA.client,LA),[XA.client.id,LA?.id,LA?.type]),rA=cB.default.useMemo(()=>KW(mA,gA),[mA,gA]),c=LA?.name||(gA?"\u672A\u914D\u7F6E":"N/A"),[xA,AB]=cB.useState(null);cB.useEffect(()=>{if(!LA){AB(null);return}let ZA=!1;return B1(LA).then((VA)=>{if(!ZA)AB(VA)}),()=>{ZA=!0}},[LA?.id,LA?.type]),cB.useEffect(()=>{q(0),O(0),L("projects"),z(B[H]?.activeProvIdx||0),GA(null),KA("collapsed"),s(!1),d(new Set(B[H]?.lastSelectedOptionIds??[]))},[H]),cB.useEffect(()=>{d((ZA)=>YW(ZA,mA,LA?.model))},[mA,LA?.model]);let dA=cB.useCallback((ZA)=>{let VA=i1(mA,$,ZA),qA=mA.filter((n)=>n.group===ZA);if(qA.length===0)return;let RA=ZA==="model"?lH(qA,g):"collapsed",pA=0;if(VA)if(ZA==="model"&&RA==="grid"){let n=qA.map((i)=>i.id),CA=m2(qA,G.columns||80,gA);pA=aH(n,VA.id,CA)}else pA=(ZA==="model"?P2(qA,$,g).list:qA).findIndex((CA)=>CA.id===VA.id)+1;yA(Math.max(0,pA)),KA(RA),GA(ZA)},[$,mA,g,G.columns,gA]);return yQ(cB.useCallback((ZA,VA)=>{if(JA){let RA=KB.length+1;if(VA.escape||ZA==="q"){s(!1);return}if(VA.upArrow){yA((pA)=>pA>0?pA-1:RA-1);return}if(VA.downArrow){yA((pA)=>pA<RA-1?pA+1:0);return}if(VA.return)if(UA<KB.length){let pA=KB[UA];z(UA),(async()=>{if(await lF(XA.client.id,pA.id),XA.client.setupConfigFiles)try{await XA.client.setupConfigFiles($I(pA))}catch(n){IA(gA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>IA(""),2500);return}XA.activeProvIdx=UA,IA(gA?`\u2713 \u5DF2\u7ED1\u5B9A ${pA.name}`:`\u2713 Bound ${pA.name}`),setTimeout(()=>IA(""),2000)})(),s(!1)}else s(!1),F({type:"providers"});return}if(AA){let RA=mA.filter((i)=>i.group===AA),pA=AA==="model";if(pA&&NA==="grid"){let i=RA.map((gB)=>gB.id),FA=m2(RA,G.columns||80,gA),PA=f2(i,FA),OA=OW(i,FA),EB=PA.flat.length;if(ZA==="q"){GA(null),KA("collapsed");return}if(VA.escape){if(lH(RA,g)==="grid")GA(null);else{KA("collapsed");let gB=i1(mA,$,AA),MB=P2(RA,$,g).list;yA(gB?Math.max(0,MB.findIndex((TA)=>TA.id===gB.id)+1):0)}return}if(EB===0)return;if(VA.leftArrow){yA((gB)=>gB>0?gB-1:EB-1);return}if(VA.rightArrow){yA((gB)=>gB<EB-1?gB+1:0);return}if(VA.upArrow||VA.downArrow){yA((gB)=>{let MB=0,TA=0,jB=0;for(let bQ=0;bQ<OA.length;bQ++){let jQ=OA[bQ].length;if(gB<jB+jQ){MB=bQ,TA=gB-jB;break}jB+=jQ}let tB=VA.upArrow?MB>0?MB-1:OA.length-1:MB<OA.length-1?MB+1:0,KQ=Math.min(TA,OA[tB].length-1);return OA.slice(0,tB).reduce((bQ,jQ)=>bQ+jQ.length,0)+KQ});return}if(VA.return){let gB=PA.flat[UA],MB=RA.find((TA)=>TA.id===gB);if(MB)d((TA)=>{let jB=new Set(TA);for(let tB of RA)jB.delete(tB.id);return jB.add(MB.id),jB});GA(null),KA("collapsed")}return}let n=pA?P2(RA,$,g):{list:RA,hiddenCount:0},CA=n.list.length+1+(n.hiddenCount>0?1:0);if(VA.escape||ZA==="q"){GA(null),KA("collapsed");return}if(VA.upArrow){yA((i)=>i>0?i-1:CA-1);return}if(VA.downArrow){yA((i)=>i<CA-1?i+1:0);return}if(VA.return){if(UA===0)d((i)=>{let FA=new Set(i);for(let PA of RA)FA.delete(PA.id);return FA});else if(pA&&n.hiddenCount>0&&UA===n.list.length+1){let i=i1(mA,$,AA),FA=RA.map((EB)=>EB.id),PA=m2(RA,G.columns||80,gA),OA=i?aH(FA,i.id,PA):0;yA(Math.max(0,OA)),KA("grid");return}else{let i=n.list[UA-1];d((FA)=>{let PA=new Set(FA);for(let OA of RA)PA.delete(OA.id);return PA.add(i.id),PA})}GA(null),KA("collapsed")}return}if(ZA==="q"){F({type:"exit"});return}if(ZA==="a"){F({type:"agent"});return}if(ZA==="s"){F({type:"stats"});return}if(ZA==="c"){F({type:"config"});return}if(ZA==="l"){F({type:"language"});return}if(ZA==="p"){F({type:"providers"});return}if(ZA==="m"){dA("model");return}let qA=parseInt(ZA);if(qA>=1&&qA<=B.length){u(qA-1);return}if(VA.leftArrow){u((RA)=>RA>0?RA-1:B.length-1);return}if(VA.rightArrow){u((RA)=>RA<B.length-1?RA+1:0);return}if(J==="projects"){if(VA.downArrow){if(X<WA.length-1)q((RA)=>RA+1);else if(rA.length>0)L("options"),O(0);return}if(VA.upArrow){if(X>0)q((RA)=>RA-1);return}}if(J==="options"){if(VA.downArrow){if(K<rA.length-1)O((RA)=>RA+1);return}if(VA.upArrow){if(K>0)O((RA)=>RA-1);else L("projects"),q(WA.length-1);return}}if(ZA===" "&&J==="options"&&rA.length>0){let RA=rA[K];if(RA.kind==="flag")d((pA)=>{let n=new Set(pA);if(n.has(RA.opt.id))n.delete(RA.opt.id);else n.add(RA.opt.id);return n});else if(RA.kind==="group")dA(RA.group);else yA(y),s(!0);return}if(VA.return){if(J==="options"&&rA.length>0){let n=rA[K];if(n.kind==="group"){dA(n.group);return}if(n.kind==="provider"){yA(y),s(!0);return}}let RA=WA[X],pA=RW({launchOptions:mA,enabled:$});F({type:"launch",clientId:XA.client.id,projectPath:RA.path,...pA})}},[J,H,X,K,y,KB,LA,XA,WA,mA,rA,$,B,F,gA,AA,JA,UA,g,NA,G.columns,dA])),t.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:0,children:[t.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:QA.color,paddingX:1,paddingY:0,children:[t.jsxDEV(h,{justifyContent:"space-between",children:[t.jsxDEV(h,{gap:1,children:[t.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:["v",pV]},void 0,!0,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(dV,{provider:LA,zh:gA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.jsxDEV(h,{children:[l&&t.jsxDEV(R,{color:"green",children:l},void 0,!1,void 0,this),!l&&xA&&t.jsxDEV(cV,{quota:xA,zh:gA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&t.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[t.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\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),t.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[t.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((ZA,VA)=>{let qA=TW[ZA.client.id]||vW;return VA===H?t.jsxDEV(h,{borderStyle:"bold",borderColor:qA.color,paddingX:1,children:t.jsxDEV(R,{color:qA.color,bold:!0,children:[qA.icon," ",ZA.client.name]},void 0,!0,void 0,this)},ZA.client.id,!1,void 0,this):t.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:t.jsxDEV(R,{dimColor:!0,children:[qA.icon," ",ZA.client.name]},void 0,!0,void 0,this)},ZA.client.id,!1,void 0,this)}),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.jsxDEV(_W,{color:QA.color},void 0,!1,void 0,this),JA?t.jsxDEV(SW,{provs:KB,provIdx:y,pickerIdx:UA,color:QA.color,zh:gA},void 0,!1,void 0,this):AA==="model"&&NA==="grid"?t.jsxDEV($W,{options:mA.filter((ZA)=>ZA.group==="model"),enabled:$,pickerIdx:UA,color:QA.color,zh:gA},void 0,!1,void 0,this):AA?t.jsxDEV(yW,{group:AA,options:mA,enabled:$,pickerIdx:UA,color:QA.color,zh:gA,pickCounts:g},void 0,!1,void 0,this):t.jsxDEV(t.Fragment,{children:[WA.map((ZA,VA)=>{let qA=J==="projects"&&VA===X;return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:ZA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ZA.hint?t.jsxDEV(R,{dimColor:!0,children:ZA.hint},void 0,!1,void 0,this):null]},VA,!0,void 0,this)}),rA.length>0&&t.jsxDEV(t.Fragment,{children:[t.jsxDEV(_W,{color:QA.color},void 0,!1,void 0,this),rA.map((ZA,VA)=>{let qA=J==="options"&&VA===K;if(ZA.kind==="flag"){let RA=ZA.opt,pA=$.has(RA.id);return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{color:pA?QA.color:void 0,bold:pA,children:pA?"\u25C9":"\u25CB"},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:RA.label[gA?"zh":"en"]||RA.label.en},void 0,!1,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:RA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:RA.description[gA?"zh":"en"]||RA.description.en},void 0,!1,void 0,this)]},RA.id,!0,void 0,this)}if(ZA.kind==="group"){let RA=i1(mA,$,ZA.group),pA=RA?RA.shortLabel:gA?"\u9ED8\u8BA4":"Default";return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:[ZA.title,":"]},void 0,!0,void 0,this),t.jsxDEV(R,{color:RA?QA.color:void 0,children:pA},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:gA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${ZA.group}`,!0,void 0,this)}return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:[ZA.title,":"]},void 0,!0,void 0,this),t.jsxDEV(R,{color:LA?QA.color:"yellow",children:LA?c:gA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),t.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:gA?"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),t.jsxDEV(h,{paddingX:2,marginTop:0,justifyContent:"center",gap:2,children:J==="options"?t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\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 VW({onResult:B}){let[I,C]=cB.useState(null);if(cB.useEffect(()=>{LW(45).then(C)},[]),!I)return t.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return t.jsxDEV(lV,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,pickCounts:I.pickCounts,onResult:B},void 0,!1,void 0,this)}var lB=YA(HB(),1);WQ();N0();dC();dC();uE();dC();var wA=YA(bB(),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"}},oH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},c1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function PW({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return wA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?G.color:C?G.color:"gray",paddingX:2,paddingY:0,children:[wA.jsxDEV(h,{justifyContent:"space-between",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:I||C,color:I?G.color:void 0,children:B.name},void 0,!1,void 0,this),g&&wA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&wA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{gap:1,children:C?wA.jsxDEV(R,{color:G.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):wA.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),wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&wA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&wA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&wA.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&&wA.jsxDEV(h,{marginTop:0,children:wA.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 mW({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:G,rowIdx:H,zh:u}){let J=ZE[I]||ZE.custom,L=u?w0[I]?.zh:w0[I]?.en,X=B==="add-model"?dF(I):void 0;if(X)return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:J.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,marginBottom:1,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:J.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:J.color,children:L},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",u?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X.map((z,$)=>{let d=H===$;return wA.jsxDEV(h,{paddingLeft:1,gap:1,children:[wA.jsxDEV(R,{color:d?J.color:void 0,bold:d,children:d?"\u25B8":" "},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:d,color:d?J.color:void 0,children:z},void 0,!1,void 0,this)]},z,!0,void 0,this)})]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u9009\u62E9":"select"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\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"?u?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?u?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":u?"\u6A21\u578B":"Model",K=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?G??"":F,O=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?u?"\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"?B2(I)||(u?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,y=B==="add-url"?u?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?u?"\u4FDD\u5B58":"save":B==="add-model"?u?"\u4FDD\u5B58":"save":u?"\u786E\u8BA4":"confirm";return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:J.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,marginBottom:1,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:J.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:J.color,children:L},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&wA.jsxDEV(R,{dimColor:!0,children:[" ",u?"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),O&&wA.jsxDEV(R,{dimColor:!0,children:[" ",u?"\u9ED8\u8BA4":"Default",": ",O]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:O?1:0,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:K||O||""},void 0,!1,void 0,this),wA.jsxDEV(R,{color:J.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:y},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function fW({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:G.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:G.color,children:B.name},void 0,!1,void 0,this),B.id===I&&wA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&wA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),wA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),wA.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&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),wA.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),wA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((u,J)=>{let L=u==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:u==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:u==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:u==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,X=J===g;return wA.jsxDEV(h,{borderStyle:X?"bold":"round",borderColor:X?"cyan":"gray",paddingX:2,children:wA.jsxDEV(R,{bold:X,color:X?"cyan":void 0,dimColor:!X,children:L},void 0,!1,void 0,this)},u,!1,void 0,this)})},void 0,!1,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.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(bB(),1);function hW({onDone:B}){let[I,C]=lB.useState("list"),[g,F]=lB.useState([]),[G,H]=lB.useState(),[u,J]=lB.useState({}),[L,X]=lB.useState(0),[q,K]=lB.useState(0),[O,y]=lB.useState(0),[z,$]=lB.useState(""),[d,l]=lB.useState(""),[IA,AA]=lB.useState("tako"),[GA,NA]=lB.useState(""),[KA,JA]=lB.useState(""),[s,UA]=lB.useState(""),[yA,XA]=lB.useState(""),WA=lQ()==="zh",KB=bg(),QA=KB[L],gA=oH[QA?.id]?.color||"white",LA=QA?g.filter((n)=>Q2(n,QA.id)):[],mA=u[QA?.id]||G,rA=LA.length+4,c=g.find((n)=>n.id===z),xA=c?.type==="claude-subscription"||c?.type==="codex-subscription",AB=c?[...c.id!==G?["default"]:[],...xA?["relogin"]:[],...c.builtin?["rekey"]:["delete"],"back"]:["back"],dA=lB.useCallback(async()=>{let n=await yI(),CA=await lI();F(n),H(CA?.id);let i={};for(let FA of bg()){let PA=await AC(FA.id);i[FA.id]=PA?.id}J(i)},[]);lB.useEffect(()=>{dA()},[dA]),lB.useEffect(()=>{K(0)},[L]),lB.useEffect(()=>{if(d){let n=setTimeout(()=>l(""),3000);return()=>clearTimeout(n)}},[d]);let ZA=lB.useCallback(async()=>{if(z&&g.find((OA)=>OA.id===z)?.builtin){await pg(z,{apiKey:GA}),l(WA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await dA(),C("list"),K(0);return}let n=w0[IA]?.[WA?"zh":"en"]||IA,CA=KA||uN(IA),i=s||B2(IA),FA=yA?parseInt(yA,10):NaN,PA=Number.isFinite(FA)&&FA>0?FA:void 0;await xg({name:n,type:IA,apiKey:GA,baseUrl:CA,model:i,modelContextWindow:PA,supportedClients:cI(IA)}),PQ("provider_added",{provider_type:IA,method:"manual"}),QC(),_0(),l(WA?"\u5DF2\u6DFB\u52A0":"Added"),XA(""),await dA(),C("list"),K(0)},[IA,GA,KA,s,yA,WA,dA,z,g]),VA=lB.useCallback(async()=>{C("scanning");let n=await aF(),CA=await oF(n);if(CA>0)QC(),_0();l(WA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${CA} \u4E2A`:`Scan done, ${CA} added`),await dA(),C("list"),K(0)},[dA,WA]),[qA,RA]=lB.useState("claude"),pA=lB.useCallback(async(n)=>{RA(n),C("logging-in");let CA=n==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(CA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:FA}=await Promise.resolve().then(() => (ow(),M7));if(n==="claude")try{let PA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),OA=await new Response(PA.stdout).text();await PA.exited;let EB=JSON.parse(OA.trim());if(EB.loggedIn&&EB.authMethod==="claude.ai"){let gB=EB.email||"",MB=EB.subscriptionType||"pro",TA=`Claude ${MB.charAt(0).toUpperCase()+MB.slice(1)}${gB?` (${gB})`:""}`,{readClaudeAuth:jB}=await Promise.resolve().then(() => (hw(),fw)),tB=await jB(),KQ=tB.credentials||tB.oauthAccount?{credentials:tB.credentials,oauthAccount:tB.oauthAccount}:void 0,bQ=g.find((jQ)=>jQ.type==="claude-subscription"&&jQ.email===gB);if(!bQ)await xg({name:TA,type:"claude-subscription",email:gB,subscriptionType:MB,supportedClients:cI("claude-subscription"),authData:KQ}),l(WA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await pg(bQ.id,{authData:KQ}),FA(bQ.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 PA=await import("fs/promises"),{homedir:OA}=await import("os"),{join:EB}=await import("path"),gB=JSON.parse(await PA.readFile(EB(OA(),".codex","auth.json"),"utf-8"));if(gB.auth_mode==="chatgpt"&&gB.tokens?.access_token){let MB="";try{MB=JSON.parse(atob(gB.tokens.id_token.split(".")[1])).email||""}catch{}let TA=g.find((jB)=>jB.type==="codex-subscription"&&jB.email===MB);if(!TA)await xg({name:MB?`Codex Plus (${MB})`:"Codex Subscription",type:"codex-subscription",email:MB||void 0,supportedClients:cI("codex-subscription"),authData:gB}),l(WA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await pg(TA.id,{authData:gB}),FA(TA.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(yQ(lB.useCallback((n,CA)=>{if(I==="list"){if(CA.escape||n==="q"){B();return}if(CA.leftArrow){X((FA)=>FA>0?FA-1:KB.length-1);return}if(CA.rightArrow){X((FA)=>FA<KB.length-1?FA+1:0);return}let i=parseInt(n);if(i>=1&&i<=KB.length){X(i-1);return}if(CA.upArrow){K((FA)=>FA>0?FA-1:rA-1);return}if(CA.downArrow){K((FA)=>FA<rA-1?FA+1:0);return}if(CA.return){if(q<LA.length){let FA=LA[q];lF(QA.id,FA.id).then(()=>{B()})}else if(q===LA.length)C("add-type"),K(0);else if(q===LA.length+1)VA();else if(q===LA.length+2)B("client-versions");else B();return}if((n==="d"||n==="e")&&q<LA.length)$(LA[q].id),C("detail"),y(0);return}if(I==="detail"){if(CA.leftArrow){y((i)=>i>0?i-1:AB.length-1);return}if(CA.rightArrow){y((i)=>i<AB.length-1?i+1:0);return}if(CA.escape){C("list"),K(0);return}if(CA.return){let i=AB[O];if(i==="back"){C("list"),K(0);return}if(i==="default")ZN(z).then(()=>{l(WA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),dA(),C("list"),K(0)});if(i==="delete")WN(z).then(()=>{l(WA?"\u5DF2\u5220\u9664":"Deleted"),dA(),C("list"),K(0)});if(i==="rekey")AA(c?.type||"tako"),NA(""),C("add-key"),K(0);if(i==="relogin"){let FA=c?.type==="codex-subscription"?"codex":"claude";C("list"),K(0),pA(FA)}}return}if(I==="add-type"){if(CA.upArrow){K((i)=>i>0?i-1:c1.length-1);return}if(CA.downArrow){K((i)=>i<c1.length-1?i+1:0);return}if(CA.escape){C("list"),K(0);return}if(CA.return){let i=c1[q];if(AA(i),i==="claude-subscription"){pA("claude");return}if(i==="codex-subscription"){pA("codex");return}NA(""),JA(""),UA(B2(i)||""),C("add-key"),K(0)}return}if(I==="add-key"){if(CA.escape){C("list"),K(0);return}if(CA.return&&GA){if(IA==="custom")C("add-url");else if(IA==="deepseek"||IA==="anthropic"||IA==="tako"||IA==="xiaomi")C("add-model"),K(0);else ZA();return}if(CA.backspace||CA.delete){NA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl)NA((i)=>i+n);return}if(I==="add-url"){if(CA.escape){C("list"),K(0);return}if(CA.return){C("add-model"),K(0);return}if(CA.backspace||CA.delete){JA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl)JA((i)=>i+n);return}if(I==="add-model"){let i=dF(IA);if(CA.escape){C("list"),K(0);return}if(i){if(CA.upArrow){K((FA)=>FA>0?FA-1:i.length-1);return}if(CA.downArrow){K((FA)=>FA<i.length-1?FA+1:0);return}if(CA.return){UA(i[q]),setTimeout(()=>ZA(),0);return}}else{if(CA.return){let FA=s.trim();if(FA&&SI.some((PA)=>PA.id===FA))ZA();else C("add-ctx");return}if(CA.backspace||CA.delete){UA((FA)=>FA.slice(0,-1));return}if(n&&!CA.ctrl)UA((FA)=>FA+n)}return}if(I==="add-ctx"){if(CA.escape){C("list"),K(0);return}if(CA.return){ZA();return}if(CA.backspace||CA.delete){XA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl&&/^[0-9]$/.test(n))XA((i)=>i+n);return}},[I,q,O,LA,rA,KB.length,QA,z,c,AB,IA,GA,KA,s,yA,B,VA,pA,ZA,dA,WA])),I==="scanning"||I==="logging-in"){let n=I==="logging-in"?ZE[qA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},CA=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:n.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[jA.jsxDEV(R,{color:n.color,bold:!0,children:[n.icon," ",CA]},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(mW,{screen:I,addType:IA,addKey:GA,addUrl:KA,addModel:s,addCtx:yA,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:c1.map((n,CA)=>{let i=ZE[n]||ZE.custom,FA=q===CA,PA=WA?w0[n]?.zh:w0[n]?.en,OA=n==="claude-subscription"||n==="codex-subscription";return jA.jsxDEV(h,{borderStyle:FA?"bold":"round",borderColor:FA?i.color:"gray",paddingX:2,paddingY:0,children:jA.jsxDEV(h,{gap:1,children:[jA.jsxDEV(R,{color:i.color,bold:!0,children:i.icon},void 0,!1,void 0,this),jA.jsxDEV(R,{bold:FA,color:FA?i.color:void 0,children:PA},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)},n,!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"&&c)return jA.jsxDEV(fW,{provider:c,defaultId:G,detailActions:AB,detailIdx:O,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),d&&jA.jsxDEV(R,{color:"green",children:[" \u2713 ",d]},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),KB.map((n,CA)=>{let i=oH[n.id]||{icon:"\u25AA",color:"white"},FA=CA===L;return jA.jsxDEV(h,{borderStyle:FA?"bold":"single",borderColor:FA?i.color:"gray",paddingX:2,children:jA.jsxDEV(R,{color:FA?i.color:void 0,bold:FA,dimColor:!FA,children:[i.icon," ",n.name]},void 0,!0,void 0,this)},n.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:gA,paddingX:1,paddingY:1,children:[LA.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),LA.map((n,CA)=>jA.jsxDEV(PW,{provider:n,focused:q===CA,bound:n.id===mA,isDefault:n.id===G,zh:WA},n.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((n)=>{let CA=q===LA.length+n.offset;return jA.jsxDEV(h,{borderStyle:CA?"bold":"round",borderColor:CA?"cyan":"gray",paddingX:2,children:jA.jsxDEV(R,{bold:CA,color:CA?"cyan":void 0,dimColor:!CA,children:[n.icon," ",n.label]},void 0,!0,void 0,this)},n.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(HB(),1);WQ();iB();async function bW(){try{let B=await hg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${eQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${eQ}/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 jW(B){return B.toLocaleString("en-US")}var vI=YA(bB(),1);function xW({onExit:B}){let[I,C]=DC.useState(null),[g,F]=DC.useState(!0),[G,H]=DC.useState(10),u=DC.useCallback(async()=>{F(!0);let L=await bW();if(L.success&&L.data)C(L.data);F(!1)},[]);DC.useEffect(()=>{u()},[u]),DC.useEffect(()=>{let L=setInterval(()=>{H((X)=>{if(X<=1)return u(),10;return X-1})},1000);return()=>clearInterval(L)},[u]),yQ((L,X)=>{if(L==="q"||X.escape)B()});let J=lQ()==="zh";return vI.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[vI.jsxDEV(R,{bold:!0,children:bA("stats.title")},void 0,!1,void 0,this),g&&!I?vI.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?vI.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[vI.jsxDEV(R,{children:bA("stats.totalRequests",{count:jW(I.totalRequests)})},void 0,!1,void 0,this),vI.jsxDEV(R,{children:bA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),vI.jsxDEV(R,{children:bA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&vI.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[vI.jsxDEV(R,{bold:!0,dimColor:!0,children:J?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((L,X)=>vI.jsxDEV(R,{dimColor:!0,children:[X===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",L.model.padEnd(25)," ",String(L.requests).padStart(5)," ",L.cost]},L.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):vI.jsxDEV(R,{color:"red",children:J?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),vI.jsxDEV(h,{marginTop:1,children:vI.jsxDEV(R,{dimColor:!0,children:J?`${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 tC=YA(HB(),1);WQ();iB();WQ();uE();N0();dC();function aV(B){return B.startsWith("cr_")&&B.length>10}async function oV(B){try{let C=await(await fetch(`${eQ}/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 pW(B){if(!aV(B))return PQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:bA("auth.invalidFormat")};let I=await oV(B);if(!I.valid)return PQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await fg({apiKey:B,apiId:I.apiId}),await nV(B,I.apiId),PQ("api_key_validated",{success:!0}),QC(),_0(),{success:!0}}async function nV(B,I){let g=(await yI()).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:eQ,apiId:I,supportedClients:cI("tako"),builtin:!0})}uE();var J0=YA(bB(),1);function iW({isReconfigure:B,onDone:I}){let[C,g]=tC.useState(""),[F,G]=tC.useState("idle"),[H,u]=tC.useState(""),{stdin:J,setRawMode:L}=_2();tC.useEffect(()=>{if(!J)return;L(!0);let O=(y)=>{let z=y.toString();if(z.length>1&&!z.startsWith("\x1B"))g(($)=>$+z.replace(/[\r\n]/g,""))};return J.on("data",O),()=>{J.off("data",O)}},[J,L]);let X=tC.useCallback(async()=>{if(!C||F==="validating")return;G("validating");let O=await pW(C);if(O.success)G("success"),QC(),_0(),setTimeout(()=>I(!0),500);else G("error"),u(O.error||"Validation failed")},[C,F,I]);yQ((O,y)=>{if(y.escape){I(!1);return}if(y.return){X();return}if(y.backspace||y.delete){g((z)=>z.slice(0,-1)),G("idle");return}if(O&&!y.ctrl&&O.length===1)g((z)=>z+O),G("idle")});let q=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,K=lQ()==="zh";return J0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[J0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?bA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),J0.jsxDEV(h,{marginTop:1,children:[J0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),J0.jsxDEV(R,{children:q},void 0,!1,void 0,this),F==="idle"&&J0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&J0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",bA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&J0.jsxDEV(R,{color:"green",children:["\u2713 ",bA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&J0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),J0.jsxDEV(h,{marginTop:1,children:J0.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 dW=YA(HB(),1);WQ();var FC=YA(bB(),1),l1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function cW({onDone:B}){let[I,C]=dW.useState(l1.findIndex((g)=>g.value===lQ()));return yQ((g,F)=>{if(F.upArrow)C((G)=>G>0?G-1:l1.length-1);if(F.downArrow)C((G)=>G<l1.length-1?G+1:0);if(F.return)KN(l1[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),l1.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===lQ()&&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 u4=YA(HB(),1);iB();iB();WQ();var GQ=YA(bB(),1);import{join as rV}from"path";var aW=rV(nB,".key-prompt.json");async function sV(){try{return await Bun.file(aW).json()}catch{return{}}}async function lW(B){await Bun.write(aW,JSON.stringify(B))}async function oW(){if(await o6())return!1;let B=await sV();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function nW(B){if(B==="never")await lW({never:!0});else{let I=new Date().toISOString().slice(0,10);await lW({dismissed:I})}}var H4=[{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 rW({onDone:B}){let[I,C]=u4.useState(0),g=lQ()==="zh";return yQ(u4.useCallback((F,G)=>{if(G.upArrow){C((H)=>H>0?H-1:H4.length-1);return}if(G.downArrow){C((H)=>H<H4.length-1?H+1:0);return}if(G.escape){B("skip");return}if(G.return){B(H4[I].id);return}},[I,B])),GQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[GQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[GQ.jsxDEV(h,{gap:1,children:[GQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),GQ.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),GQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[GQ.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),GQ.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),GQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:H4.map((F,G)=>{let H=G===I;return GQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[GQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),GQ.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&&GQ.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),GQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GQ.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 _I=YA(HB(),1);WQ();var $B=YA(bB(),1),nH=12,sW={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function tW({onDone:B}){let I=bg(),C=lQ()==="zh",[g,F]=_I.useState(0),[G,H]=_I.useState(0),[u,J]=_I.useState(0),[L,X]=_I.useState({}),[q,K]=_I.useState(null),[O,y]=_I.useState(""),z=I[g],$=_I.useCallback(async(NA)=>{X((JA)=>({...JA,[NA]:{loading:!0,versions:[],current:null}}));let KA=I.find((JA)=>JA.id===NA);if(!KA)return;try{let[JA,s]=await Promise.all([ew(KA.package),B3(KA)]),UA=JA.map((yA)=>({...yA,isCurrent:yA.version===s}));X((yA)=>({...yA,[NA]:{loading:!1,versions:UA,current:s}}))}catch(JA){X((s)=>({...s,[NA]:{loading:!1,error:JA.message,versions:[],current:null}}))}},[I]);_I.useEffect(()=>{if(!z)return;if(!L[z.id])$(z.id)},[g,z?.id]),_I.useEffect(()=>{H(0),J(0)},[g]),_I.useEffect(()=>{if(!O)return;let NA=setTimeout(()=>y(""),3000);return()=>clearTimeout(NA)},[O]);let d=z?L[z.id]:void 0,l=d?.versions??[],IA=_I.useCallback(async(NA)=>{if(!z||q)return;K(NA);try{await A3(z,NA),y(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${NA}`:`\u2713 Switched to ${NA}`),await $(z.id)}catch(KA){y(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${KA.message}`:`\u2717 Install failed: ${KA.message}`)}finally{K(null)}},[z,q,$,C]);yQ((NA,KA)=>{if(q)return;if(KA.escape||NA==="q"){B();return}if(KA.leftArrow){F((s)=>s>0?s-1:I.length-1);return}if(KA.rightArrow){F((s)=>s<I.length-1?s+1:0);return}if(NA==="r"){if(z)$(z.id);return}if(!l.length)return;let JA=l.length-1;if(KA.upArrow){H((s)=>{let UA=Math.max(0,s-1);if(UA<u)J(UA);return UA});return}if(KA.downArrow){H((s)=>{let UA=Math.min(JA,s+1);if(UA>=u+nH)J(UA-nH+1);return UA});return}if(KA.return){let s=l[G];if(s&&!s.isCurrent)IA(s.version)}});let AA=sW[z?.id]?.color||"white",GA=l.slice(u,u+nH);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),O&&$B.jsxDEV(R,{color:O.startsWith("\u2713")?"green":"red",children:[" ",O]},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,KA)=>{let JA=sW[NA.id]||{icon:"\u25AA",color:"white"},s=KA===g;return $B.jsxDEV(h,{borderStyle:s?"bold":"single",borderColor:s?JA.color:"gray",paddingX:2,children:$B.jsxDEV(R,{bold:s,color:s?JA.color:void 0,dimColor:!s,children:[JA.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:AA,paddingX:2,paddingY:1,children:!d||d.loading?$B.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):d.error?$B.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",d.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:AA,children:d.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:GA.map((NA,KA)=>{let s=u+KA===G,UA=NA.publishedAt?NA.publishedAt.slice(0,10):"",yA=NA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",XA=q===NA.version,WA=s?AA:NA.isCurrent?"green":void 0;return $B.jsxDEV(h,{paddingLeft:1,children:$B.jsxDEV(R,{color:WA,bold:s,dimColor:!s&&!NA.isCurrent,children:[s?"\u25B6 ":" ",NA.version.padEnd(16),UA.padEnd(14),yA,XA?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 hQ=YA(HB(),1);WQ();J3();var BI=YA(HB(),1);WQ();J3();lg();var XB=YA(bB(),1),eW=300,AZ=200;function tV(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 BZ({sid:B,onBack:I}){let C=G0()==="zh",[g,F]=BI.useState(null),[G,H]=BI.useState([]),[u,J]=BI.useState(""),[L,X]=BI.useState("idle"),[q,K]=BI.useState(null),[O,y]=BI.useState([]),z=BI.useRef(0),$=BI.useCallback(async()=>{let AA=await H2(B,AZ);if(!AA)return;F(AA.meta),H(AA.log);try{let NA=await(await import("fs/promises")).stat(aQ(B));z.current=NA.size}catch{z.current=0}},[B]);BI.useEffect(()=>{$()},[$]),BI.useEffect(()=>{let AA=!1,GA=null,NA=async()=>{if(AA)return;try{let KA=await import("fs/promises"),JA=await KA.stat(aQ(B));if(JA.size>z.current){let s=await KA.open(aQ(B),"r"),UA=Buffer.alloc(JA.size-z.current);await s.read(UA,0,UA.length,z.current),await s.close(),z.current=JA.size;let yA=[];for(let XA of UA.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=UV.exec(B))F.meta=!0,F.shift=/^[A-Z]$/.test(I[1]);else if(I=LV.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(""),u=(I[3]||I[5]||1)-1;F.ctrl=!!(u&4),F.meta=!!(u&10),F.shift=!!(u&1),F.code=H,F.name=FW[H],F.shift=KV(H)||F.shift,F.ctrl=RV(H)||F.ctrl}return F},MW=kV;var JW=YA(HB(),1);var OV=()=>JW.useContext(t3),_2=OV;var zV=(B,I={})=>{let{stdin:C,setRawMode:g,internal_exitOnCtrlC:F,internal_eventEmitter:G}=_2();pH.useEffect(()=>{if(I.isActive===!1)return;return g(!0),()=>{g(!1)}},[I.isActive,g]),pH.useEffect(()=>{if(I.isActive===!1)return;let H=(u)=>{let J=MW(u),L={upArrow:J.name==="up",downArrow:J.name==="down",leftArrow:J.name==="left",rightArrow:J.name==="right",pageDown:J.name==="pagedown",pageUp:J.name==="pageup",home:J.name==="home",end:J.name==="end",return:J.name==="return",escape:J.name==="escape",ctrl:J.ctrl,shift:J.shift,tab:J.name==="tab",backspace:J.name==="backspace",delete:J.name==="delete",meta:J.meta||J.name==="escape"||J.option,super:J.super??!1,hyper:J.hyper??!1,capsLock:J.capsLock??!1,numLock:J.numLock??!1,eventType:J.eventType},X;if(J.isKittyProtocol)if(J.isPrintable)X=J.text??J.name;else if(J.ctrl&&J.name.length===1)X=J.name;else X="";else if(J.ctrl)X=J.name;else X=J.sequence;if(!J.isKittyProtocol&&wW.includes(J.name))X="";if(X.startsWith("\x1B"))X=X.slice(1);if(X.length===1&&typeof X[0]==="string"&&/[A-Z]/.test(X[0]))L.shift=!0;if(!(X==="c"&&L.ctrl)||!F)u0.batchedUpdates(()=>{B(X,L)})};return G?.on("input",H),()=>{G?.removeListener("input",H)}},[I.isActive,C,F,B])},yQ=zV;var SV=YA(HB(),1);var UW=YA(HB(),1);var yV=()=>UW.useContext(e3),V2=yV;var $V=YA(HB(),1);var iH=YA(HB(),1);var TV=YA(HB(),1);var vV=YA(HB(),1);var G4=YA(HB(),1);var cB=YA(HB(),1);ZI();N0();WQ();ow();ZI();WQ();N0();async function LW(B=45){let I=bg(),C=await oL(),g=await lI(),F=lQ()==="zh",G=[...I].sort((J,L)=>{if(J.id===C)return-1;if(L.id===C)return 1;return 0}),H=[];for(let J of G){let L=await aL(J.id,hN,!0),X=process.cwd(),q=[{label:F?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:jN(X,B),path:X},...L.map((AA)=>({label:jN(AA.path,B),hint:nL(AA.lastLaunchedAt),path:AA.path}))],K=await eE(J.id),y=await AC(J.id)||K.find((AA)=>AA.id===g?.id)||K[0],z=y?K.findIndex((AA)=>AA.id===y.id):0,$=tD(J,y),d=new Set($.map((AA)=>AA.id)),IA=(await pw(J.id)).filter((AA)=>d.has(AA));H.push({client:J,projects:q,providers:K,activeProvider:y,activeProvIdx:Math.max(z,0),launchOptions:$,lastSelectedOptionIds:IA})}let u={};try{u=await Q7()}catch{u={}}return{clients:H,defaultIdx:0,hasProviders:H.some((J)=>J.providers.length>0),pickCounts:u,zh:F}}function KW(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 i1(B,I,C){return B.find((g)=>g.group===C&&I.has(g.id))}function RW(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 YW(B,I,C){let g=new Set(I.map((L)=>L.id)),F=new Set(I.filter((L)=>L.group==="model").map((L)=>L.id)),G=C?`model-${C}`:void 0,H=new Set,u=!1,J=!1;for(let L of B)if(g.has(L)){if(H.add(L),F.has(L))J=!0}else u=!0;if(!J&&G&&F.has(G))H.add(G),u=!0;return u?H:B}function _V(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 VV(B){return B.replace(/\x1b\[[0-9;]*m/g,"")}function d1(B){let I=VV(B),C=0;for(let g of I)C+=_V(g)?2:1;return C}function WW(B,I,C="left"){let g=d1(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 qW=6,kW=4,cH=16,PV=12;function P2(B,I,C){if(!B.some((J)=>(C[J.id]??0)>0))return{list:B,hiddenCount:0};let F=new Map(B.map((J,L)=>[J.id,L])),G=B.filter((J)=>(C[J.id]??0)>0).sort((J,L)=>{let X=(C[L.id]??0)-(C[J.id]??0);if(X!==0)return X;return(F.get(J.id)??0)-(F.get(L.id)??0)}).slice(0,qW).map((J)=>J.id),H=new Set(G);for(let J of B)if(I.has(J.id))H.add(J.id);let u=B.filter((J)=>H.has(J.id));return{list:u,hiddenCount:B.length-u.length}}function lH(B,I){return!B.some((g)=>(I[g.id]??0)>0)&&B.length>qW?"grid":"collapsed"}function mV(B,I){if(B.length===0)return 1;let C=Math.max(...B.map((G)=>d1(G))),g=Math.max(cH,C+4),F=Math.max(g,I-PV);return Math.max(1,Math.min(kW,B.length,Math.floor(F/g)))}function m2(B,I,C){let g=B.map((F)=>F.label[C?"zh":"en"]||F.label.en||F.id);return mV(g,I)}function fV(B,I){let C=Math.max(1,Math.min(kW,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 N4(B){return B.startsWith("model-")?B.slice(6):B}function dH(B){let I=N4(B).toLowerCase();return I.replace(/^(?:full[-_]|\u6EE1\u8840[-_])+/u,"").slice(0,3)||I.slice(0,3)||I}function ZW(B){let I=["gpt","ful","cla","dee","glm","kim","qwe","min","mim","spa"],C=I.indexOf(B);return C===-1?I.length:C}function XW(B){let I=N4(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 hV(B,I){let C=dH(B),g=dH(I),F=ZW(C)-ZW(g)||C.localeCompare(g);if(F!==0)return F;let G=XW(B),H=XW(I),u=Math.max(G.length,H.length);for(let J=0;J<u;J++){let L=G[J],X=H[J];if(L===void 0)return 1;if(X===void 0)return-1;if(typeof L==="number"&&typeof X==="number"){if(L!==X)return X-L;continue}let q=String(L),K=String(X);if(q!==K)return q.localeCompare(K)}return N4(B).localeCompare(N4(I))}function f2(B,I){let C=[...B].sort(hV),g=[];for(let G of C){let H=dH(G),u=g[g.length-1];if(u?.family===H)u.ids.push(G);else g.push({family:H,ids:[G]})}let F=g.map((G)=>({family:G.family,rows:fV(G.ids,I).rows}));return{groups:F,flat:F.flatMap((G)=>G.rows.flat())}}function aH(B,I,C){return f2(B,C).flat.indexOf(I)}function OW(B,I){return f2(B,I).groups.flatMap((C)=>C.rows)}var LB=YA(bB(),1),jV=[["\u2191\u2193","\u9009\u62E9","select"],["Enter","\u786E\u8BA4","confirm"],["Esc","\u53D6\u6D88","cancel"]];function zW({zh:B}){return LB.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:jV.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 SW({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 u=C===H,J=H===I;return LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:u?g:void 0,bold:u,children:u?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:u,color:u?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),J&&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(zW,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yW({group:B,options:I,enabled:C,pickerIdx:g,color:F,zh:G,pickCounts:H={}}){let u=I.filter((q)=>q.group===B),J=B==="model"?P2(u,C,H):{list:u,hiddenCount:0},L=B==="model"?G?"\u9009\u62E9\u6A21\u578B":"Pick Model":B,X=!u.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 ",L]},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),X&&LB.jsxDEV(R,{color:"green",children:" \u2605"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})(),J.list.map((q,K)=>{let O=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:O?F:void 0,bold:O,children:O?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:O,color:O?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),O&&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)}),J.hiddenCount>0&&LB.jsxDEV(h,{paddingLeft:1,children:[LB.jsxDEV(R,{color:g===J.list.length+1?F:void 0,bold:g===J.list.length+1,children:g===J.list.length+1?"\u25B8":" "},void 0,!1,void 0,this),LB.jsxDEV(R,{bold:g===J.list.length+1,color:g===J.list.length+1?F:void 0,children:[" ",G?`\u25BE \u663E\u793A\u5168\u90E8 (${J.hiddenCount})`:`\u25BE Show all (${J.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(zW,{zh:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var LQ=YA(bB(),1);function xV({zh:B}){return LQ.jsxDEV(h,{marginTop:0,justifyContent:"center",gap:2,children:[LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193\u2190\u2192"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u9009\u62E9":"select"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),LQ.jsxDEV(R,{dimColor:!0,children:B?"\u8FD4\u56DE":"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $W({options:B,enabled:I,pickerIdx:C,color:g,zh:F}){let{stdout:G}=V2(),H=B.map((K)=>K.id),u=new Map(B.map((K)=>[K.id,K])),J=(K)=>u.get(K)?.label[F?"zh":"en"]||u.get(K)?.label.en||K,L=m2(B,G.columns||80,F),X=f2(H,L),q=Math.max(cH,...H.length>0?H.map((K)=>d1(J(K))+3):[0]);return LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,borderStyle:"round",borderColor:g,paddingX:1,paddingY:0,children:[LQ.jsxDEV(R,{bold:!0,color:g,children:["\u25A3 ",F?"\u9009\u62E9\u6A21\u578B":"Pick Model"]},void 0,!0,void 0,this),LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,children:X.groups.map((K,O)=>LQ.jsxDEV(h,{flexDirection:"column",marginTop:0,children:[O>0&&LQ.jsxDEV(h,{children:LQ.jsxDEV(R,{dimColor:!0,children:"\u254C".repeat(Math.max(8,q*L))},void 0,!1,void 0,this)},void 0,!1,void 0,this),K.rows.map((y,z)=>LQ.jsxDEV(h,{children:y.map(($)=>{let l=X.flat.indexOf($)===C,IA=I.has($),AA=J($);return LQ.jsxDEV(h,{marginRight:1,children:[LQ.jsxDEV(R,{color:l?g:void 0,bold:l,children:l?"\u25B8":" "},void 0,!1,void 0,this),LQ.jsxDEV(R,{color:l?g:void 0,bold:l,children:WW(AA,q)},void 0,!1,void 0,this),IA&&LQ.jsxDEV(R,{color:"green",children:"\u2605"},void 0,!1,void 0,this)]},$,!0,void 0,this)})},`${K.family}-${z}`,!1,void 0,this))]},K.family,!0,void 0,this))},void 0,!1,void 0,this),LQ.jsxDEV(xV,{zh:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var t=YA(bB(),1),pV="0.3.18",TW={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},vW={icon:"\u25AA",color:"white"};function _W({color:B}){let{stdout:I}=V2(),C=Math.max((I.columns||80)-6,20);return t.jsxDEV(h,{marginY:0,children:t.jsxDEV(R,{dimColor:!0,color:B,children:"\u2500".repeat(C)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function iV(B){return B>30?"green":B>10?"yellow":"red"}function dV({provider:B,zh:I}){if(!B)return t.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,u]=G.split("@");if(H&&u)G=H.length>14?`${H.slice(0,12)}\u2026@${u}`:G}return t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{color:g.color,children:[g.icon," ",F]},void 0,!0,void 0,this),G&&t.jsxDEV(R,{dimColor:!0,children:[" \xB7 ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cV({quota:B,zh:I}){if(B.status==="unsupported")return null;if(B.status==="error")return t.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 u=B.daily??B.primary??B.secondary;if(!u)return null;let J=u.costUsed??0;return t.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",I?"\u4ECA\u65E5":"Today",": ",t.jsxDEV(R,{color:"green",children:["$",J.toFixed(2)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let C=(H,u,J)=>{if(H&&H>=1440)return`${Math.round(H/1440)}d`;if(H)return`${Math.round(H/60)}h`;return J?`${J}d`:`${u}h`},g=(H)=>Math.max(0,Math.min(100,100-Math.round(H))),F=[],G=(H,u,J)=>{if(F.length)F.push(t.jsxDEV(R,{dimColor:!0,children:" \xB7 "},`sep-${H}`,!1,void 0,this));let L=g(J);F.push(t.jsxDEV(cB.default.Fragment,{children:[`${u} \u5269 `,t.jsxDEV(R,{color:iV(L),children:[L,"%"]},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 t.jsxDEV(R,{dimColor:!0,children:["\uD83D\uDCB0 ",F]},void 0,!0,void 0,this)}function lV({clients:B,defaultIdx:I,hasProviders:C,pickCounts:g,onResult:F}){let{stdout:G}=V2(),[H,u]=cB.useState(I),[J,L]=cB.useState("projects"),[X,q]=cB.useState(0),[K,O]=cB.useState(0),[y,z]=cB.useState(()=>B[I]?.activeProvIdx||0),[$,d]=cB.useState(()=>new Set(B[I]?.lastSelectedOptionIds??[])),[l,IA]=cB.useState(""),[AA,GA]=cB.useState(null),[NA,KA]=cB.useState("collapsed"),[JA,s]=cB.useState(!1),[UA,yA]=cB.useState(0),XA=B[H],WA=XA.projects,KB=XA.providers,QA=TW[XA.client.id]||vW,gA=lQ()==="zh",LA=KB[y],mA=cB.default.useMemo(()=>tD(XA.client,LA),[XA.client.id,LA?.id,LA?.type]),rA=cB.default.useMemo(()=>KW(mA,gA),[mA,gA]),c=LA?.name||(gA?"\u672A\u914D\u7F6E":"N/A"),[xA,AB]=cB.useState(null);cB.useEffect(()=>{if(!LA){AB(null);return}let ZA=!1;return B1(LA).then((VA)=>{if(!ZA)AB(VA)}),()=>{ZA=!0}},[LA?.id,LA?.type]),cB.useEffect(()=>{q(0),O(0),L("projects"),z(B[H]?.activeProvIdx||0),GA(null),KA("collapsed"),s(!1),d(new Set(B[H]?.lastSelectedOptionIds??[]))},[H]),cB.useEffect(()=>{d((ZA)=>YW(ZA,mA,LA?.model))},[mA,LA?.model]);let dA=cB.useCallback((ZA)=>{let VA=i1(mA,$,ZA),qA=mA.filter((n)=>n.group===ZA);if(qA.length===0)return;let RA=ZA==="model"?lH(qA,g):"collapsed",pA=0;if(VA)if(ZA==="model"&&RA==="grid"){let n=qA.map((i)=>i.id),CA=m2(qA,G.columns||80,gA);pA=aH(n,VA.id,CA)}else pA=(ZA==="model"?P2(qA,$,g).list:qA).findIndex((CA)=>CA.id===VA.id)+1;yA(Math.max(0,pA)),KA(RA),GA(ZA)},[$,mA,g,G.columns,gA]);return yQ(cB.useCallback((ZA,VA)=>{if(JA){let RA=KB.length+1;if(VA.escape||ZA==="q"){s(!1);return}if(VA.upArrow){yA((pA)=>pA>0?pA-1:RA-1);return}if(VA.downArrow){yA((pA)=>pA<RA-1?pA+1:0);return}if(VA.return)if(UA<KB.length){let pA=KB[UA];z(UA),(async()=>{if(await lF(XA.client.id,pA.id),XA.client.setupConfigFiles)try{await XA.client.setupConfigFiles($I(pA))}catch(n){IA(gA?"\u26A0 \u914D\u7F6E\u540C\u6B65\u5931\u8D25":"\u26A0 Config sync failed"),setTimeout(()=>IA(""),2500);return}XA.activeProvIdx=UA,IA(gA?`\u2713 \u5DF2\u7ED1\u5B9A ${pA.name}`:`\u2713 Bound ${pA.name}`),setTimeout(()=>IA(""),2000)})(),s(!1)}else s(!1),F({type:"providers"});return}if(AA){let RA=mA.filter((i)=>i.group===AA),pA=AA==="model";if(pA&&NA==="grid"){let i=RA.map((gB)=>gB.id),FA=m2(RA,G.columns||80,gA),PA=f2(i,FA),OA=OW(i,FA),EB=PA.flat.length;if(ZA==="q"){GA(null),KA("collapsed");return}if(VA.escape){if(lH(RA,g)==="grid")GA(null);else{KA("collapsed");let gB=i1(mA,$,AA),MB=P2(RA,$,g).list;yA(gB?Math.max(0,MB.findIndex((TA)=>TA.id===gB.id)+1):0)}return}if(EB===0)return;if(VA.leftArrow){yA((gB)=>gB>0?gB-1:EB-1);return}if(VA.rightArrow){yA((gB)=>gB<EB-1?gB+1:0);return}if(VA.upArrow||VA.downArrow){yA((gB)=>{let MB=0,TA=0,jB=0;for(let bQ=0;bQ<OA.length;bQ++){let jQ=OA[bQ].length;if(gB<jB+jQ){MB=bQ,TA=gB-jB;break}jB+=jQ}let tB=VA.upArrow?MB>0?MB-1:OA.length-1:MB<OA.length-1?MB+1:0,KQ=Math.min(TA,OA[tB].length-1);return OA.slice(0,tB).reduce((bQ,jQ)=>bQ+jQ.length,0)+KQ});return}if(VA.return){let gB=PA.flat[UA],MB=RA.find((TA)=>TA.id===gB);if(MB)d((TA)=>{let jB=new Set(TA);for(let tB of RA)jB.delete(tB.id);return jB.add(MB.id),jB});GA(null),KA("collapsed")}return}let n=pA?P2(RA,$,g):{list:RA,hiddenCount:0},CA=n.list.length+1+(n.hiddenCount>0?1:0);if(VA.escape||ZA==="q"){GA(null),KA("collapsed");return}if(VA.upArrow){yA((i)=>i>0?i-1:CA-1);return}if(VA.downArrow){yA((i)=>i<CA-1?i+1:0);return}if(VA.return){if(UA===0)d((i)=>{let FA=new Set(i);for(let PA of RA)FA.delete(PA.id);return FA});else if(pA&&n.hiddenCount>0&&UA===n.list.length+1){let i=i1(mA,$,AA),FA=RA.map((EB)=>EB.id),PA=m2(RA,G.columns||80,gA),OA=i?aH(FA,i.id,PA):0;yA(Math.max(0,OA)),KA("grid");return}else{let i=n.list[UA-1];d((FA)=>{let PA=new Set(FA);for(let OA of RA)PA.delete(OA.id);return PA.add(i.id),PA})}GA(null),KA("collapsed")}return}if(ZA==="q"){F({type:"exit"});return}if(ZA==="a"){F({type:"agent"});return}if(ZA==="s"){F({type:"stats"});return}if(ZA==="c"){F({type:"config"});return}if(ZA==="l"){F({type:"language"});return}if(ZA==="p"){F({type:"providers"});return}if(ZA==="m"){dA("model");return}let qA=parseInt(ZA);if(qA>=1&&qA<=B.length){u(qA-1);return}if(VA.leftArrow){u((RA)=>RA>0?RA-1:B.length-1);return}if(VA.rightArrow){u((RA)=>RA<B.length-1?RA+1:0);return}if(J==="projects"){if(VA.downArrow){if(X<WA.length-1)q((RA)=>RA+1);else if(rA.length>0)L("options"),O(0);return}if(VA.upArrow){if(X>0)q((RA)=>RA-1);return}}if(J==="options"){if(VA.downArrow){if(K<rA.length-1)O((RA)=>RA+1);return}if(VA.upArrow){if(K>0)O((RA)=>RA-1);else L("projects"),q(WA.length-1);return}}if(ZA===" "&&J==="options"&&rA.length>0){let RA=rA[K];if(RA.kind==="flag")d((pA)=>{let n=new Set(pA);if(n.has(RA.opt.id))n.delete(RA.opt.id);else n.add(RA.opt.id);return n});else if(RA.kind==="group")dA(RA.group);else yA(y),s(!0);return}if(VA.return){if(J==="options"&&rA.length>0){let n=rA[K];if(n.kind==="group"){dA(n.group);return}if(n.kind==="provider"){yA(y),s(!0);return}}let RA=WA[X],pA=RW({launchOptions:mA,enabled:$});F({type:"launch",clientId:XA.client.id,projectPath:RA.path,...pA})}},[J,H,X,K,y,KB,LA,XA,WA,mA,rA,$,B,F,gA,AA,JA,UA,g,NA,G.columns,dA])),t.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:0,children:[t.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:QA.color,paddingX:1,paddingY:0,children:[t.jsxDEV(h,{justifyContent:"space-between",children:[t.jsxDEV(h,{gap:1,children:[t.jsxDEV(R,{bold:!0,children:"\uD83D\uDC19 Tako"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:["v",pV]},void 0,!0,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(dV,{provider:LA,zh:gA},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.jsxDEV(h,{children:[l&&t.jsxDEV(R,{color:"green",children:l},void 0,!1,void 0,this),!l&&xA&&t.jsxDEV(cV,{quota:xA,zh:gA},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!C&&t.jsxDEV(h,{marginTop:1,justifyContent:"center",gap:1,children:[t.jsxDEV(R,{color:"yellow",children:"\u26A0"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\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),t.jsxDEV(h,{marginTop:1,gap:1,justifyContent:"center",children:[t.jsxDEV(R,{dimColor:!0,children:"\u2039"},void 0,!1,void 0,this),B.map((ZA,VA)=>{let qA=TW[ZA.client.id]||vW;return VA===H?t.jsxDEV(h,{borderStyle:"bold",borderColor:qA.color,paddingX:1,children:t.jsxDEV(R,{color:qA.color,bold:!0,children:[qA.icon," ",ZA.client.name]},void 0,!0,void 0,this)},ZA.client.id,!1,void 0,this):t.jsxDEV(h,{borderStyle:"single",borderColor:"gray",paddingX:1,children:t.jsxDEV(R,{dimColor:!0,children:[qA.icon," ",ZA.client.name]},void 0,!0,void 0,this)},ZA.client.id,!1,void 0,this)}),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),t.jsxDEV(_W,{color:QA.color},void 0,!1,void 0,this),JA?t.jsxDEV(SW,{provs:KB,provIdx:y,pickerIdx:UA,color:QA.color,zh:gA},void 0,!1,void 0,this):AA==="model"&&NA==="grid"?t.jsxDEV($W,{options:mA.filter((ZA)=>ZA.group==="model"),enabled:$,pickerIdx:UA,color:QA.color,zh:gA},void 0,!1,void 0,this):AA?t.jsxDEV(yW,{group:AA,options:mA,enabled:$,pickerIdx:UA,color:QA.color,zh:gA,pickCounts:g},void 0,!1,void 0,this):t.jsxDEV(t.Fragment,{children:[WA.map((ZA,VA)=>{let qA=J==="projects"&&VA===X;return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:ZA.label},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ZA.hint?t.jsxDEV(R,{dimColor:!0,children:ZA.hint},void 0,!1,void 0,this):null]},VA,!0,void 0,this)}),rA.length>0&&t.jsxDEV(t.Fragment,{children:[t.jsxDEV(_W,{color:QA.color},void 0,!1,void 0,this),rA.map((ZA,VA)=>{let qA=J==="options"&&VA===K;if(ZA.kind==="flag"){let RA=ZA.opt,pA=$.has(RA.id);return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{color:pA?QA.color:void 0,bold:pA,children:pA?"\u25C9":"\u25CB"},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:RA.label[gA?"zh":"en"]||RA.label.en},void 0,!1,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:RA.flag},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:RA.description[gA?"zh":"en"]||RA.description.en},void 0,!1,void 0,this)]},RA.id,!0,void 0,this)}if(ZA.kind==="group"){let RA=i1(mA,$,ZA.group),pA=RA?RA.shortLabel:gA?"\u9ED8\u8BA4":"Default";return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:[ZA.title,":"]},void 0,!0,void 0,this),t.jsxDEV(R,{color:RA?QA.color:void 0,children:pA},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:gA?"Enter \u8FDB\u5165\u9009\u62E9":"Enter to pick"},void 0,!1,void 0,this)]},`group-${ZA.group}`,!0,void 0,this)}return t.jsxDEV(h,{paddingLeft:1,children:[t.jsxDEV(h,{flexGrow:1,gap:1,children:[t.jsxDEV(R,{color:qA?QA.color:void 0,bold:qA,children:qA?"\u25B8":" "},void 0,!1,void 0,this),t.jsxDEV(R,{bold:qA,color:qA?QA.color:void 0,children:[ZA.title,":"]},void 0,!0,void 0,this),t.jsxDEV(R,{color:LA?QA.color:"yellow",children:LA?c:gA?"\u672A\u914D\u7F6E":"Not set"},void 0,!1,void 0,this),t.jsxDEV(R,{color:"yellow",children:"\u2605"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u203A"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qA&&t.jsxDEV(R,{dimColor:!0,children:gA?"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),t.jsxDEV(h,{paddingX:2,marginTop:0,justifyContent:"center",gap:2,children:J==="options"?t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Space"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5F00\u5173":"toggle"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9000\u51FA":"quit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):t.jsxDEV(t.Fragment,{children:[t.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u542F\u52A8":"launch"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"a"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"agent"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u9009\u62E9":"select"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"m"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u6A21\u578B":"model"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u5207\u6362\u5DE5\u5177":"switch tool"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"p"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u670D\u52A1\u5546":"service"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"s"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\u7EDF\u8BA1":"stats"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),t.jsxDEV(R,{dimColor:!0,children:gA?"\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 VW({onResult:B}){let[I,C]=cB.useState(null);if(cB.useEffect(()=>{LW(45).then(C)},[]),!I)return t.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this);return t.jsxDEV(lV,{clients:I.clients,defaultIdx:I.defaultIdx,hasProviders:I.hasProviders,pickCounts:I.pickCounts,onResult:B},void 0,!1,void 0,this)}var lB=YA(HB(),1);WQ();N0();dC();dC();uE();dC();var wA=YA(bB(),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"}},oH={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}},c1=["claude-subscription","codex-subscription","tako","anthropic","deepseek","xiaomi","custom"];function PW({provider:B,focused:I,bound:C,isDefault:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return wA.jsxDEV(h,{flexDirection:"column",borderStyle:I?"bold":"round",borderColor:I?G.color:C?G.color:"gray",paddingX:2,paddingY:0,children:[wA.jsxDEV(h,{justifyContent:"space-between",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:I||C,color:I?G.color:void 0,children:B.name},void 0,!1,void 0,this),g&&wA.jsxDEV(R,{color:"yellow",children:["\u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this),B.builtin&&wA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{gap:1,children:C?wA.jsxDEV(R,{color:G.color,bold:!0,children:["\u25CF ",F?"\u5DF2\u7ED1\u5B9A":"bound"]},void 0,!0,void 0,this):wA.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),wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:H},void 0,!1,void 0,this),B.model&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.model&&wA.jsxDEV(R,{dimColor:!0,children:B.model},void 0,!1,void 0,this),B.email&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.email&&wA.jsxDEV(R,{dimColor:!0,children:B.email},void 0,!1,void 0,this),B.apiKey&&wA.jsxDEV(R,{dimColor:!0,children:"\xB7"},void 0,!1,void 0,this),B.apiKey&&wA.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&&wA.jsxDEV(h,{marginTop:0,children:wA.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 mW({screen:B,addType:I,addKey:C,addUrl:g,addModel:F,addCtx:G,rowIdx:H,zh:u}){let J=ZE[I]||ZE.custom,L=u?w0[I]?.zh:w0[I]?.en,X=B==="add-model"?dF(I):void 0;if(X)return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:J.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,marginBottom:1,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:J.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:J.color,children:L},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",u?"\u9009\u62E9\u6A21\u578B":"Select Model"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X.map((z,$)=>{let d=H===$;return wA.jsxDEV(h,{paddingLeft:1,gap:1,children:[wA.jsxDEV(R,{color:d?J.color:void 0,bold:d,children:d?"\u25B8":" "},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:d,color:d?J.color:void 0,children:z},void 0,!1,void 0,this)]},z,!0,void 0,this)})]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u9009\u62E9":"select"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\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"?u?"\u8F93\u5165 API Key":"Enter API Key":B==="add-url"?"Base URL":B==="add-ctx"?u?"\u4E0A\u4E0B\u6587\u7A97\u53E3\uFF08tokens\uFF0C\u53EF\u7559\u7A7A\uFF09":"Context Window (tokens, optional)":u?"\u6A21\u578B":"Model",K=B==="add-key"?C:B==="add-url"?g:B==="add-ctx"?G??"":F,O=B==="add-url"?"https://your-proxy.com":B==="add-ctx"?u?"\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"?B2(I)||(u?"\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4":"leave empty"):void 0,y=B==="add-url"?u?"\u4E0B\u4E00\u6B65":"next":B==="add-ctx"?u?"\u4FDD\u5B58":"save":B==="add-model"?u?"\u4FDD\u5B58":"save":u?"\u786E\u8BA4":"confirm";return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:J.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,marginBottom:1,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:J.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:J.color,children:L},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:["\u2014 ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B==="add-key"&&I==="xiaomi"&&wA.jsxDEV(R,{dimColor:!0,children:[" ",u?"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),O&&wA.jsxDEV(R,{dimColor:!0,children:[" ",u?"\u9ED8\u8BA4":"Default",": ",O]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:O?1:0,children:[wA.jsxDEV(R,{color:J.color,bold:!0,children:["\u203A"," "]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:K||O||""},void 0,!1,void 0,this),wA.jsxDEV(R,{color:J.color,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:y},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:u?"\u53D6\u6D88":"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function fW({provider:B,defaultId:I,detailActions:C,detailIdx:g,zh:F}){let G=ZE[B.type]||ZE.custom,H=F?w0[B.type]?.zh:w0[B.type]?.en;return wA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[wA.jsxDEV(h,{borderStyle:"bold",borderColor:G.color,paddingX:3,paddingY:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{color:G.color,bold:!0,children:G.icon},void 0,!1,void 0,this),wA.jsxDEV(R,{bold:!0,color:G.color,children:B.name},void 0,!1,void 0,this),B.id===I&&wA.jsxDEV(R,{color:"yellow",children:[" \u2605 ",F?"\u9ED8\u8BA4":"default"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),wA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:[F?"\u7C7B\u578B":"Type",":"]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:H},void 0,!1,void 0,this),B.builtin&&wA.jsxDEV(R,{dimColor:!0,children:"[built-in]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.model&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:[F?"\u6A21\u578B":"Model",":"]},void 0,!0,void 0,this),wA.jsxDEV(R,{children:B.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.email&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"Email:"},void 0,!1,void 0,this),wA.jsxDEV(R,{children:B.email},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.apiKey&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"Key:"},void 0,!1,void 0,this),wA.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&&wA.jsxDEV(h,{gap:1,children:[wA.jsxDEV(R,{dimColor:!0,children:"URL:"},void 0,!1,void 0,this),wA.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),wA.jsxDEV(h,{gap:1,marginTop:1,children:C.map((u,J)=>{let L=u==="default"?`\u2B50 ${F?"\u8BBE\u4E3A\u9ED8\u8BA4":"Set Default"}`:u==="rekey"?`\uD83D\uDD11 ${F?"\u4FEE\u6539 Key":"Change Key"}`:u==="relogin"?`\uD83D\uDD04 ${F?"\u91CD\u65B0\u767B\u5F55":"Re-login"}`:u==="delete"?`\uD83D\uDDD1\uFE0F ${F?"\u5220\u9664":"Delete"}`:`\u2190 ${F?"\u8FD4\u56DE":"Back"}`,X=J===g;return wA.jsxDEV(h,{borderStyle:X?"bold":"round",borderColor:X?"cyan":"gray",paddingX:2,children:wA.jsxDEV(R,{bold:X,color:X?"cyan":void 0,dimColor:!X,children:L},void 0,!1,void 0,this)},u,!1,void 0,this)})},void 0,!1,void 0,this),wA.jsxDEV(h,{marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:2,justifyContent:"center",gap:2,children:[wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2190\u2192"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:F?"\u9009\u62E9":"select"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:F?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),wA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),wA.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(bB(),1);function hW({onDone:B}){let[I,C]=lB.useState("list"),[g,F]=lB.useState([]),[G,H]=lB.useState(),[u,J]=lB.useState({}),[L,X]=lB.useState(0),[q,K]=lB.useState(0),[O,y]=lB.useState(0),[z,$]=lB.useState(""),[d,l]=lB.useState(""),[IA,AA]=lB.useState("tako"),[GA,NA]=lB.useState(""),[KA,JA]=lB.useState(""),[s,UA]=lB.useState(""),[yA,XA]=lB.useState(""),WA=lQ()==="zh",KB=bg(),QA=KB[L],gA=oH[QA?.id]?.color||"white",LA=QA?g.filter((n)=>Q2(n,QA.id)):[],mA=u[QA?.id]||G,rA=LA.length+4,c=g.find((n)=>n.id===z),xA=c?.type==="claude-subscription"||c?.type==="codex-subscription",AB=c?[...c.id!==G?["default"]:[],...xA?["relogin"]:[],...c.builtin?["rekey"]:["delete"],"back"]:["back"],dA=lB.useCallback(async()=>{let n=await yI(),CA=await lI();F(n),H(CA?.id);let i={};for(let FA of bg()){let PA=await AC(FA.id);i[FA.id]=PA?.id}J(i)},[]);lB.useEffect(()=>{dA()},[dA]),lB.useEffect(()=>{K(0)},[L]),lB.useEffect(()=>{if(d){let n=setTimeout(()=>l(""),3000);return()=>clearTimeout(n)}},[d]);let ZA=lB.useCallback(async()=>{if(z&&g.find((OA)=>OA.id===z)?.builtin){await pg(z,{apiKey:GA}),l(WA?"Key \u5DF2\u66F4\u65B0":"Key updated"),await dA(),C("list"),K(0);return}let n=w0[IA]?.[WA?"zh":"en"]||IA,CA=KA||uN(IA),i=s||B2(IA),FA=yA?parseInt(yA,10):NaN,PA=Number.isFinite(FA)&&FA>0?FA:void 0;await xg({name:n,type:IA,apiKey:GA,baseUrl:CA,model:i,modelContextWindow:PA,supportedClients:cI(IA)}),PQ("provider_added",{provider_type:IA,method:"manual"}),QC(),_0(),l(WA?"\u5DF2\u6DFB\u52A0":"Added"),XA(""),await dA(),C("list"),K(0)},[IA,GA,KA,s,yA,WA,dA,z,g]),VA=lB.useCallback(async()=>{C("scanning");let n=await aF(),CA=await oF(n);if(CA>0)QC(),_0();l(WA?`\u626B\u63CF\u5B8C\u6210\uFF0C\u65B0\u589E ${CA} \u4E2A`:`Scan done, ${CA} added`),await dA(),C("list"),K(0)},[dA,WA]),[qA,RA]=lB.useState("claude"),pA=lB.useCallback(async(n)=>{RA(n),C("logging-in");let CA=n==="claude"?["claude","auth","login","--claudeai"]:["codex","login"];await Bun.spawn(CA,{stdin:"inherit",stdout:"pipe",stderr:"pipe"}).exited;let{invalidateQuotaCache:FA}=await Promise.resolve().then(() => (ow(),M7));if(n==="claude")try{let PA=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),OA=await new Response(PA.stdout).text();await PA.exited;let EB=JSON.parse(OA.trim());if(EB.loggedIn&&EB.authMethod==="claude.ai"){let gB=EB.email||"",MB=EB.subscriptionType||"pro",TA=`Claude ${MB.charAt(0).toUpperCase()+MB.slice(1)}${gB?` (${gB})`:""}`,{readClaudeAuth:jB}=await Promise.resolve().then(() => (hw(),fw)),tB=await jB(),KQ=tB.credentials||tB.oauthAccount?{credentials:tB.credentials,oauthAccount:tB.oauthAccount}:void 0,bQ=g.find((jQ)=>jQ.type==="claude-subscription"&&jQ.email===gB);if(!bQ)await xg({name:TA,type:"claude-subscription",email:gB,subscriptionType:MB,supportedClients:cI("claude-subscription"),authData:KQ}),l(WA?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added");else await pg(bQ.id,{authData:KQ}),FA(bQ.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 PA=await import("fs/promises"),{homedir:OA}=await import("os"),{join:EB}=await import("path"),gB=JSON.parse(await PA.readFile(EB(OA(),".codex","auth.json"),"utf-8"));if(gB.auth_mode==="chatgpt"&&gB.tokens?.access_token){let MB="";try{MB=JSON.parse(atob(gB.tokens.id_token.split(".")[1])).email||""}catch{}let TA=g.find((jB)=>jB.type==="codex-subscription"&&jB.email===MB);if(!TA)await xg({name:MB?`Codex Plus (${MB})`:"Codex Subscription",type:"codex-subscription",email:MB||void 0,supportedClients:cI("codex-subscription"),authData:gB}),l(WA?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added");else await pg(TA.id,{authData:gB}),FA(TA.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(yQ(lB.useCallback((n,CA)=>{if(I==="list"){if(CA.escape||n==="q"){B();return}if(CA.leftArrow){X((FA)=>FA>0?FA-1:KB.length-1);return}if(CA.rightArrow){X((FA)=>FA<KB.length-1?FA+1:0);return}let i=parseInt(n);if(i>=1&&i<=KB.length){X(i-1);return}if(CA.upArrow){K((FA)=>FA>0?FA-1:rA-1);return}if(CA.downArrow){K((FA)=>FA<rA-1?FA+1:0);return}if(CA.return){if(q<LA.length){let FA=LA[q];lF(QA.id,FA.id).then(()=>{B()})}else if(q===LA.length)C("add-type"),K(0);else if(q===LA.length+1)VA();else if(q===LA.length+2)B("client-versions");else B();return}if((n==="d"||n==="e")&&q<LA.length)$(LA[q].id),C("detail"),y(0);return}if(I==="detail"){if(CA.leftArrow){y((i)=>i>0?i-1:AB.length-1);return}if(CA.rightArrow){y((i)=>i<AB.length-1?i+1:0);return}if(CA.escape){C("list"),K(0);return}if(CA.return){let i=AB[O];if(i==="back"){C("list"),K(0);return}if(i==="default")ZN(z).then(()=>{l(WA?"\u5DF2\u8BBE\u4E3A\u9ED8\u8BA4":"Set as default"),dA(),C("list"),K(0)});if(i==="delete")WN(z).then(()=>{l(WA?"\u5DF2\u5220\u9664":"Deleted"),dA(),C("list"),K(0)});if(i==="rekey")AA(c?.type||"tako"),NA(""),C("add-key"),K(0);if(i==="relogin"){let FA=c?.type==="codex-subscription"?"codex":"claude";C("list"),K(0),pA(FA)}}return}if(I==="add-type"){if(CA.upArrow){K((i)=>i>0?i-1:c1.length-1);return}if(CA.downArrow){K((i)=>i<c1.length-1?i+1:0);return}if(CA.escape){C("list"),K(0);return}if(CA.return){let i=c1[q];if(AA(i),i==="claude-subscription"){pA("claude");return}if(i==="codex-subscription"){pA("codex");return}NA(""),JA(""),UA(B2(i)||""),C("add-key"),K(0)}return}if(I==="add-key"){if(CA.escape){C("list"),K(0);return}if(CA.return&&GA){if(IA==="custom")C("add-url");else if(IA==="deepseek"||IA==="anthropic"||IA==="tako"||IA==="xiaomi")C("add-model"),K(0);else ZA();return}if(CA.backspace||CA.delete){NA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl)NA((i)=>i+n);return}if(I==="add-url"){if(CA.escape){C("list"),K(0);return}if(CA.return){C("add-model"),K(0);return}if(CA.backspace||CA.delete){JA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl)JA((i)=>i+n);return}if(I==="add-model"){let i=dF(IA);if(CA.escape){C("list"),K(0);return}if(i){if(CA.upArrow){K((FA)=>FA>0?FA-1:i.length-1);return}if(CA.downArrow){K((FA)=>FA<i.length-1?FA+1:0);return}if(CA.return){UA(i[q]),setTimeout(()=>ZA(),0);return}}else{if(CA.return){let FA=s.trim();if(FA&&SI.some((PA)=>PA.id===FA))ZA();else C("add-ctx");return}if(CA.backspace||CA.delete){UA((FA)=>FA.slice(0,-1));return}if(n&&!CA.ctrl)UA((FA)=>FA+n)}return}if(I==="add-ctx"){if(CA.escape){C("list"),K(0);return}if(CA.return){ZA();return}if(CA.backspace||CA.delete){XA((i)=>i.slice(0,-1));return}if(n&&!CA.ctrl&&/^[0-9]$/.test(n))XA((i)=>i+n);return}},[I,q,O,LA,rA,KB.length,QA,z,c,AB,IA,GA,KA,s,yA,B,VA,pA,ZA,dA,WA])),I==="scanning"||I==="logging-in"){let n=I==="logging-in"?ZE[qA==="claude"?"claude-subscription":"codex-subscription"]:{icon:"\u23F3",color:"yellow"},CA=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:n.color,paddingX:3,paddingY:1,flexDirection:"column",alignItems:"center",children:[jA.jsxDEV(R,{color:n.color,bold:!0,children:[n.icon," ",CA]},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(mW,{screen:I,addType:IA,addKey:GA,addUrl:KA,addModel:s,addCtx:yA,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:c1.map((n,CA)=>{let i=ZE[n]||ZE.custom,FA=q===CA,PA=WA?w0[n]?.zh:w0[n]?.en,OA=n==="claude-subscription"||n==="codex-subscription";return jA.jsxDEV(h,{borderStyle:FA?"bold":"round",borderColor:FA?i.color:"gray",paddingX:2,paddingY:0,children:jA.jsxDEV(h,{gap:1,children:[jA.jsxDEV(R,{color:i.color,bold:!0,children:i.icon},void 0,!1,void 0,this),jA.jsxDEV(R,{bold:FA,color:FA?i.color:void 0,children:PA},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)},n,!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"&&c)return jA.jsxDEV(fW,{provider:c,defaultId:G,detailActions:AB,detailIdx:O,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),d&&jA.jsxDEV(R,{color:"green",children:[" \u2713 ",d]},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),KB.map((n,CA)=>{let i=oH[n.id]||{icon:"\u25AA",color:"white"},FA=CA===L;return jA.jsxDEV(h,{borderStyle:FA?"bold":"single",borderColor:FA?i.color:"gray",paddingX:2,children:jA.jsxDEV(R,{color:FA?i.color:void 0,bold:FA,dimColor:!FA,children:[i.icon," ",n.name]},void 0,!0,void 0,this)},n.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:gA,paddingX:1,paddingY:1,children:[LA.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),LA.map((n,CA)=>jA.jsxDEV(PW,{provider:n,focused:q===CA,bound:n.id===mA,isDefault:n.id===G,zh:WA},n.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((n)=>{let CA=q===LA.length+n.offset;return jA.jsxDEV(h,{borderStyle:CA?"bold":"round",borderColor:CA?"cyan":"gray",paddingX:2,children:jA.jsxDEV(R,{bold:CA,color:CA?"cyan":void 0,dimColor:!CA,children:[n.icon," ",n.label]},void 0,!0,void 0,this)},n.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(HB(),1);WQ();iB();async function bW(){try{let B=await hg();if(!B)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let C=await(await fetch(`${eQ}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:B})})).json(),F=await(await fetch(`${eQ}/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 jW(B){return B.toLocaleString("en-US")}var vI=YA(bB(),1);function xW({onExit:B}){let[I,C]=DC.useState(null),[g,F]=DC.useState(!0),[G,H]=DC.useState(10),u=DC.useCallback(async()=>{F(!0);let L=await bW();if(L.success&&L.data)C(L.data);F(!1)},[]);DC.useEffect(()=>{u()},[u]),DC.useEffect(()=>{let L=setInterval(()=>{H((X)=>{if(X<=1)return u(),10;return X-1})},1000);return()=>clearInterval(L)},[u]),yQ((L,X)=>{if(L==="q"||X.escape)B()});let J=lQ()==="zh";return vI.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:2,paddingY:1,children:[vI.jsxDEV(R,{bold:!0,children:bA("stats.title")},void 0,!1,void 0,this),g&&!I?vI.jsxDEV(R,{dimColor:!0,children:"Loading..."},void 0,!1,void 0,this):I?vI.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[vI.jsxDEV(R,{children:bA("stats.totalRequests",{count:jW(I.totalRequests)})},void 0,!1,void 0,this),vI.jsxDEV(R,{children:bA("stats.totalCost",{cost:I.totalCost})},void 0,!1,void 0,this),vI.jsxDEV(R,{children:bA("stats.todayCost",{cost:I.todayCost})},void 0,!1,void 0,this),I.modelStats.length>0&&vI.jsxDEV(h,{flexDirection:"column",marginTop:1,children:[vI.jsxDEV(R,{bold:!0,dimColor:!0,children:J?"\u6A21\u578B\u5206\u5E03":"Model Distribution"},void 0,!1,void 0,this),I.modelStats.map((L,X)=>vI.jsxDEV(R,{dimColor:!0,children:[X===I.modelStats.length-1?"\u2514\u2500":"\u251C\u2500"," ",L.model.padEnd(25)," ",String(L.requests).padStart(5)," ",L.cost]},L.model,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):vI.jsxDEV(R,{color:"red",children:J?"\u83B7\u53D6\u5931\u8D25":"Failed to load"},void 0,!1,void 0,this),vI.jsxDEV(h,{marginTop:1,children:vI.jsxDEV(R,{dimColor:!0,children:J?`${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 tC=YA(HB(),1);WQ();iB();WQ();uE();N0();dC();function aV(B){return B.startsWith("cr_")&&B.length>10}async function oV(B){try{let C=await(await fetch(`${eQ}/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 pW(B){if(!aV(B))return PQ("api_key_validated",{success:!1,error_type:"invalid_format"}),{success:!1,error:bA("auth.invalidFormat")};let I=await oV(B);if(!I.valid)return PQ("api_key_validated",{success:!1,error_type:"api_validation_failed"}),{success:!1,error:I.error};return await fg({apiKey:B,apiId:I.apiId}),await nV(B,I.apiId),PQ("api_key_validated",{success:!0}),QC(),_0(),{success:!0}}async function nV(B,I){let g=(await yI()).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:eQ,apiId:I,supportedClients:cI("tako"),builtin:!0})}uE();var J0=YA(bB(),1);function iW({isReconfigure:B,onDone:I}){let[C,g]=tC.useState(""),[F,G]=tC.useState("idle"),[H,u]=tC.useState(""),{stdin:J,setRawMode:L}=_2();tC.useEffect(()=>{if(!J)return;L(!0);let O=(y)=>{let z=y.toString();if(z.length>1&&!z.startsWith("\x1B"))g(($)=>$+z.replace(/[\r\n]/g,""))};return J.on("data",O),()=>{J.off("data",O)}},[J,L]);let X=tC.useCallback(async()=>{if(!C||F==="validating")return;G("validating");let O=await pW(C);if(O.success)G("success"),QC(),_0(),setTimeout(()=>I(!0),500);else G("error"),u(O.error||"Validation failed")},[C,F,I]);yQ((O,y)=>{if(y.escape){I(!1);return}if(y.return){X();return}if(y.backspace||y.delete){g((z)=>z.slice(0,-1)),G("idle");return}if(O&&!y.ctrl&&O.length===1)g((z)=>z+O),G("idle")});let q=C.length<=6?C:`${C.slice(0,3)}${"\u2022".repeat(Math.min(C.length-6,20))}${C.slice(-3)}`,K=lQ()==="zh";return J0.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[J0.jsxDEV(R,{bold:!0,color:"cyan",children:["\uD83D\uDD11 ",B?bA("prompts.enterApiKey"):"API Key"]},void 0,!0,void 0,this),J0.jsxDEV(h,{marginTop:1,children:[J0.jsxDEV(R,{color:"cyan",bold:!0,children:[">"," "]},void 0,!0,void 0,this),J0.jsxDEV(R,{children:q},void 0,!1,void 0,this),F==="idle"&&J0.jsxDEV(R,{color:"cyan",children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F==="validating"&&J0.jsxDEV(R,{color:"yellow",children:["\u23F3 ",bA("prompts.validating")]},void 0,!0,void 0,this),F==="success"&&J0.jsxDEV(R,{color:"green",children:["\u2713 ",bA("prompts.keyConfigured")]},void 0,!0,void 0,this),F==="error"&&J0.jsxDEV(R,{color:"red",children:["\u2717 ",H]},void 0,!0,void 0,this),J0.jsxDEV(h,{marginTop:1,children:J0.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 dW=YA(HB(),1);WQ();var FC=YA(bB(),1),l1=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}];function cW({onDone:B}){let[I,C]=dW.useState(l1.findIndex((g)=>g.value===lQ()));return yQ((g,F)=>{if(F.upArrow)C((G)=>G>0?G-1:l1.length-1);if(F.downArrow)C((G)=>G<l1.length-1?G+1:0);if(F.return)KN(l1[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),l1.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===lQ()&&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 u4=YA(HB(),1);iB();iB();WQ();var GQ=YA(bB(),1);import{join as rV}from"path";var aW=rV(nB,".key-prompt.json");async function sV(){try{return await Bun.file(aW).json()}catch{return{}}}async function lW(B){await Bun.write(aW,JSON.stringify(B))}async function oW(){if(await o6())return!1;let B=await sV();if(B.never)return!1;let I=new Date().toISOString().slice(0,10);if(B.dismissed===I)return!1;return!0}async function nW(B){if(B==="never")await lW({never:!0});else{let I=new Date().toISOString().slice(0,10);await lW({dismissed:I})}}var H4=[{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 rW({onDone:B}){let[I,C]=u4.useState(0),g=lQ()==="zh";return yQ(u4.useCallback((F,G)=>{if(G.upArrow){C((H)=>H>0?H-1:H4.length-1);return}if(G.downArrow){C((H)=>H<H4.length-1?H+1:0);return}if(G.escape){B("skip");return}if(G.return){B(H4[I].id);return}},[I,B])),GQ.jsxDEV(h,{flexDirection:"column",paddingX:0,paddingY:1,children:[GQ.jsxDEV(h,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1,children:[GQ.jsxDEV(h,{gap:1,children:[GQ.jsxDEV(R,{color:"cyan",bold:!0,children:"\uD83D\uDD11"},void 0,!1,void 0,this),GQ.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),GQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[GQ.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),GQ.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),GQ.jsxDEV(h,{marginTop:1,flexDirection:"column",children:H4.map((F,G)=>{let H=G===I;return GQ.jsxDEV(h,{paddingLeft:1,gap:1,children:[GQ.jsxDEV(R,{color:H?F.color||"white":void 0,bold:H,children:H?"\u25B8":" "},void 0,!1,void 0,this),GQ.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&&GQ.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),GQ.jsxDEV(h,{paddingX:2,marginTop:1,justifyContent:"center",gap:2,children:[GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:g?"\u9009\u62E9":"select"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:g?"\u786E\u8BA4":"confirm"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),GQ.jsxDEV(R,{dimColor:!0,bold:!0,children:"Esc"},void 0,!1,void 0,this),GQ.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 _I=YA(HB(),1);WQ();var $B=YA(bB(),1),nH=12,sW={"claude-code":{icon:"\u2726",color:"yellow"},codex:{icon:"\u25C8",color:"blue"},gemini:{icon:"\u25C6",color:"cyan"}};function tW({onDone:B}){let I=bg(),C=lQ()==="zh",[g,F]=_I.useState(0),[G,H]=_I.useState(0),[u,J]=_I.useState(0),[L,X]=_I.useState({}),[q,K]=_I.useState(null),[O,y]=_I.useState(""),z=I[g],$=_I.useCallback(async(NA)=>{X((JA)=>({...JA,[NA]:{loading:!0,versions:[],current:null}}));let KA=I.find((JA)=>JA.id===NA);if(!KA)return;try{let[JA,s]=await Promise.all([ew(KA.package),B3(KA)]),UA=JA.map((yA)=>({...yA,isCurrent:yA.version===s}));X((yA)=>({...yA,[NA]:{loading:!1,versions:UA,current:s}}))}catch(JA){X((s)=>({...s,[NA]:{loading:!1,error:JA.message,versions:[],current:null}}))}},[I]);_I.useEffect(()=>{if(!z)return;if(!L[z.id])$(z.id)},[g,z?.id]),_I.useEffect(()=>{H(0),J(0)},[g]),_I.useEffect(()=>{if(!O)return;let NA=setTimeout(()=>y(""),3000);return()=>clearTimeout(NA)},[O]);let d=z?L[z.id]:void 0,l=d?.versions??[],IA=_I.useCallback(async(NA)=>{if(!z||q)return;K(NA);try{await A3(z,NA),y(C?`\u2713 \u5DF2\u5207\u6362\u5230 ${NA}`:`\u2713 Switched to ${NA}`),await $(z.id)}catch(KA){y(C?`\u2717 \u5B89\u88C5\u5931\u8D25\uFF1A${KA.message}`:`\u2717 Install failed: ${KA.message}`)}finally{K(null)}},[z,q,$,C]);yQ((NA,KA)=>{if(q)return;if(KA.escape||NA==="q"){B();return}if(KA.leftArrow){F((s)=>s>0?s-1:I.length-1);return}if(KA.rightArrow){F((s)=>s<I.length-1?s+1:0);return}if(NA==="r"){if(z)$(z.id);return}if(!l.length)return;let JA=l.length-1;if(KA.upArrow){H((s)=>{let UA=Math.max(0,s-1);if(UA<u)J(UA);return UA});return}if(KA.downArrow){H((s)=>{let UA=Math.min(JA,s+1);if(UA>=u+nH)J(UA-nH+1);return UA});return}if(KA.return){let s=l[G];if(s&&!s.isCurrent)IA(s.version)}});let AA=sW[z?.id]?.color||"white",GA=l.slice(u,u+nH);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),O&&$B.jsxDEV(R,{color:O.startsWith("\u2713")?"green":"red",children:[" ",O]},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,KA)=>{let JA=sW[NA.id]||{icon:"\u25AA",color:"white"},s=KA===g;return $B.jsxDEV(h,{borderStyle:s?"bold":"single",borderColor:s?JA.color:"gray",paddingX:2,children:$B.jsxDEV(R,{bold:s,color:s?JA.color:void 0,dimColor:!s,children:[JA.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:AA,paddingX:2,paddingY:1,children:!d||d.loading?$B.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"Loading..."},void 0,!1,void 0,this):d.error?$B.jsxDEV(R,{color:"red",children:[C?"\u52A0\u8F7D\u5931\u8D25\uFF1A":"Failed: ",d.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:AA,children:d.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:GA.map((NA,KA)=>{let s=u+KA===G,UA=NA.publishedAt?NA.publishedAt.slice(0,10):"",yA=NA.isCurrent?C?" \u2605 \u5F53\u524D":" \u2605 current":"",XA=q===NA.version,WA=s?AA:NA.isCurrent?"green":void 0;return $B.jsxDEV(h,{paddingLeft:1,children:$B.jsxDEV(R,{color:WA,bold:s,dimColor:!s&&!NA.isCurrent,children:[s?"\u25B6 ":" ",NA.version.padEnd(16),UA.padEnd(14),yA,XA?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 hQ=YA(HB(),1);WQ();J3();var BI=YA(HB(),1);WQ();J3();lg();var XB=YA(bB(),1),eW=300,AZ=200;function tV(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 BZ({sid:B,onBack:I}){let C=G0()==="zh",[g,F]=BI.useState(null),[G,H]=BI.useState([]),[u,J]=BI.useState(""),[L,X]=BI.useState("idle"),[q,K]=BI.useState(null),[O,y]=BI.useState([]),z=BI.useRef(0),$=BI.useCallback(async()=>{let AA=await H2(B,AZ);if(!AA)return;F(AA.meta),H(AA.log);try{let NA=await(await import("fs/promises")).stat(aQ(B));z.current=NA.size}catch{z.current=0}},[B]);BI.useEffect(()=>{$()},[$]),BI.useEffect(()=>{let AA=!1,GA=null,NA=async()=>{if(AA)return;try{let KA=await import("fs/promises"),JA=await KA.stat(aQ(B));if(JA.size>z.current){let s=await KA.open(aQ(B),"r"),UA=Buffer.alloc(JA.size-z.current);await s.read(UA,0,UA.length,z.current),await s.close(),z.current=JA.size;let yA=[];for(let XA of UA.toString("utf-8").split(`
830
830
  `)){if(!XA.trim())continue;try{yA.push(JSON.parse(XA))}catch{}}if(yA.length)H((XA)=>[...XA,...yA].slice(-AZ))}if(Math.random()<0.1){let s=await H2(B,0);if(s)F(s.meta)}y(await g1(B))}catch{}GA=setTimeout(NA,eW)};return GA=setTimeout(NA,eW),()=>{if(AA=!0,GA)clearTimeout(GA)}},[B]);let d=BI.useCallback(async()=>{if(L!=="idle"||!u.trim())return;let AA=u;J(""),K(null),X("sending");try{await w1(B,AA)}catch(GA){K(GA instanceof Error?GA.message:String(GA))}finally{X("idle");let GA=await H2(B,0);if(GA)F(GA.meta)}},[B,u,L]),l=BI.useCallback(async()=>{if(L!=="sending")return I();X("cancelling"),await G1(B).catch(()=>{})},[L,B,I]),IA=BI.useCallback(async(AA)=>{let GA=O[0];if(!GA)return;await C3(B,GA.approvalId,{decision:AA?"allow":"deny",by:"tui",decidedAt:Date.now()}),y((NA)=>NA.filter((KA)=>KA.approvalId!==GA.approvalId))},[O,B]);if(yQ((AA,GA)=>{if(GA.ctrl&&AA==="y"){IA(!0);return}if(GA.ctrl&&AA==="n"){IA(!1);return}if(GA.escape){l();return}if(GA.ctrl&&AA==="c"){l();return}if(GA.ctrl&&AA==="d"){I();return}if(GA.return){d();return}if(GA.backspace||GA.delete){J((NA)=>NA.slice(0,-1));return}if(u.length===0&&AA==="q"){I();return}if(AA&&!GA.ctrl&&AA.length===1)J((NA)=>NA+AA)}),!g)return XB.jsxDEV(h,{paddingX:2,paddingY:1,children:XB.jsxDEV(R,{dimColor:!0,children:C?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return XB.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[XB.jsxDEV(h,{children:[XB.jsxDEV(R,{bold:!0,children:"Session "},void 0,!1,void 0,this),XB.jsxDEV(R,{color:"cyan",children:g.sid.slice(0,8)},void 0,!1,void 0,this),XB.jsxDEV(R,{children:" "},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,children:g.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),XB.jsxDEV(h,{children:XB.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),XB.jsxDEV(h,{children:XB.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),O.length>0&&XB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"magenta",paddingX:1,children:[XB.jsxDEV(R,{color:"magenta",bold:!0,children:["\u26A0 ",O.length," ",C?"\u4E2A\u5F85\u5BA1\u6279":"pending"," \u2014 ",XB.jsxDEV(R,{bold:!0,children:"Ctrl-Y"},void 0,!1,void 0,this)," ",C?"\u6279\u51C6":"allow"," / ",XB.jsxDEV(R,{bold:!0,children:"Ctrl-N"},void 0,!1,void 0,this)," ",C?"\u62D2\u7EDD":"deny"]},void 0,!0,void 0,this),O.slice(0,3).map((AA,GA)=>XB.jsxDEV(R,{color:GA===0?"magenta":void 0,dimColor:GA!==0,children:[GA===0?"\u25B6 ":" ","[",AA.approvalType,"] ",AA.approvalId.slice(0,12)]},AA.approvalId,!0,void 0,this))]},void 0,!0,void 0,this),XB.jsxDEV(h,{marginTop:1,flexDirection:"column",borderStyle:"round",borderColor:"gray",paddingX:1,children:G.length===0?XB.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((AA,GA)=>{let NA=tV(AA);return XB.jsxDEV(R,{color:NA.color,dimColor:NA.dim,children:NA.text||" "},GA,!1,void 0,this)})},void 0,!1,void 0,this),q&&XB.jsxDEV(h,{marginTop:1,children:XB.jsxDEV(R,{color:"red",children:["\u2717 ",q]},void 0,!0,void 0,this)},void 0,!1,void 0,this),XB.jsxDEV(h,{marginTop:1,children:[XB.jsxDEV(R,{color:"cyan",bold:!0,children:L==="sending"?"\u23F3 ":L==="cancelling"?"\u270B ":"\u25B6 "},void 0,!1,void 0,this),XB.jsxDEV(R,{children:u},void 0,!1,void 0,this),L==="idle"&&XB.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this),L==="sending"&&XB.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),XB.jsxDEV(h,{marginTop:1,gap:2,children:[XB.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,children:C?"\u53D1\u9001":"send"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,bold:!0,children:"^Y/^N"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,children:C?"\u6279/\u62D2":"allow/deny"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),XB.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),XB.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 SA=YA(bB(),1);function QZ(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 eV(B){switch(B){case"running":return"yellow";case"idle":return"green";case"closed":return"gray";case"dead":return"red";default:return"white"}}function IZ({onDone:B}){let I=G0()==="zh",[C,g]=hQ.useState(null),[F,G]=hQ.useState({}),[H,u]=hQ.useState(0),[J,L]=hQ.useState(null),[X,q]=hQ.useState(0),[K,O]=hQ.useState({kind:"list"}),y=hQ.useCallback(async()=>{let[z,$]=await Promise.all([N3(),M3()]);g(z),G($),u((d)=>Math.max(0,Math.min(d,z.length-1)))},[]);if(hQ.useEffect(()=>{y()},[y,X]),hQ.useEffect(()=>{let z=setInterval(()=>q(($)=>$+1),5000);return()=>clearInterval(z)},[]),yQ((z,$)=>{if(J)return;if(K.kind!=="list")return;if($.escape||z==="q"){B();return}if(z==="n"){O({kind:"new",backend:"claude",model:"",name:"",field:"backend"});return}if(!C||C.length===0){if(z==="r")q((l)=>l+1);return}if($.upArrow||z==="k"){u((l)=>Math.max(0,l-1));return}if($.downArrow||z==="j"){u((l)=>Math.min(C.length-1,l+1));return}if(z==="r"){q((l)=>l+1);return}if(z==="p"){L(I?"\u6E05\u7406\u4E2D...":"purging..."),u3().then(()=>{L(null),y()});return}let d=C[H];if(!d)return;if($.return||z==="o"){O({kind:"detail",sid:d.sid});return}if(z==="d"){L(`closing ${d.sid.slice(0,8)}...`),ag(d.sid,!1).then(()=>{L(null),y()});return}if(z==="x"){L(`purging ${d.sid.slice(0,8)}...`),ag(d.sid,!0).then(()=>{L(null),y()});return}}),K.kind==="detail")return SA.jsxDEV(BZ,{sid:K.sid,onBack:()=>{O({kind:"list"}),y()}},void 0,!1,void 0,this);if(K.kind==="new")return SA.jsxDEV(AP,{initial:K,onCancel:()=>O({kind:"list"}),onCreated:(z)=>{O({kind:"detail",sid:z})}},void 0,!1,void 0,this);if(!C)return SA.jsxDEV(h,{paddingX:2,paddingY:1,children:SA.jsxDEV(R,{dimColor:!0,children:I?"\u52A0\u8F7D\u4E2D...":"loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this);return SA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[SA.jsxDEV(R,{bold:!0,children:I?"Agent \u4F1A\u8BDD\u7BA1\u7406":"Agent Sessions"},void 0,!1,void 0,this),SA.jsxDEV(h,{marginTop:1,children:SA.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(([z,$])=>`${z}=${$.slice(0,8)}`).join(" \u2502 ")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),C.length===0?SA.jsxDEV(h,{marginTop:2,flexDirection:"column",children:SA.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):SA.jsxDEV(h,{marginTop:1,flexDirection:"column",children:[SA.jsxDEV(h,{children:SA.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((z,$)=>{let d=$===H;return SA.jsxDEV(h,{children:[SA.jsxDEV(R,{color:d?"cyan":void 0,inverse:d,children:d?"\u25B6 ":" "},void 0,!1,void 0,this),SA.jsxDEV(R,{color:d?"cyan":void 0,children:z.sid.slice(0,8).padEnd(10)},void 0,!1,void 0,this),SA.jsxDEV(R,{children:z.backend.padEnd(9)},void 0,!1,void 0,this),SA.jsxDEV(R,{children:(z.name??"").slice(0,18).padEnd(20)},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:(z.model??"-").slice(0,20).padEnd(22)},void 0,!1,void 0,this),SA.jsxDEV(R,{color:eV(z.status),children:z.status.padEnd(9)},void 0,!1,void 0,this),SA.jsxDEV(R,{children:String(z.turnCount).padEnd(7)},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:QZ(Date.now()-z.createdAt).padEnd(6)},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:QZ(Date.now()-z.lastActiveAt)},void 0,!1,void 0,this)]},z.sid,!0,void 0,this)})]},void 0,!0,void 0,this),J&&SA.jsxDEV(h,{marginTop:1,children:SA.jsxDEV(R,{color:"yellow",children:["\u23F3 ",J]},void 0,!0,void 0,this)},void 0,!1,void 0,this),SA.jsxDEV(h,{marginTop:2,gap:2,children:[SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"\u2191\u2193"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u9009\u62E9":"select"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u8FDB\u5165":"open"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"n"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u65B0\u5EFA":"new"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"d"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u5173\u95ED":"close"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"x"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u5220\u9664":"purge"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"r"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:I?"\u5237\u65B0":"refresh"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"q"},void 0,!1,void 0,this),SA.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 AP({initial:B,onCancel:I,onCreated:C}){let g=G0()==="zh",[F,G]=hQ.useState(B.backend),[H,u]=hQ.useState(B.model),[J,L]=hQ.useState(B.name),[X,q]=hQ.useState(B.field),[K,O]=hQ.useState(!1),[y,z]=hQ.useState(null),$=hQ.useCallback(async()=>{if(K)return;O(!0),z(null);try{let d=await F1({backend:F,model:H.trim()||void 0,name:J.trim()||void 0});C(d.sid)}catch(d){z(d instanceof Error?d.message:String(d)),O(!1)}},[F,H,J,K,C]);return yQ((d,l)=>{if(K)return;if(l.escape){I();return}if(l.tab||l.downArrow){q((IA)=>IA==="backend"?"model":IA==="model"?"name":"backend");return}if(l.upArrow){q((IA)=>IA==="backend"?"name":IA==="model"?"backend":"model");return}if(X==="backend"){if(l.leftArrow||l.rightArrow||d===" "){G((IA)=>IA==="claude"?"codex":"claude");return}if(l.return){$();return}return}if(X==="model"){if(l.return){q("name");return}if(l.backspace||l.delete){u((IA)=>IA.slice(0,-1));return}if(d&&!l.ctrl&&d.length===1)u((IA)=>IA+d);return}if(X==="name"){if(l.return){$();return}if(l.backspace||l.delete){L((IA)=>IA.slice(0,-1));return}if(d&&!l.ctrl&&d.length===1)L((IA)=>IA+d)}}),SA.jsxDEV(h,{flexDirection:"column",paddingX:2,paddingY:1,children:[SA.jsxDEV(R,{bold:!0,children:g?"\u65B0\u5EFA Agent Session":"New agent session"},void 0,!1,void 0,this),SA.jsxDEV(h,{marginTop:1,children:SA.jsxDEV(R,{color:X==="backend"?"cyan":void 0,bold:X==="backend",children:[X==="backend"?"\u25B6 ":" ",g?"\u540E\u7AEF":"backend",": ",F==="claude"?"\u25CF claude \u25CB codex":"\u25CB claude \u25CF codex"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),SA.jsxDEV(h,{children:SA.jsxDEV(R,{color:X==="model"?"cyan":void 0,bold:X==="model",children:[X==="model"?"\u25B6 ":" ",g?"\u6A21\u578B":"model",": ",H||(g?"\uFF08\u7559\u7A7A\u8D70\u9ED8\u8BA4\uFF09":"(default)"),X==="model"&&SA.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),SA.jsxDEV(h,{children:SA.jsxDEV(R,{color:X==="name"?"cyan":void 0,bold:X==="name",children:[X==="name"?"\u25B6 ":" ",g?"\u540D\u5B57":"name",": ",J||(g?"\uFF08\u7559\u7A7A\u81EA\u52A8\uFF09":"(auto)"),X==="name"&&SA.jsxDEV(R,{inverse:!0,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),y&&SA.jsxDEV(h,{marginTop:1,children:SA.jsxDEV(R,{color:"red",children:["\u2717 ",y]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&SA.jsxDEV(h,{marginTop:1,children:SA.jsxDEV(R,{color:"yellow",children:["\u23F3 ",g?"\u521B\u5EFA\u4E2D...":"creating..."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),SA.jsxDEV(h,{marginTop:1,gap:2,children:[SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Tab/\u2191\u2193"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:g?"\u5207\u5B57\u6BB5":"switch"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"Enter"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:g?"\u521B\u5EFA":"create"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,children:"\u2502"},void 0,!1,void 0,this),SA.jsxDEV(R,{dimColor:!0,bold:!0,children:"ESC"},void 0,!1,void 0,this),SA.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)}tE();var nI=YA(bB(),1);function BP({onLaunch:B,onExit:I,initialView:C="launcher"}){let[g,F]=U0.useState(C),[G,H]=U0.useState([]),u=U0.useRef(null),J=U0.useRef(!1);U0.useEffect(()=>{if(J.current||C!=="launcher")return;J.current=!0,oW().then((y)=>{if(y)F("key-guide")})},[C]);let L=U0.useCallback((y)=>{if(H((z)=>[...z.slice(-4),y]),u.current)clearTimeout(u.current);u.current=setTimeout(()=>H([]),5000)},[]);U0.useEffect(()=>{let y=0;return LN({info:(z)=>L({text:z,type:"info"}),warn:(z)=>L({text:z,type:"warn"}),error:(z)=>L({text:z,type:"error"}),success:(z)=>L({text:z,type:"success"}),spin:(z)=>{let $=++y;return L({id:$,text:z,type:"spin"}),{stop:(d)=>{if(H((l)=>{let IA=l.filter((AA)=>AA.id!==$);if(d)IA.push({text:d,type:"success"});return IA.slice(-5)}),u.current)clearTimeout(u.current);u.current=setTimeout(()=>H([]),5000)},update:(d)=>{if(H((l)=>l.map((IA)=>IA.id===$?{...IA,text:d}:IA)),u.current)clearTimeout(u.current);u.current=setTimeout(()=>H([]),5000)}}}}),()=>cF()},[L]);let X=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"},O=(()=>{switch(g){case"launcher":return nI.jsxDEV(VW,{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 nI.jsxDEV(hW,{onDone:(y)=>{if(y==="client-versions")F("client-versions");else X()}},void 0,!1,void 0,this);case"agents":return nI.jsxDEV(IZ,{onDone:X},void 0,!1,void 0,this);case"client-versions":return nI.jsxDEV(tW,{onDone:()=>F("providers")},void 0,!1,void 0,this);case"stats":return nI.jsxDEV(xW,{onExit:X},void 0,!1,void 0,this);case"config":return nI.jsxDEV(iW,{isReconfigure:!0,onDone:X},void 0,!1,void 0,this);case"language":return nI.jsxDEV(cW,{onDone:X},void 0,!1,void 0,this);case"key-guide":return nI.jsxDEV(rW,{onDone:(y)=>{if(y==="configure")F("config");else nW(y).then(()=>F("launcher"))}},void 0,!1,void 0,this)}})();return nI.jsxDEV(h,{flexDirection:"column",children:[G.length>0&&nI.jsxDEV(h,{flexDirection:"column",paddingX:2,children:G.map((y,z)=>nI.jsxDEV(R,{color:q[y.type],dimColor:y.type==="info",children:[K[y.type]," ",y.text]},z,!0,void 0,this))},void 0,!1,void 0,this),O]},void 0,!0,void 0,this)}function rH(){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(),cF(),B(G)}function F(){I?.clear(),I?.unmount(),I=null,C(),cF(),B(null)}I=jH(nI.jsxDEV(BP,{onLaunch:g,onExit:F},void 0,!1,void 0,this))})}ZI();WQ();uE();tE();N0();iB();N0();var QP=2000,EZ=100;function XE(B){if(hF||process.env.TAKO_DEBUG==="1")process.stderr.write(`[announcements] ${B}
831
831
  `)}function CZ(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 IP(B,I){let C=`${B}/v1/announcements/popup`;try{let g=await fetch(C,{headers:{Authorization:`Bearer ${I}`},signal:AbortSignal.timeout(QP)});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 EP(B){return((await QB()).seenAnnouncementIds??[]).includes(B)}async function CP(B){let I=await QB(),C=I.seenAnnouncementIds??[];if(C.includes(B))return;let g=[...C,B];if(g.length>EZ)g.splice(0,g.length-EZ);I.seenAnnouncementIds=g,await WI(I)}async function gP(){let B=CZ(await lI());if(B)return B;for(let I of await yI()){let C=CZ(I);if(C)return C}return null}async function gZ(){let B=await gP();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 IP(B.baseUrl,B.apiKey);if(!I)return;if(I.popup_once&&await EP(I.id)){XE(`\u5DF2\u5728 seenAnnouncementIds\uFF0C\u8DF3\u8FC7\uFF1A${I.id}`);return}if(XE(`\u5F39\u7A97\uFF1A${I.id}`),await hL(I),I.popup_once)await CP(I.id),XE(`\u6807\u8BB0\u5DF2\u770B\u8FC7\uFF1A${I.id}`)}async function DZ(){await XN(),await qN(),await L7(),await Promise.race([FN(await yI()),new Promise((B)=>setTimeout(B,3000))]),await gZ()}async function FZ(B){let I=dI(B.clientId);if(!I)return!1;PQ("menu_action",{action:"launch",client_id:B.clientId});let C=await rw(B.clientId);if(!C)return lA.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 dw(I,{projectPath:B.projectPath,args:B.args,envVars:B.envVars,selectedOptionIds:B.selectedOptionIds,providerContext:C,relaunchTakoOnWindows:F});if(!G.success)return lA.error(G.error||bA("cli.launchFailed")),!1;if(F)return!0;return!1}async function wZ(){await DZ();while(!0){let B=await rH();if(!B)break;if(B.type!=="launch")continue;if(await FZ(B))process.exit(0)}}await CK(wZ);
@@ -275,7 +275,7 @@ ${r}`:u||r}function Od(i,{maxDepth:o=1000,numbersAsFloat:n=!1}={}){if(Ko(i)!=="o
275
275
  `,{mode:384})}async function aa(){let i=au?await ua():await ta(),o;try{let n=await import("fs/promises"),d=JSON.parse(await n.readFile(jd,"utf-8"));if(d.oauthAccount&&typeof d.oauthAccount==="object")o=d.oauthAccount}catch{}return{credentials:i??void 0,oauthAccount:o}}async function pa(i){if(i.credentials)if(au)await ra(i.credentials);else await ca(i.credentials);if(i.oauthAccount){let o=await import("fs/promises"),n={};try{n=JSON.parse(await o.readFile(jd,"utf-8"))}catch{}n.oauthAccount=i.oauthAccount,await o.writeFile(jd,JSON.stringify(n,null,2)+`
276
276
  `)}}var uu="Claude Code-credentials",tu,cu,jd,au;var qn=N(()=>{tu=i0(eu(),".claude"),cu=i0(tu,".credentials.json"),jd=i0(eu(),".claude.json"),au=na()==="darwin"});var pu={};ii(pu,{updateProvider:()=>Xi,setDefaultProvider:()=>n0,setClientProvider:()=>d0,resolveXiaomiBaseUrl:()=>Ud,resolveProviderContext:()=>_,migrateIfNeeded:()=>e0,mergeDetectedProviders:()=>Uo,isProviderCompatible:()=>Ti,getProvidersForClient:()=>Qi,getProviders:()=>V,getProvider:()=>la,getModelChoices:()=>Eo,getDefaultSupportedClients:()=>di,getDefaultProvider:()=>ei,getDefaultModel:()=>Fo,getDefaultBaseUrl:()=>Fd,getClientProvider:()=>qi,fixupProviders:()=>u0,detectProviders:()=>_o,deleteProvider:()=>o0,addProvider:()=>eo,XIAOMI_TOKEN_PLAN_URL:()=>iu,XIAOMI_ANTHROPIC_URL:()=>_d,PROVIDER_TYPE_NAMES:()=>io,DEEPSEEK_ANTHROPIC_URL:()=>Ed});async function V(){return(await z()).providers??[]}async function la(i){return(await V()).find((n)=>n.id===i)}async function ei(){let i=await z(),o=i.providers??[];if(o.length===0)return;if(i.defaultProviderId){let n=o.find((d)=>d.id===i.defaultProviderId);if(n)return n}return o[0]}async function Qi(i){return(await V()).filter((d)=>Ti(d,i)).sort((d,e)=>{let u=d.lastUsedAt?new Date(d.lastUsedAt).getTime():0,r=e.lastUsedAt?new Date(e.lastUsedAt).getTime():0;if(u!==r)return r-u;return new Date(e.createdAt).getTime()-new Date(d.createdAt).getTime()})}async function eo(i){let o=await z(),n={...i,id:crypto.randomUUID(),createdAt:new Date().toISOString()};if(o.providers=[...o.providers??[],n],!o.defaultProviderId)o.defaultProviderId=n.id;return await K(o),n}async function Xi(i,o){let n=await z(),d=n.providers??[],e=d.findIndex((u)=>u.id===i);if(e===-1)return;d[e]={...d[e],...o},n.providers=d,await K(n)}async function o0(i){let o=await z();if((o.providers??[]).find((d)=>d.id===i)?.builtin)return;if(o.providers=(o.providers??[]).filter((d)=>d.id!==i),o.defaultProviderId===i)o.defaultProviderId=o.providers[0]?.id;if(o.clientProviderMap){for(let[d,e]of Object.entries(o.clientProviderMap))if(e===i)delete o.clientProviderMap[d]}await K(o)}async function n0(i){let o=await z();if(!(o.providers??[]).some((d)=>d.id===i))return;o.defaultProviderId=i,await K(o)}async function qi(i){let o=await z(),n=o.clientProviderMap?.[i];if(n){let d=(o.providers??[]).find((e)=>e.id===n);if(d&&Ti(d,i))return d}return}async function d0(i,o){let n=await z();n.clientProviderMap={...n.clientProviderMap,[i]:o};let d=n.providers??[],e=d.findIndex((u)=>u.id===o);if(e!==-1)d[e]={...d[e],lastUsedAt:new Date().toISOString()},n.providers=d;await K(n)}function _(i){return{type:i.type,apiKey:i.apiKey,baseUrl:i.baseUrl,authData:i.authData,model:i.model,modelContextWindow:i.modelContextWindow}}async function ma(){try{let i=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),o=await new Response(i.stdout).text();if(await i.exited!==0)return null;let d=JSON.parse(o.trim());if(!d.loggedIn||d.authMethod!=="claude.ai")return null;let e=d.subscriptionType||"pro",u=d.email||"",r=`Claude ${e.charAt(0).toUpperCase()+e.slice(1)}${u?` (${u})`:""}`,{readClaudeAuth:t}=await Promise.resolve().then(() => (qn(),Qn)),c=await t(),a=c.credentials||c.oauthAccount?{credentials:c.credentials,oauthAccount:c.oauthAccount}:void 0;return{id:crypto.randomUUID(),name:r,type:"claude-subscription",supportedClients:di("claude-subscription"),createdAt:new Date().toISOString(),email:u,subscriptionType:e,authData:a}}catch{return null}}async function xa(){try{let{homedir:i}=await import("os"),{join:o}=await import("path"),n=await import("fs/promises"),d=o(i(),".codex","auth.json"),e=JSON.parse(await n.readFile(d,"utf-8"));if(e.auth_mode!=="chatgpt"||!e.tokens?.access_token)return null;let u="";try{u=JSON.parse(atob(e.tokens.id_token.split(".")[1])).email||""}catch{}return{auth:e,email:u}}catch{return null}}async function wa(){let i=await xa();if(i){let{auth:o,email:n}=i;return{id:crypto.randomUUID(),name:n?`Codex Plus (${n})`:"Codex Subscription",type:"codex-subscription",email:n||void 0,supportedClients:di("codex-subscription"),authData:o,createdAt:new Date().toISOString()}}try{let o=Bun.spawn(["codex","login","status"],{stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0||!n.includes("Logged in")||n.includes("cr_"))return null;return{id:crypto.randomUUID(),name:"Codex Subscription",type:"codex-subscription",supportedClients:di("codex-subscription"),createdAt:new Date().toISOString()}}catch{return null}}async function _o(){let i=[],[o,n]=await Promise.all([ma(),wa()]);if(o)i.push(o);if(n)i.push(n);return i}async function Uo(i){let o=await z(),n=o.providers??[],d=new Set(n.map((u)=>`${u.type}:${u.email||""}`)),e=0;for(let u of i){let r=`${u.type}:${u.email||""}`;if(!d.has(r))n.push(u),d.add(r),e++;else if(u.authData){let t=n.find((c)=>c.type===u.type&&c.email===u.email);if(t)t.authData=u.authData}}if(e>0){if(o.providers=n,!o.defaultProviderId&&n.length>0)o.defaultProviderId=n[0].id;await K(o)}return e}async function e0(){let i=await z();if(!i.apiKey||i.providers&&i.providers.length>0)return!1;let o={id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:Y,apiId:i.apiId,supportedClients:di("tako"),createdAt:new Date().toISOString(),builtin:!0};return i.providers=[o],i.defaultProviderId=o.id,await K(i),!0}async function u0(){let i=await z(),o=i.providers??[],n=!1;for(let d of o)if(d.type==="tako"&&!d.builtin)d.builtin=!0,n=!0;if(i.apiKey&&!o.some((d)=>d.type==="tako")){if(o.push({id:crypto.randomUUID(),name:"Tako \u5B98\u65B9",type:"tako",apiKey:i.apiKey,baseUrl:Y,apiId:i.apiId,supportedClients:di("tako"),createdAt:new Date().toISOString(),builtin:!0}),!i.defaultProviderId)i.defaultProviderId=o[o.length-1].id;n=!0}if(n)i.providers=o,await K(i)}var ai=N(()=>{C();Si();Si()});import{homedir as ya}from"os";import{dirname as sa,join as mu}from"path";function ba(i){if(i.startsWith("ANTHROPIC_"))return!0;return ha.includes(i)}function La(i){let o={...i},n=[],d=i.env;if(d&&typeof d==="object"&&!Array.isArray(d)){let e={...d};for(let u of Object.keys(e))if(ba(u))n.push(u),delete e[u];if(n.length>0)if(Object.keys(e).length===0)delete o.env;else o.env=e}return{settings:o,cleanedFields:n}}async function Na(i={}){let o=await import("fs/promises"),n=i.sourcePath??fa,d=i.targetPath??va,e;try{e=await o.readFile(n,"utf-8")}catch{return null}let u;try{u=JSON.parse(e)}catch{return null}let{settings:r,cleanedFields:t}=La(u);if(t.length===0)return null;if(i.logConflicts!==!1)L.warn(g("claudeCode.settingsDetected",{fields:t.join(", ")})),L.info(g("claudeCode.usingIsolatedSettings",{path:d}));return await o.mkdir(sa(d),{recursive:!0}),await o.writeFile(d,JSON.stringify(r,null,2)+`
277
277
  `),{args:["--setting-sources","project,local","--settings",d],cleanedFields:t,settingsPath:d}}async function Wa(i){let{readClaudeAuth:o,writeClaudeAuth:n}=await Promise.resolve().then(() => (qn(),Qn)),{getProviders:d,updateProvider:e}=await Promise.resolve().then(() => (ai(),pu)),u=i.authData?.credentials,r=i.authData?.oauthAccount;if(!u){L.warn(g("claudeCode.subscriptionMissingAuth"));return}let t=await o(),c=t.oauthAccount?.emailAddress;if(c&&t.credentials){let l=(await d()).find((x)=>x.type==="claude-subscription"&&x.email===c);if(l){let x={credentials:t.credentials,oauthAccount:t.oauthAccount};if(JSON.stringify(l.authData)!==JSON.stringify(x))await e(l.id,{authData:x})}else if(c!==r?.emailAddress)L.warn(g("claudeCode.unknownCurrentAccount",{email:c}))}await n({credentials:u,oauthAccount:r});let a=r?.emailAddress||"?";L.info(g("claudeCode.subscriptionSwitched",{email:a}))}function Ga(i){let o=i.match(/^claude-(haiku|sonnet|opus)-(\d{1,2})-(\d{1,2})$/);if(o)return`${o[1].charAt(0).toUpperCase()+o[1].slice(1)} ${o[2]}.${o[3]}`;return ci.find((d)=>d.id===i)?.displayName??i}function vo(i){if(!i)return i;if(i.endsWith("[1m]")||/:1m$/i.test(i))return i;if(!/^(claude|deepseek|kimi|mimo)[-_]/i.test(i))return i;let o=ci.find((n)=>n.id===i);if(!o||o.contextWindow<1e6)return i;return`${i}[1m]`}function lu(i){if(i>=1e6)return"1M";if(i>0)return`${Math.round(i/1000)}k`;return"?"}function Sa(i){if(!i.baseUrl)return null;let o=Hi(i.baseUrl,"claude");if(!o||o.length===0)return null;let n=Zo(o);if(n.length===0)return null;return n.map((d)=>{let e=vo(d.id);return{id:`model-${d.id}`,label:{en:d.displayName,zh:d.displayName},shortLabel:d.displayName,description:{en:`Use ${d.displayName} (${lu(d.contextWindow)} ctx)`,zh:`\u4F7F\u7528 ${d.displayName}\uFF08\u4E0A\u4E0B\u6587 ${lu(d.contextWindow)}\uFF09`},flag:`--model ${e}`,args:[],envVars:{ANTHROPIC_MODEL:e},group:"model"}})}function Pa(i){if(Ni(),i&&(i.type==="tako"||i.type==="custom")){let d=Sa(i);if(d)return d}let o=i?.type==="deepseek"?$a:i?.type==="xiaomi"?Ma:ga,n=[];for(let d of o){let u=ci.find((a)=>a.id===d)?.contextWindow??0,r=u>=1e6?"1M":u>0?`${Math.round(u/1000)}k`:"?",t=Ga(d),c=vo(d);n.push({id:`model-${d}`,label:{en:t,zh:t},shortLabel:t,description:{en:`Use ${t} (${r} ctx)`,zh:`\u4F7F\u7528 ${t}\uFF08\u4E0A\u4E0B\u6587 ${r}\uFF09`},flag:`--model ${c}`,args:[],envVars:{ANTHROPIC_MODEL:c},group:"model"})}return n}function Ca(i){return[...za,...Pa(i)]}var fa,va,ha,ka,za,ga,$a,Ma;var r0=N(()=>{E();Si();Ci();H();fo();Gn();C();fa=mu(ya(),".claude","settings.json"),va=mu(Q,"claude-code","settings.json"),ha=["CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC","API_TIMEOUT_MS"];ka={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"native",continueArg:"--continue",brandColor:"yellow",getEnvVars(i){let o={CLAUDE_CODE_DISABLE_UPDATE_CHECK:"1",DISABLE_AUTOUPDATER:"1"},n=i.model?vo(i.model):void 0;switch(i.type){case"claude-subscription":return o;case"tako":return{...o,ANTHROPIC_BASE_URL:`${i.baseUrl}/api`,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"anthropic":return{...o,ANTHROPIC_API_KEY:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"deepseek":return{...o,ANTHROPIC_BASE_URL:Ed,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"xiaomi":return{...o,ANTHROPIC_BASE_URL:Ud(i.apiKey),ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};case"custom":return{...o,ANTHROPIC_BASE_URL:i.baseUrl,ANTHROPIC_AUTH_TOKEN:i.apiKey,...n?{ANTHROPIC_MODEL:n}:{}};default:return o}},async setupConfigFiles(i,o,n){let d=[];if(n?.forLaunch){let e=await Na();if(e)d=e.args}if(i.type==="claude-subscription")await Wa(i);return d.length>0?{args:d}:void 0},launchOptions:(i)=>Ca(i)},za=[{id:"skip-permissions",label:{en:"Skip Permissions",zh:"\u8DF3\u8FC7\u6743\u9650\u786E\u8BA4"},shortLabel:"Skip Perms",description:{en:"Auto-execute all operations without confirmation",zh:"\u5141\u8BB8\u81EA\u52A8\u6267\u884C\u6240\u6709\u64CD\u4F5C\uFF0C\u65E0\u9700\u786E\u8BA4"},flag:"--dangerously-skip-permissions",args:["--dangerously-skip-permissions"]},{id:"worktree",label:{en:"Git Worktree",zh:"Git Worktree"},shortLabel:"Worktree",description:{en:"Run in an isolated worktree",zh:"\u5728\u9694\u79BB\u7684 worktree \u4E2D\u8FD0\u884C"},flag:"--worktree",args:["--worktree"]}],ga=["claude-sonnet-4-6","claude-opus-4-6","claude-opus-4-7"],$a=["deepseek-v4-flash","deepseek-v4-pro"],Ma=["mimo-v2.5-pro"];yo(ka)});import{homedir as Ia}from"os";import{join as wu}from"path";async function Qa(){let i=await import("fs/promises");try{await i.mkdir(yu,{recursive:!0})}catch{}let o={};try{o=JSON.parse(await i.readFile(xu,"utf-8"))}catch{}let n=o.security?.auth||{};if(n.selectedType==="gemini-api-key")return;o.selectedAuthType="gemini-api-key",o.security={...o.security,auth:{...n,selectedType:"gemini-api-key"}},await Bun.write(xu,JSON.stringify(o,null,2)+`
278
- `)}var yu,xu,qa;var su=N(()=>{E();yu=wu(Ia(),".gemini"),xu=wu(yu,"settings.json");qa={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars(i){return{GEMINI_API_KEY:i.apiKey,GOOGLE_GEMINI_BASE_URL:i.baseUrl||"https://tako.shiroha.tech"}},setupConfigFiles:Qa};yo(qa)});var t0=N(()=>{je();r0();su();E()});var Wu={};ii(Wu,{showRegionInfo:()=>p0,getNpmRegistry:()=>ui,getMirrors:()=>Lu,getLatestBunVersion:()=>Nu,getBunMirrorDownloadUrl:()=>a0,getBunInstallCommand:()=>c0,detectRegion:()=>Ki,MIRRORS:()=>Do});import{readFileSync as Oa,writeFileSync as Ra,mkdirSync as Ja}from"fs";import{join as vu}from"path";import{homedir as hu}from"os";function Aa(){let i=process.env.TAKO_REGION?.trim().toLowerCase();if(i==="cn"||i==="china")return"cn";if(i==="global"||i==="intl"||i==="international")return"global";return null}function Ya(){try{let i=Oa(bu,"utf-8"),o=JSON.parse(i);if(o.region!=="cn"&&o.region!=="global")return null;if(typeof o.detectedAt!=="number")return null;if(Date.now()-o.detectedAt>Ba)return null;return o.region}catch{return null}}function fu(i){try{Ja(vu(hu(),".tako"),{recursive:!0}),Ra(bu,JSON.stringify({region:i,detectedAt:Date.now()}),"utf-8")}catch{}}function Ha(){try{let o=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(o)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(o))return"cn"}}catch{}let i=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(i.startsWith("zh_cn")||i.startsWith("zh-cn"))return"cn";return null}async function Ta(){if(On)return On;return On=(async()=>{let o=[Xa,Ka,Va,Za].map((n)=>n().then((d)=>d?d:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(o),new Promise((d,e)=>setTimeout(()=>e(Error("net-timeout")),1200))])}catch{return"cn"}})(),On}async function Ki(){if(ho)return ho;let i=Aa();if(i)return ho=i,i;let o=Ya();if(o)return ho=o,o;let n=Ha();if(n)return ho=n,fu(n),n;let d=await Ta();return ho=d,fu(d),d}async function Xa(){try{let i=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Ka(){try{let i=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country==="CN"?"cn":"global"}catch{return null}}async function Va(){try{let i=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Za(){let i=[async()=>{let o=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.json(),d=n?.data?.location;if(Array.isArray(d)&&d[0]==="\u4E2D\u56FD")return"cn";let e=n?.data?.country_code;return e==="CN"?"cn":e?"global":null},async()=>{let o=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.text();try{let d=JSON.parse(n.trim());if(d.proCode&&/^\d{6}$/.test(d.proCode))return"cn"}catch{}return null},async()=>{let o=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!o.ok)return null;let n=(await o.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(n))return"cn";return null}];try{return await Promise.any(i.map((o)=>o().then((n)=>n??Promise.reject())))}catch{return null}}async function Lu(){let i=await Ki();return Do[i]}async function ui(){return(await Lu()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function Nu(){let i=Do.cn.bunBinary,o=await fetch(`${i}/`,{signal:AbortSignal.timeout(1e4)});if(!o.ok)throw Error(`Failed to fetch bun versions: ${o.status}`);let d=(await o.json()).map((e)=>e.name.replace(/\/$/,"")).filter((e)=>/^bun-v\d+\.\d+\.\d+$/.test(e)).sort((e,u)=>{let r=e.replace("bun-v","").split(".").map(Number),t=u.replace("bun-v","").split(".").map(Number);for(let c=0;c<3;c++)if(r[c]!==t[c])return t[c]-r[c];return 0});if(d.length===0)throw Error("No bun versions found on mirror");return d[0]}async function a0(){let i=Do.cn.bunBinary,o=await Nu(),d={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",e=process.arch==="arm64"?"aarch64":"x64",u=`bun-${d}-${e}`;return`${i}/${o}/${u}.zip`}async function p0(){let i=await Ki(),o=Do[i];if(i==="cn")L.info(`${g("region.usingChinaMirror")} npm: ${o.npm}`);else L.info(g("region.usingGlobalMirror"))}var ho=null,On=null,bu,Ba=2592000000,Do;var bo=N(()=>{H();Ci();bu=vu(hu(),".tako","region.json"),Do={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Fa=class{constructor(i){this.baseUrl=i.baseUrl,this.headers={"Content-Type":"application/json",...i.defaultHeaders},this.maxRetries=i.maxRetries??3,this.initialRetryDelay=i.initialRetryDelay??500}async resolveHeaders(){let i={};for(let[o,n]of Object.entries(this.headers)){let d=await n;d!==null&&(i[o]=d)}return i}addHeader(i,o){this.headers[i]=o}async post(i,o,n,d){try{let e=await fetch(i,{method:"POST",headers:await this.resolveHeaders(),body:o?JSON.stringify(o??{}):void 0,keepalive:!0,...n});if(e.status===401)return null;if(e.status!==200&&e.status!==202)throw Error(`HTTP error! status: ${e.status}`);let u=await e.text();return u?JSON.parse(u):null}catch(e){if(d<this.maxRetries){let u=this.initialRetryDelay*2**d;return await new Promise((r)=>setTimeout(r,u)),this.post(i,o,n,d+1)}return console.error("Max retries reached:",e),null}}async fetch(i,o,n={}){let d=`${this.baseUrl}${i}`;return this.post(d,o,n,0)}},ku=class{constructor(i){this.groups=[],this.queue=[],this.options=i;let o={"openpanel-client-id":i.clientId};i.clientSecret&&(o["openpanel-client-secret"]=i.clientSecret),o["openpanel-sdk-name"]=i.sdk||"node",o["openpanel-sdk-version"]=i.sdkVersion||"1.3.1",this.api=new Fa({baseUrl:i.apiUrl||"https://api.openpanel.dev",defaultHeaders:o})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(i){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||i.type==="replay"&&!this.sessionId)}addQueue(i){i.type==="track"&&(i.payload.properties={...i.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(i)}async send(i){if(this.options.filter&&!this.options.filter(i))return Promise.resolve();if(this.shouldQueue(i))return this.addQueue(i),Promise.resolve();let o=await this.api.fetch("/track",i,{keepalive:i.type!=="replay"});this.deviceId=o?.deviceId;let n=!!this.sessionId;return this.sessionId=o?.sessionId,!n&&this.sessionId&&this.flush(),o}setGlobalProperties(i){this.global={...this.global,...i}}track(i,o){this.log("track event",i,o);let{groups:n,profileId:d,...e}=o??{},u=[...new Set([...this.groups,...n??[]])];return this.send({type:"track",payload:{name:i,profileId:d??this.profileId,groups:u.length>0?u:void 0,properties:{...this.global??{},...e}}})}identify(i){if(this.log("identify user",i),i.profileId&&(this.profileId=i.profileId,this.flush()),i.profileId&&Object.keys(i).length>1)return this.send({type:"identify",payload:{...i,properties:{...this.global,...i.properties}}})}upsertGroup(i){return this.log("upsert group",i),this.send({type:"group",payload:i})}setGroup(i){return this.log("set group",i),this.groups.includes(i)||(this.groups=[...this.groups,i]),this.send({type:"assign_group",payload:{groupIds:[i],profileId:this.profileId}})}setGroups(i){return this.log("set groups",i),this.groups=[...new Set([...this.groups,...i])],this.send({type:"assign_group",payload:{groupIds:i,profileId:this.profileId}})}alias(i){}increment(i){return this.send({type:"increment",payload:i})}decrement(i){return this.send({type:"decrement",payload:i})}revenue(i,o){let n=o?.deviceId;return delete o?.deviceId,this.track("revenue",{...o??{},...n?{__deviceId:n}:{},__revenue:i})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(i){if(i.type==="replay")return i.payload;if(i.type==="track"){let o="groups"in i.payload?i.payload.groups??[]:[],n=[...new Set([...this.groups,...o])];return{...i.payload,profileId:i.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return i.type==="identify"||i.type==="increment"||i.type==="decrement"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.type==="assign_group"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.payload}flush(){let i=[];for(let o of this.queue){if(this.shouldQueue(o)){i.push(o);continue}let n=this.buildFlushPayload(o);this.send({...o,payload:n})}this.queue=i}log(...i){this.options.debug&&console.log("[OpenPanel.dev]",...i)}};var zu=()=>{};function gu(){if(!Lo)Lo=new ku({clientId:Ea,clientSecret:_a,apiUrl:Ua});return Lo}function $u(i,o,n){let d=gu().track(i,{profileId:o,...n}).catch(()=>{});Rn.push(d)}function Mu(i,o){let{email:n,...d}=o,e=gu().identify({profileId:i,...typeof n==="string"?{email:n}:{},firstName:String(d.platform||""),properties:d}).catch(()=>{});Rn.push(e)}async function Gu(){if(await Promise.allSettled(Rn),Rn.length=0,Lo){try{Lo.flush()}catch{}Lo=null}}var Ea="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",_a="sec_1e0ea34016bc3a5f8ef5",Ua="https://op.shiroha.tech/api",Lo=null,Rn;var Su=N(()=>{zu();Rn=[]});function Pu(){return{cli_version:Da,platform:process.platform,arch:process.arch,locale:no(),node_version:process.version}}function Cu(i){return Bun.hash(i).toString(16).slice(0,8)}var Da="0.3.17";var l0=N(()=>{H()});async function Iu(){if(No!==null)return No;try{return No=(await z()).telemetryEnabled!==!1,No}catch{return No=!1,!1}}async function Qu(){try{let i=await z();if(i.apiId)return i.apiId;let o=i.providers??[],n=i.defaultProviderId,d=n?o.find((e)=>e.id===n):o[0];if(d){if(d.apiId)return d.apiId;if(d.email)return d.email;return d.id}return"anonymous"}catch{return"anonymous"}}async function T(){if(m0)return;try{if(!await Iu())return;let i=await z(),o=await Qu();if(o==="anonymous")return;let d=(i.providers??[]).find((u)=>u.email)?.email,e=await Ki();Mu(o,{...d?{email:d}:{},region:e,locale:no(),first_seen_version:ja,platform:process.platform,arch:process.arch}),m0=!0}catch{}}function O(i,o){ip(i,o).catch(()=>{})}async function ip(i,o){try{if(!await Iu())return;let n=await Qu();$u(i,n,{...Pu(),...o})}catch{}}async function jo(){await Gu()}function U(){No=null,m0=!1}var ja="0.3.17",m0=!1,No=null;var xi=N(()=>{Su();C();bo();H();l0();l0()});function ep(i,o){let n=[];if(o.phase)n.push(o.phase);if(o.pkgCount>0)n.push(`\u5DF2\u5904\u7406 ${o.pkgCount} \u4E2A\u5305`);return n.push(`${o.elapsedSec}s`),`${i} \xB7 ${n.join(" \xB7 ")}`}async function Jn(i,o,n){let d=Date.now(),e={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},u=[],r=()=>{e.elapsedSec=Math.floor((Date.now()-d)/1000),n(ep(o,e))};r();let t=setInterval(r,1000),c=(p)=>{if(!p)return;if(u.push(p),op.test(p))e.phase="\u89E3\u6790\u4F9D\u8D56";else if(qu.test(p)){e.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let l=p.match(qu);if(l)e.pkgCount=parseInt(l[1],10)}else if(np.test(p))e.phase="\u5199\u5165 lockfile";else if(dp.test(p))e.phase="\u5B8C\u6210";r()},a=async(p)=>{if(!p)return;let l=p.getReader(),x=new TextDecoder,w="";try{while(!0){let{done:y,value:s}=await l.read();if(y)break;w+=x.decode(s,{stream:!0}).replace(/\r/g,"");let b=w.split(`
278
+ `)}var yu,xu,qa;var su=N(()=>{E();yu=wu(Ia(),".gemini"),xu=wu(yu,"settings.json");qa={id:"gemini",name:"Gemini CLI",package:"@google/gemini-cli",command:"gemini",runtime:"bun",brandColor:"cyan",getEnvVars(i){return{GEMINI_API_KEY:i.apiKey,GOOGLE_GEMINI_BASE_URL:i.baseUrl||"https://tako.shiroha.tech"}},setupConfigFiles:Qa};yo(qa)});var t0=N(()=>{je();r0();su();E()});var Wu={};ii(Wu,{showRegionInfo:()=>p0,getNpmRegistry:()=>ui,getMirrors:()=>Lu,getLatestBunVersion:()=>Nu,getBunMirrorDownloadUrl:()=>a0,getBunInstallCommand:()=>c0,detectRegion:()=>Ki,MIRRORS:()=>Do});import{readFileSync as Oa,writeFileSync as Ra,mkdirSync as Ja}from"fs";import{join as vu}from"path";import{homedir as hu}from"os";function Aa(){let i=process.env.TAKO_REGION?.trim().toLowerCase();if(i==="cn"||i==="china")return"cn";if(i==="global"||i==="intl"||i==="international")return"global";return null}function Ya(){try{let i=Oa(bu,"utf-8"),o=JSON.parse(i);if(o.region!=="cn"&&o.region!=="global")return null;if(typeof o.detectedAt!=="number")return null;if(Date.now()-o.detectedAt>Ba)return null;return o.region}catch{return null}}function fu(i){try{Ja(vu(hu(),".tako"),{recursive:!0}),Ra(bu,JSON.stringify({region:i,detectedAt:Date.now()}),"utf-8")}catch{}}function Ha(){try{let o=Intl.DateTimeFormat().resolvedOptions().timeZone||"";if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar|Hong_Kong|Macau)$/i.test(o)){if(/^Asia\/(Shanghai|Urumqi|Chongqing|Harbin|Kashgar)$/i.test(o))return"cn"}}catch{}let i=(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||"").toLowerCase();if(i.startsWith("zh_cn")||i.startsWith("zh-cn"))return"cn";return null}async function Ta(){if(On)return On;return On=(async()=>{let o=[Xa,Ka,Va,Za].map((n)=>n().then((d)=>d?d:Promise.reject(Error("null"))));try{return await Promise.race([Promise.any(o),new Promise((d,e)=>setTimeout(()=>e(Error("net-timeout")),1200))])}catch{return"cn"}})(),On}async function Ki(){if(ho)return ho;let i=Aa();if(i)return ho=i,i;let o=Ya();if(o)return ho=o,o;let n=Ha();if(n)return ho=n,fu(n),n;let d=await Ta();return ho=d,fu(d),d}async function Xa(){try{let i=await fetch("https://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Ka(){try{let i=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country==="CN"?"cn":"global"}catch{return null}}async function Va(){try{let i=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(1000)});if(!i.ok)return null;return(await i.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Za(){let i=[async()=>{let o=await fetch("https://myip.ipip.net/json",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.json(),d=n?.data?.location;if(Array.isArray(d)&&d[0]==="\u4E2D\u56FD")return"cn";let e=n?.data?.country_code;return e==="CN"?"cn":e?"global":null},async()=>{let o=await fetch("https://whois.pconline.com.cn/ipJson.jsp?json=true",{signal:AbortSignal.timeout(800)});if(!o.ok)return null;let n=await o.text();try{let d=JSON.parse(n.trim());if(d.proCode&&/^\d{6}$/.test(d.proCode))return"cn"}catch{}return null},async()=>{let o=await fetch("http://ip.3322.net/api/",{signal:AbortSignal.timeout(600)});if(!o.ok)return null;let n=(await o.text()).trim();if(/^\d+\.\d+\.\d+\.\d+$/.test(n))return"cn";return null}];try{return await Promise.any(i.map((o)=>o().then((n)=>n??Promise.reject())))}catch{return null}}async function Lu(){let i=await Ki();return Do[i]}async function ui(){return(await Lu()).npm}function c0(){return"curl -fsSL https://bun.sh/install | bash"}async function Nu(){let i=Do.cn.bunBinary,o=await fetch(`${i}/`,{signal:AbortSignal.timeout(1e4)});if(!o.ok)throw Error(`Failed to fetch bun versions: ${o.status}`);let d=(await o.json()).map((e)=>e.name.replace(/\/$/,"")).filter((e)=>/^bun-v\d+\.\d+\.\d+$/.test(e)).sort((e,u)=>{let r=e.replace("bun-v","").split(".").map(Number),t=u.replace("bun-v","").split(".").map(Number);for(let c=0;c<3;c++)if(r[c]!==t[c])return t[c]-r[c];return 0});if(d.length===0)throw Error("No bun versions found on mirror");return d[0]}async function a0(){let i=Do.cn.bunBinary,o=await Nu(),d={darwin:"darwin",win32:"windows",linux:"linux"}[process.platform]||"linux",e=process.arch==="arm64"?"aarch64":"x64",u=`bun-${d}-${e}`;return`${i}/${o}/${u}.zip`}async function p0(){let i=await Ki(),o=Do[i];if(i==="cn")L.info(`${g("region.usingChinaMirror")} npm: ${o.npm}`);else L.info(g("region.usingGlobalMirror"))}var ho=null,On=null,bu,Ba=2592000000,Do;var bo=N(()=>{H();Ci();bu=vu(hu(),".tako","region.json"),Do={cn:{npm:"https://registry.npmmirror.com",bunBinary:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bunBinary:null}}});var Fa=class{constructor(i){this.baseUrl=i.baseUrl,this.headers={"Content-Type":"application/json",...i.defaultHeaders},this.maxRetries=i.maxRetries??3,this.initialRetryDelay=i.initialRetryDelay??500}async resolveHeaders(){let i={};for(let[o,n]of Object.entries(this.headers)){let d=await n;d!==null&&(i[o]=d)}return i}addHeader(i,o){this.headers[i]=o}async post(i,o,n,d){try{let e=await fetch(i,{method:"POST",headers:await this.resolveHeaders(),body:o?JSON.stringify(o??{}):void 0,keepalive:!0,...n});if(e.status===401)return null;if(e.status!==200&&e.status!==202)throw Error(`HTTP error! status: ${e.status}`);let u=await e.text();return u?JSON.parse(u):null}catch(e){if(d<this.maxRetries){let u=this.initialRetryDelay*2**d;return await new Promise((r)=>setTimeout(r,u)),this.post(i,o,n,d+1)}return console.error("Max retries reached:",e),null}}async fetch(i,o,n={}){let d=`${this.baseUrl}${i}`;return this.post(d,o,n,0)}},ku=class{constructor(i){this.groups=[],this.queue=[],this.options=i;let o={"openpanel-client-id":i.clientId};i.clientSecret&&(o["openpanel-client-secret"]=i.clientSecret),o["openpanel-sdk-name"]=i.sdk||"node",o["openpanel-sdk-version"]=i.sdkVersion||"1.3.1",this.api=new Fa({baseUrl:i.apiUrl||"https://api.openpanel.dev",defaultHeaders:o})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(i){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||i.type==="replay"&&!this.sessionId)}addQueue(i){i.type==="track"&&(i.payload.properties={...i.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(i)}async send(i){if(this.options.filter&&!this.options.filter(i))return Promise.resolve();if(this.shouldQueue(i))return this.addQueue(i),Promise.resolve();let o=await this.api.fetch("/track",i,{keepalive:i.type!=="replay"});this.deviceId=o?.deviceId;let n=!!this.sessionId;return this.sessionId=o?.sessionId,!n&&this.sessionId&&this.flush(),o}setGlobalProperties(i){this.global={...this.global,...i}}track(i,o){this.log("track event",i,o);let{groups:n,profileId:d,...e}=o??{},u=[...new Set([...this.groups,...n??[]])];return this.send({type:"track",payload:{name:i,profileId:d??this.profileId,groups:u.length>0?u:void 0,properties:{...this.global??{},...e}}})}identify(i){if(this.log("identify user",i),i.profileId&&(this.profileId=i.profileId,this.flush()),i.profileId&&Object.keys(i).length>1)return this.send({type:"identify",payload:{...i,properties:{...this.global,...i.properties}}})}upsertGroup(i){return this.log("upsert group",i),this.send({type:"group",payload:i})}setGroup(i){return this.log("set group",i),this.groups.includes(i)||(this.groups=[...this.groups,i]),this.send({type:"assign_group",payload:{groupIds:[i],profileId:this.profileId}})}setGroups(i){return this.log("set groups",i),this.groups=[...new Set([...this.groups,...i])],this.send({type:"assign_group",payload:{groupIds:i,profileId:this.profileId}})}alias(i){}increment(i){return this.send({type:"increment",payload:i})}decrement(i){return this.send({type:"decrement",payload:i})}revenue(i,o){let n=o?.deviceId;return delete o?.deviceId,this.track("revenue",{...o??{},...n?{__deviceId:n}:{},__revenue:i})}getDeviceId(){return this.deviceId??""}getSessionId(){return this.sessionId??""}fetchDeviceId(){return Promise.resolve(this.deviceId??"")}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(i){if(i.type==="replay")return i.payload;if(i.type==="track"){let o="groups"in i.payload?i.payload.groups??[]:[],n=[...new Set([...this.groups,...o])];return{...i.payload,profileId:i.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return i.type==="identify"||i.type==="increment"||i.type==="decrement"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.type==="assign_group"?{...i.payload,profileId:i.payload.profileId??this.profileId}:i.payload}flush(){let i=[];for(let o of this.queue){if(this.shouldQueue(o)){i.push(o);continue}let n=this.buildFlushPayload(o);this.send({...o,payload:n})}this.queue=i}log(...i){this.options.debug&&console.log("[OpenPanel.dev]",...i)}};var zu=()=>{};function gu(){if(!Lo)Lo=new ku({clientId:Ea,clientSecret:_a,apiUrl:Ua});return Lo}function $u(i,o,n){let d=gu().track(i,{profileId:o,...n}).catch(()=>{});Rn.push(d)}function Mu(i,o){let{email:n,...d}=o,e=gu().identify({profileId:i,...typeof n==="string"?{email:n}:{},firstName:String(d.platform||""),properties:d}).catch(()=>{});Rn.push(e)}async function Gu(){if(await Promise.allSettled(Rn),Rn.length=0,Lo){try{Lo.flush()}catch{}Lo=null}}var Ea="d65a6d4b-f702-4af6-98e7-bdb999e01d5f",_a="sec_1e0ea34016bc3a5f8ef5",Ua="https://op.shiroha.tech/api",Lo=null,Rn;var Su=N(()=>{zu();Rn=[]});function Pu(){return{cli_version:Da,platform:process.platform,arch:process.arch,locale:no(),node_version:process.version}}function Cu(i){return Bun.hash(i).toString(16).slice(0,8)}var Da="0.3.18";var l0=N(()=>{H()});async function Iu(){if(No!==null)return No;try{return No=(await z()).telemetryEnabled!==!1,No}catch{return No=!1,!1}}async function Qu(){try{let i=await z();if(i.apiId)return i.apiId;let o=i.providers??[],n=i.defaultProviderId,d=n?o.find((e)=>e.id===n):o[0];if(d){if(d.apiId)return d.apiId;if(d.email)return d.email;return d.id}return"anonymous"}catch{return"anonymous"}}async function T(){if(m0)return;try{if(!await Iu())return;let i=await z(),o=await Qu();if(o==="anonymous")return;let d=(i.providers??[]).find((u)=>u.email)?.email,e=await Ki();Mu(o,{...d?{email:d}:{},region:e,locale:no(),first_seen_version:ja,platform:process.platform,arch:process.arch}),m0=!0}catch{}}function O(i,o){ip(i,o).catch(()=>{})}async function ip(i,o){try{if(!await Iu())return;let n=await Qu();$u(i,n,{...Pu(),...o})}catch{}}async function jo(){await Gu()}function U(){No=null,m0=!1}var ja="0.3.18",m0=!1,No=null;var xi=N(()=>{Su();C();bo();H();l0();l0()});function ep(i,o){let n=[];if(o.phase)n.push(o.phase);if(o.pkgCount>0)n.push(`\u5DF2\u5904\u7406 ${o.pkgCount} \u4E2A\u5305`);return n.push(`${o.elapsedSec}s`),`${i} \xB7 ${n.join(" \xB7 ")}`}async function Jn(i,o,n){let d=Date.now(),e={phase:"\u6B63\u5728\u51C6\u5907",pkgCount:0,elapsedSec:0},u=[],r=()=>{e.elapsedSec=Math.floor((Date.now()-d)/1000),n(ep(o,e))};r();let t=setInterval(r,1000),c=(p)=>{if(!p)return;if(u.push(p),op.test(p))e.phase="\u89E3\u6790\u4F9D\u8D56";else if(qu.test(p)){e.phase="\u4E0B\u8F7D\u5E76\u89E3\u538B";let l=p.match(qu);if(l)e.pkgCount=parseInt(l[1],10)}else if(np.test(p))e.phase="\u5199\u5165 lockfile";else if(dp.test(p))e.phase="\u5B8C\u6210";r()},a=async(p)=>{if(!p)return;let l=p.getReader(),x=new TextDecoder,w="";try{while(!0){let{done:y,value:s}=await l.read();if(y)break;w+=x.decode(s,{stream:!0}).replace(/\r/g,"");let b=w.split(`
279
279
  `);w=b.pop()??"";for(let f of b)c(f)}if(w)c(w)}finally{l.releaseLock()}};try{await Promise.all([a(i.stderr),a(i.stdout)])}finally{clearInterval(t)}return u.join(`
280
280
  `)}var op,qu,np,dp;var x0=N(()=>{op=/^Resolving dependencies/,qu=/^Resolved, downloaded and extracted \[(\d+)\]/,np=/^Saved lockfile/,dp=/^(\d+) packages? installed/});function up(i){return i.replace(/\r/g,`
281
281
  `).replace(/\n{3,}/g,`
@@ -521,16 +521,16 @@ Install: tako skill install <name>`),console.log(`Install all: tako skill instal
521
521
  `)}function gm(i,o,n){let d=i.map((u)=>({id:u.id,name:u.name,baseUrl:u.baseUrl,hasCache:u.hasAnyCache,models:u.buckets.flatMap((r)=>r.models.map((t)=>({apiType:r.apiType,id:t.id,displayName:t.displayName,description:t.description,contextWindow:t.contextWindow,sortOrder:t.sortOrder})))}));return`${JSON.stringify({command:"list",refreshed:o,fetchedAt:n,providers:d})}
522
522
  `}async function $m(i=[],o={}){let n=sm(i);if(n.invalid)return process.stderr.write(`Unknown argument: ${n.invalid}
523
523
  Usage: tako models [list] [--refresh] [--json]
524
- `),1;let d=o.loadConfig??z,e=o.refresh??Cn,u=o.read??Hi,r=o.now??(()=>Date.now()),t=o.columns??(()=>process.stdout.columns??80),c=await d(),a=fm(c);if(n.refresh&&a.length>0)await bm(a,e);let p=a.map((x)=>hm(x,u)),l=new Date(r()).toISOString();if(n.json)process.stdout.write(gm(p,n.refresh,l));else process.stdout.write(zm(p,t()));return 0}var ut,Lm=5;var tt=N(()=>{C();Xd();ut=["openai","claude"]});var le="0.3.17",yn=22,m,So,Po,pt,lt,Co,Fi;var Io=N(()=>{m={bg:"#17130f",panel:"#211b16",panelMuted:"#2b231c",text:"#ece3d8",muted:"#94897c",border:"#3a3129",orange:"#fb8147",orangeDim:"#c96a3a",cyan:"#8fb8a8",green:"#8fbf7a",yellow:"#e6b45c",red:"#e58f7b",magenta:"#c99bd6",blue:"#88a8d8",gray:"#94897c"},So={"claude-code":{icon:"*",color:m.orange},codex:{icon:"C",color:m.blue},gemini:{icon:"G",color:m.green}},Po={icon:"-",color:m.text},pt=["\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"].join(`
524
+ `),1;let d=o.loadConfig??z,e=o.refresh??Cn,u=o.read??Hi,r=o.now??(()=>Date.now()),t=o.columns??(()=>process.stdout.columns??80),c=await d(),a=fm(c);if(n.refresh&&a.length>0)await bm(a,e);let p=a.map((x)=>hm(x,u)),l=new Date(r()).toISOString();if(n.json)process.stdout.write(gm(p,n.refresh,l));else process.stdout.write(zm(p,t()));return 0}var ut,Lm=5;var tt=N(()=>{C();Xd();ut=["openai","claude"]});var le="0.3.18",yn=22,m,So,Po,pt,lt,Co,Fi;var Io=N(()=>{m={bg:"#17130f",panel:"#211b16",panelMuted:"#2b231c",text:"#ece3d8",muted:"#94897c",border:"#3a3129",orange:"#fb8147",orangeDim:"#c96a3a",cyan:"#8fb8a8",green:"#8fbf7a",yellow:"#e6b45c",red:"#e58f7b",magenta:"#c99bd6",blue:"#88a8d8",gray:"#94897c"},So={"claude-code":{icon:"*",color:m.orange},codex:{icon:"C",color:m.blue},gemini:{icon:"G",color:m.green}},Po={icon:"-",color:m.text},pt=["\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"," \u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588"].join(`
525
525
  `),lt=["\u2580\u2588\u2580 \u2584\u2580\u2588 \u2588\u2584\u2580 \u2588\u2580\u2588"," \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588\u2584\u2588"].join(`
526
526
  `),Co=["tako","claude-subscription","codex-subscription","anthropic","deepseek","xiaomi","custom"],Fi=[{value:"en",label:"English"},{value:"zh",label:"\u4E2D\u6587"}]});async function mt(i=45){let o=Ie(),n=await Du(),d=await ei(),e=Ii()==="zh",u=[...o].sort((c,a)=>{if(c.id===n)return-1;if(a.id===n)return 1;return 0}),r=[];for(let c of u){let a=await Uu(c.id,L0,!0),p=process.cwd(),l=[{label:e?"\u5728\u5F53\u524D\u76EE\u5F55\u542F\u52A8":"Launch in current directory",hint:W0(p,i),path:p},...a.map((k)=>({label:W0(k.path,i),hint:ju(k.lastLaunchedAt),path:k.path}))],x=await Qi(c.id),y=await qi(c.id)||x.find((k)=>k.id===d?.id)||x[0],s=y?x.findIndex((k)=>k.id===y.id):0,b=kn(c,y),f=new Set(b.map((k)=>k.id)),M=(await Bn(c.id)).filter((k)=>f.has(k));r.push({client:c,projects:l,providers:x,activeProvider:y,activeProvIdx:Math.max(s,0),launchOptions:b,lastSelectedOptionIds:M})}let t={};try{t=await rr()}catch{t={}}return{clients:r,defaultIdx:0,hasProviders:r.some((c)=>c.providers.length>0),pickCounts:t,zh:e}}var xt=N(()=>{t0();E();H();M0();An();ai()});function co(i,o){let n=[],d=new Set;for(let e of i){if(!e.group){n.push({kind:"flag",opt:e});continue}if(!d.has(e.group))d.add(e.group),n.push({kind:"group",group:e.group,title:e.group==="model"?o?"\u6A21\u578B":"Model":e.group})}return n.push({kind:"provider",title:o?"\u670D\u52A1\u5546":"Provider"}),n}function Ei(i,o,n){return i.find((d)=>d.group===n&&o.has(d.id))}function me(i){let o=[],n={},d=[];for(let e of i.launchOptions){if(!i.enabled.has(e.id))continue;if(o.push(...e.args),e.envVars)Object.assign(n,e.envVars);d.push(e.id)}return{args:o,envVars:n,selectedOptionIds:d}}function wt(i,o,n){let d=new Set(o.map((a)=>a.id)),e=new Set(o.filter((a)=>a.group==="model").map((a)=>a.id)),u=n?`model-${n}`:void 0,r=new Set,t=!1,c=!1;for(let a of i)if(d.has(a)){if(r.add(a),e.has(a))c=!0}else t=!0;if(!c&&u&&e.has(u))r.add(u),t=!0;return t?r:i}async function yt(){let i=await st(),o=Ii();return{...i,screen:"launcher",busy:!1,message:"",providers:[],defaultProviderId:void 0,clientBindings:{},providerTabIdx:i.clientIdx,providerRowIdx:0,providerDetailIdx:0,optionPickerGroup:void 0,optionPickerIdx:0,modelPickerMode:"collapsed",scrollOffset:0,scrollScreen:"launcher",providerSelectedId:void 0,providerInputMode:"add-key",addType:"tako",addKey:"",addUrl:"",addModel:"",addCtx:"",statsLoading:!1,apiKeyValue:"",apiKeyStatus:"idle",languageIdx:Math.max(0,Fi.findIndex((n)=>n.value===o)),agentDefaults:{},agentIdx:0,agentDetailFrames:[],agentDetailInput:"",agentDetailStatus:"idle",agentPendingApprovals:[],agentBackend:"claude",agentModel:"",agentName:"",agentField:"backend",keyGuideIdx:0,clientVersions:[],clientVersionsClientIdx:0,clientVersionsIdx:0,clientVersionsLoading:!1}}async function st(){let i=await mt(48);return{clients:i.clients.map((n)=>({...n,enabled:wt(new Set(n.lastSelectedOptionIds),n.launchOptions,n.activeProvider?.model)})),clientIdx:i.defaultIdx,focus:"tabs",projectIdx:0,optionIdx:0,zh:i.zh,pickCounts:i.pickCounts}}async function vi(i){let o=i.clients[i.clientIdx]?.client.id,n=await st();i.clients=n.clients,i.zh=n.zh,i.pickCounts=n.pickCounts;let d=o?i.clients.findIndex((e)=>e.client.id===o):-1;i.clientIdx=d>=0?d:0,xe(i)}function xe(i){let o=i.clients[i.clientIdx];if(!o)return;let n=co(o.launchOptions,i.zh);i.projectIdx=Math.max(0,Math.min(i.projectIdx,o.projects.length-1)),i.optionIdx=Math.max(0,Math.min(i.optionIdx,n.length-1))}function sn(i){if(i.focus==="options")i.focus="tabs";i.projectIdx=0,i.optionIdx=0,i.optionPickerGroup=void 0,i.optionPickerIdx=0,i.modelPickerMode="collapsed"}function ao(i,o){if(i.screen="provider-input",i.providerInputMode=o,i.providerRowIdx=0,i.addKey="",o==="add-key")i.addUrl="",i.addModel=Fo(i.addType)||"",i.addCtx=""}var sd=N(()=>{Si();H();xt();Io()});async function Lt(){try{let i=await Di();if(!i)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let n=await(await fetch(`${Y}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i})})).json(),e=await(await fetch(`${Y}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:i,period:"daily"})})).json();if(!n.success)return{success:!1,error:n.error||n.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let u=(e.data||[]).map((r)=>({model:r.model,requests:r.requests,cost:r.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:n.data?.usage?.total?.requests||0,totalCost:n.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(n.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:u}}}catch(i){return{success:!1,error:i instanceof Error?i.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function Nt(i){return i.toLocaleString("en-US")}var fe=N(()=>{C()});var It={};ii(It,{syncSubscriptionProviderFromLocalAuth:()=>$e,shouldShowKeyGuide:()=>x1,runSubscriptionAuthCommand:()=>ge,refreshQuota:()=>ke,refreshProviders:()=>Ji,refreshAgentDetail:()=>Bi,openStats:()=>hn,openProviders:()=>po,openClientVersions:()=>Me,openAgents:()=>hi,openAgentDetail:()=>ze,loadClientVersions:()=>lo,installClientVersion:()=>Ge,finishProviderAdd:()=>bn,dismissKeyGuide:()=>bd,backToLauncher:()=>Ai});async function ke(i){let o=i.clients[i.clientIdx]?.activeProvider;if(!o){i.quota=void 0,i.quotaKey=void 0;return}let n=`${o.id}:${o.type}`;if(i.quotaKey===n&&i.quota)return;i.quotaKey=n;let{getOfficialQuota:d}=await Promise.resolve().then(() => (Vn(),I0)),e=await d(o);if(i.quotaKey===n)i.quota=e}async function Ji(i){i.providers=await V(),i.defaultProviderId=(await ei())?.id;let o={};for(let n of i.clients)o[n.client.id]=(await qi(n.client.id))?.id;i.clientBindings=o}async function po(i){i.screen="providers",i.message="",i.providerTabIdx=i.clientIdx,i.providerRowIdx=0,await Ji(i)}async function hn(i){i.screen="stats",i.message="",i.statsLoading=!0,i.statsError=void 0;let o=await Lt();if(o.success&&o.data)i.statsData=o.data;else i.statsError=o.error||(i.zh?"\u672A\u77E5\u9519\u8BEF":"Unknown error");i.statsLoading=!1}async function hi(i){i.screen="agents",i.message="",i.agentError=void 0;let[o,n]=await Promise.all([td(),ld()]);i.agentSessions=o,i.agentDefaults=n,i.agentIdx=Math.max(0,Math.min(i.agentIdx,o.length-1))}async function Bi(i){let o=i.agentDetailSid;if(!o)return;let[n,d]=await Promise.all([ad(o,200),an(o)]);if(!n){i.agentError=i.zh?"Session \u4E0D\u5B58\u5728":"Session not found",i.screen="agents",await hi(i);return}i.agentDetailMeta=n.meta,i.agentDetailFrames=n.log,i.agentDetailAlive=n.alive,i.agentPendingApprovals=d}async function ze(i,o){i.screen="agent-detail",i.agentDetailSid=o,i.agentDetailInput="",i.agentDetailStatus="idle",i.agentError=void 0,await Bi(i)}function Ai(i){i.screen="launcher",i.message="",i.apiKeyStatus="idle",i.apiKeyError=void 0}function Ct(i){try{if(process.stdin.isTTY)process.stdin.setRawMode(i)}catch{}}function m1(i){return i==="claude"?["claude","auth","login","--claudeai"]:["codex","login"]}async function ge(i){let o=m1(i);Ct(!1);try{let n=Bun.spawn(o,{stdin:"inherit",stdout:"inherit",stderr:"inherit"});return await n.exited,{ok:n.exitCode===0,exitCode:n.exitCode}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}finally{Ct(!1)}}async function $e(i,o){let{invalidateQuotaCache:n}=await Promise.resolve().then(() => (Vn(),I0)),d=await V();if(i==="claude")try{let e=Bun.spawn(["claude","auth","status"],{stdout:"pipe",stderr:"pipe"}),u=await new Response(e.stdout).text();await e.exited;let r=JSON.parse(u.trim());if(!r.loggedIn||r.authMethod!=="claude.ai")return{ok:!1,message:o?"Claude \u767B\u5F55\u672A\u5B8C\u6210":"Claude login not completed"};let t=r.email||"",c=r.subscriptionType||"pro",a=`Claude ${c.charAt(0).toUpperCase()+c.slice(1)}${t?` (${t})`:""}`,{readClaudeAuth:p}=await Promise.resolve().then(() => (qn(),Qn)),l=await p(),x=l.credentials||l.oauthAccount?{credentials:l.credentials,oauthAccount:l.oauthAccount}:void 0,w=d.find((y)=>y.type==="claude-subscription"&&(y.email||"")===t);if(w)return await Xi(w.id,{authData:x}),n(w.id,"claude-subscription"),U(),T(),{ok:!0,message:o?"Claude tokens \u5DF2\u66F4\u65B0":"Claude tokens updated"};else return await eo({name:a,type:"claude-subscription",email:t,subscriptionType:c,supportedClients:di("claude-subscription"),authData:x}),U(),T(),{ok:!0,message:o?"Claude \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Claude subscription added"}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}else try{let e=await import("fs/promises"),{homedir:u}=await import("os"),{join:r}=await import("path"),t=JSON.parse(await e.readFile(r(u(),".codex","auth.json"),"utf-8"));if(t.auth_mode!=="chatgpt"||!t.tokens?.access_token)return{ok:!1,message:o?"Codex \u767B\u5F55\u672A\u5B8C\u6210":"Codex login not completed"};let c="";try{c=JSON.parse(atob(t.tokens.id_token.split(".")[1])).email||""}catch{}let a=d.find((p)=>p.type==="codex-subscription"&&(p.email||"")===c);if(a)return await Xi(a.id,{authData:t}),n(a.id,"codex-subscription"),U(),T(),{ok:!0,message:o?"Codex tokens \u5DF2\u66F4\u65B0":"Codex tokens updated"};else return await eo({name:c?`Codex Plus (${c})`:"Codex Subscription",type:"codex-subscription",email:c||void 0,supportedClients:di("codex-subscription"),authData:t}),U(),T(),{ok:!0,message:o?"Codex \u8BA2\u9605\u5DF2\u6DFB\u52A0":"Codex subscription added"}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}}async function bn(i){let o=io[i.addType]?.[i.zh?"zh":"en"]||i.addType,n=i.addCtx?Number.parseInt(i.addCtx,10):NaN;await eo({name:o,type:i.addType,apiKey:i.addKey,baseUrl:i.addUrl||Fd(i.addType),model:i.addModel||Fo(i.addType),modelContextWindow:Number.isFinite(n)&&n>0?n:void 0,supportedClients:di(i.addType)}),O("provider_added",{provider_type:i.addType,method:"manual"}),U(),T(),await Ji(i),await vi(i),i.screen="providers",i.providerRowIdx=0,i.message=i.zh?"\u5DF2\u6DFB\u52A0\u670D\u52A1\u5546":"Provider added"}async function Me(i){i.screen="client-versions",i.message="",i.clientVersionsClientIdx=Math.max(0,Math.min(i.clientVersionsClientIdx,i.clients.length-1)),await lo(i)}async function lo(i){let o=i.clients[i.clientVersionsClientIdx];if(!o)return;i.clientVersionsLoading=!0,i.clientVersionsError=void 0,i.clientVersions=[],i.clientVersionsIdx=0;try{let{listAvailableVersions:n,getInstalledVersion:d}=await Promise.resolve().then(() => (Un(),A0)),[e,u]=await Promise.all([n(o.client.package),d(o.client)]);i.clientVersions=e.map((r)=>({...r,isCurrent:r.version===u}))}catch(n){i.clientVersionsError=n instanceof Error?n.message:String(n)}finally{i.clientVersionsLoading=!1}}async function Ge(i,o){let n=i.clients[i.clientVersionsClientIdx];if(!n)return;let{installAtVersion:d}=await Promise.resolve().then(() => (Un(),A0));await d(n.client,o),i.message=i.zh?`\u5DF2\u5207\u6362\u5230 ${o}`:`Switched to ${o}`,await lo(i)}async function bd(i){let{TAKO_DIR:o}=await Promise.resolve().then(() => (C(),Nn)),{join:n}=await import("path"),d=n(o,".key-prompt.json"),e=i==="never"?{never:!0}:{dismissed:new Date().toISOString().slice(0,10)};await Bun.write(d,JSON.stringify(e))}async function x1(){let{TAKO_DIR:i,hasApiKey:o}=await Promise.resolve().then(() => (C(),Nn));if(await o())return!1;let{join:n}=await import("path"),d=n(i,".key-prompt.json"),e={};try{e=await Bun.file(d).json()}catch{e={}}if(e.never)return!1;let u=new Date().toISOString().slice(0,10);if(e.dismissed===u)return!1;return!0}var Ao=N(()=>{ai();Si();xi();fe();md();Zi();sd()});t0();Ci();bo();C();H();xi();x0();import{join as wi}from"path";function Ou(i,o){return["@echo off",'set "TAKO_WINDOWS_HANDOFF_FILE=%TEMP%\\tako-handoff-%RANDOM%-%RANDOM%.ps1"','if exist "%TAKO_WINDOWS_HANDOFF_FILE%" del "%TAKO_WINDOWS_HANDOFF_FILE%" >nul 2>nul',`"${i}" "${o}" %*`,'set "TAKO_EXIT_CODE=%ERRORLEVEL%"','if not exist "%TAKO_WINDOWS_HANDOFF_FILE%" exit /b %TAKO_EXIT_CODE%','powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%TAKO_WINDOWS_HANDOFF_FILE%"',"exit /b %ERRORLEVEL%",""].join(`\r
527
527
  `)}function Ru(i,o){return['$env:TAKO_WINDOWS_HANDOFF_FILE = Join-Path ([System.IO.Path]::GetTempPath()) ("tako-handoff-{0}-{1}.ps1" -f $PID, [System.Guid]::NewGuid().ToString("N"))',"Remove-Item -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE -Force -ErrorAction SilentlyContinue",`& "${i}" "${o}" @args`,"$code = $LASTEXITCODE","if (Test-Path -LiteralPath $env:TAKO_WINDOWS_HANDOFF_FILE) {"," powershell.exe -NoProfile -ExecutionPolicy Bypass -File $env:TAKO_WINDOWS_HANDOFF_FILE"," exit $LASTEXITCODE","}","exit $code",""].join(`\r
528
- `)}var w0="tako-cli",on="0.3.17";function rp(){return[A,"update",w0,"--latest"]}function tp(){return[A,"add",`${w0}@latest`]}function cp(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number);for(let e=0;e<3;e++){let u=n[e]||0,r=d[e]||0;if(u>r)return 1;if(u<r)return-1}return 0}async function ap(){try{let i=await ui(),o=await fetch(`${i}/${w0}/latest`,{signal:AbortSignal.timeout(5000)});if(!o.ok)return null;return(await o.json()).version||null}catch{return null}}async function pp(){let i=await ap();if(!i)return{hasUpdate:!1,currentVersion:on};return{hasUpdate:cp(i,on)>0,latestVersion:i,currentVersion:on}}async function Bu(){let i=await import("fs/promises"),o=wi(Q,"bin"),n=wi(o,"tako"),d=wi(mi,"node_modules/tako-cli/dist/index.js");if(await i.mkdir(o,{recursive:!0}),process.platform==="win32")await i.writeFile(wi(o,"tako.cmd"),Ou(A,d)),await i.writeFile(wi(o,"tako.ps1"),Ru(A,d));else{let u=`#!/bin/bash
528
+ `)}var w0="tako-cli",on="0.3.18";function rp(){return[A,"update",w0,"--latest"]}function tp(){return[A,"add",`${w0}@latest`]}function cp(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number);for(let e=0;e<3;e++){let u=n[e]||0,r=d[e]||0;if(u>r)return 1;if(u<r)return-1}return 0}async function ap(){try{let i=await ui(),o=await fetch(`${i}/${w0}/latest`,{signal:AbortSignal.timeout(5000)});if(!o.ok)return null;return(await o.json()).version||null}catch{return null}}async function pp(){let i=await ap();if(!i)return{hasUpdate:!1,currentVersion:on};return{hasUpdate:cp(i,on)>0,latestVersion:i,currentVersion:on}}async function Bu(){let i=await import("fs/promises"),o=wi(Q,"bin"),n=wi(o,"tako"),d=wi(mi,"node_modules/tako-cli/dist/index.js");if(await i.mkdir(o,{recursive:!0}),process.platform==="win32")await i.writeFile(wi(o,"tako.cmd"),Ou(A,d)),await i.writeFile(wi(o,"tako.ps1"),Ru(A,d));else{let u=`#!/bin/bash
529
529
  exec "${A}" "${d}" "$@"
530
530
  `;await i.writeFile(n,u,{mode:493})}}async function lp(i){let o=oo(),n=`\u6B63\u5728\u66F4\u65B0\u5230 v${i}`;o.start(n);try{let d=await ui(),e=await import("fs/promises");await e.mkdir(mi,{recursive:!0});let u=wi(mi,"package.json");try{await e.access(u)}catch{await e.writeFile(u,JSON.stringify({name:"tako-local",private:!0},null,2))}let r=Bun.spawn(rp(),{cwd:mi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:d}}),t=await Jn(r,n,(c)=>o.update(c));if(await r.exited,r.exitCode===0)return await Bu(),O("cli_updated",{from_version:on,to_version:i}),o.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${i}`),!0;else return o.stop(),L.warn(`\u66F4\u65B0\u5931\u8D25: ${Wo(t)}`),!1}catch(d){return o.stop(),L.warn(`\u66F4\u65B0\u5931\u8D25: ${Wo(d instanceof Error?d.message:void 0)}`),!1}}async function mp(){let i=await import("fs/promises"),o=wi(mi,"bun.lock");try{await i.unlink(o)}catch{}}async function xp(){let i=await import("fs/promises");try{let o=await ui();await i.mkdir(mi,{recursive:!0});let n=wi(mi,"package.json");try{await i.access(n)}catch{await i.writeFile(n,JSON.stringify({name:"tako-local",private:!0},null,2))}await mp();let d=Bun.spawn(tp(),{cwd:mi,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:o}});return await d.exited,d.exitCode===0}catch{return!1}}async function wp(){let i=await import("fs/promises"),o=wi(Q,"bin"),n=wi(o,"tako"),d=wi(mi,"node_modules/tako-cli/dist/index.js");try{let e=await i.readFile(n,"utf-8");if(e.includes("bun run tako-cli")||e.includes("run tako-cli")){L.info(g("updater.migrating"));let u=!1;try{await i.access(d),u=!0}catch{u=!1}if(!u){let r=oo();if(r.start(g("updater.installingLocally")),!await xp())return r.stop(g("updater.migrationFailed")),!1;r.stop(g("updater.installComplete"))}return await Bu(),!0}}catch{}return!1}async function nn(){try{if(await wp())L.info(g("updater.migrationComplete")),process.exit(0);let o=await pp();if(o.hasUpdate&&o.latestVersion){if(L.warn(g("updater.newVersionAvailable",{version:o.latestVersion,current:on})),await lp(o.latestVersion))L.info(g("updater.pleaseRestart")),process.exit(0)}}catch{}}E();dn();ai();C();An();Ci();H();xi();E();C();dn();import{writeFile as Gp}from"fs/promises";var z0="TAKO_WINDOWS_HANDOFF_FILE",k0=new Uint8Array([239,187,191]);function en(i){return`'${i.replace(/'/g,"''")}'`}function ir(i){if(i.length===0)return"@()";return`@(${i.map(en).join(", ")})`}function Sp(i){let o=new TextEncoder().encode(i),n=new Uint8Array(k0.length+o.length);return n.set(k0,0),n.set(o,k0.length),n}async function Yn(i,o){await Gp(i,Sp(Pp(o)))}function Pp(i){let[o,...n]=i.command;if(!o)throw Error("handoff command is empty");let d=["$ErrorActionPreference = 'Stop'","$scriptPath = $PSCommandPath"];for(let[u,r]of Object.entries(i.env??{})){if(r===void 0)continue;if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(u))continue;d.push(`$env:${u} = ${en(String(r))}`)}d.push(`Set-Location -LiteralPath ${en(i.cwd)}`,"$esc = [char]27",'try { [Console]::Write("$esc[2J$esc[3J$esc[H") } catch {}',`$argv = ${ir(n)}`,"$code = 0","try {",` & ${en(o)} @argv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }","} finally {"," Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue");let e=i.relaunchCommand??[];if(e.length>0){let[u,...r]=e;d.push(` $relaunchArgv = ${ir(r)}`,` & ${en(u)} @relaunchArgv`," $code = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { $code }")}return d.push("}","exit $code",""),d.join(`\r
531
531
  `)}import{join as or}from"path";async function nr(i){try{if(process.stdin.removeAllListeners(),!i&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}if(!i&&process.stdout.isTTY)try{process.stdout.write("\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1005l\x1B[?1006l\x1B[?1015l\x1B[?1049l\x1B[?2004l\x1B[0m\x1B[?25h")}catch{}await new Promise((o)=>setTimeout(o,30));try{if(process.stdin.removeAllListeners(),!i&&process.stdin.isTTY)process.stdin.setRawMode(!1);process.stdin.pause()}catch{}}async function dr(i,o){try{let n=o?.projectPath||process.cwd(),d=o?.providerContext,e=process.platform==="win32";if(!d)return{success:!1,error:"\u672A\u9009\u62E9\u670D\u52A1\u5546"};let u=await xo(i);if(!u)u=wo(i);if(!await Bun.file(u).exists()){let{execSync:l}=await import("child_process"),x=e?`where ${i.command}.exe 2>nul || where ${i.command}.cmd 2>nul || where ${i.command}`:`which ${i.command}`;try{let w=l(x,{encoding:"utf8"}).split(`
532
532
  `).map((s)=>s.trim().replace(/\r$/,"")).filter(Boolean),y=e?w.find((s)=>s.toLowerCase().endsWith(".exe"))??w.find((s)=>s.toLowerCase().endsWith(".cmd"))??w[0]:w[0];if(y)u=y;else return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}catch{return{success:!1,error:`\u627E\u4E0D\u5230 ${i.command}\uFF0C\u8BF7\u8FD0\u884C tako install ${i.id}`}}}let c={...i.getEnvVars(d),...o?.envVars??{}},a={...process.env,...c},p;if(i.runtime==="native")if(e&&u.toLowerCase().endsWith(".js"))p=[await Wi(),u];else p=[u];else p=[await Wi(),u];if(o?.args&&o.args.length>0)p=[...p,...o.args];if(e&&o?.handoffOnWindows){let l=process.env[z0];if(l)return await Yn(l,{command:p,cwd:n,env:c}),{success:!0}}if(e&&o?.relaunchTakoOnWindows){let l=process.env[z0];if(l){let x=[or(Q,"bin","tako.cmd")];return await Yn(l,{command:p,cwd:n,env:c,relaunchCommand:x}),{success:!0}}}if(e){let l=await import("fs/promises"),{tmpdir:x}=await import("os"),w=or(x(),`tako-handoff-${process.pid}-${Date.now()}.ps1`);await Yn(w,{command:p,cwd:n}),await nr(e);try{let s=await Bun.spawn(["powershell.exe","-NoProfile","-ExecutionPolicy","Bypass","-File",w],{env:a,stdio:["inherit","inherit","inherit"],cwd:n}).exited;return{success:s===0,exitCode:s}}catch(y){return await l.rm(w,{force:!0}).catch(()=>{}),{success:!1,error:y instanceof Error?y.message:"PowerShell handoff \u542F\u52A8\u5931\u8D25"}}}if(await nr(e),process.stdout.isTTY)try{process.stdout.write("\x1B[2J\x1B[3J\x1B[H")}catch{}try{Bun.spawnSync(p,{env:a,stdio:["inherit","inherit","inherit"],cwd:n})}catch{await Bun.spawn(p,{env:a,stdio:["inherit","inherit","inherit"],cwd:n}).exited}return{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:"\u542F\u52A8\u5931\u8D25"}}}M0();async function Jp(i,o){if(o?.providerContext)return o.providerContext;let n=await ei();if(n){let d=await Qi(i.id);if(d.some((u)=>u.id===n.id))return _(n);if(d.length>0)return _(d[0])}return null}async function Hn(i,o){try{let n=o?.projectPath||process.cwd();if(o?.projectPath){if(!await N0(o.projectPath))return{success:!1,error:g("launcher.directoryNotFound",{path:o.projectPath})}}let d=await Eu(i);if(!d.success)return d;let e=await Jp(i,o);if(!e)return{success:!1,error:g("launcher.apiKeyNotConfigured")};let u=[],r={};if(i.setupConfigFiles){let a=await i.setupConfigFiles(e,o?.selectedOptionIds,{forLaunch:!0});if(a&&typeof a==="object")u=a.args??[],r=a.envVars??{}}await _u(n,i.id,o?.selectedOptionIds);try{let a=(o?.selectedOptionIds??[]).filter((p)=>p.startsWith("model-"));await tr(a)}catch{}let c=(await z()).installedClients[i.id]?.version;return O("client_launched",{client_id:i.id,client_version:c,project_hash:Cu(n),is_recent_project:!!o?.projectPath}),L.info(g("launcher.starting",{client:i.name})),await dr(i,{...o,args:[...u,...o?.args??[]],envVars:{...r,...o?.envVars??{}},providerContext:e})}catch(n){return{success:!1,error:n instanceof Error?n.message:"Launch failed"}}}H();xi();import{homedir as Ap}from"os";var S={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m"};var I={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",reset:"\x1B[0m"};var q={directory:{icon:S.brightYellow,text:S.brightGreen},git:{icon:S.brightBlue,text:S.brightBlue,clean:S.brightGreen,dirty:S.brightYellow,conflict:S.brightRed},model:{icon:S.brightCyan,text:S.brightCyan},version:{icon:S.brightWhite,text:S.brightBlack},outputStyle:{icon:S.brightMagenta,text:S.brightMagenta},context:{icon:S.brightMagenta,low:S.brightGreen,medium:S.brightYellow,high:S.brightRed},todayUsage:{icon:S.brightGreen,text:S.brightGreen},separator:S.brightBlack},Oi={directory:{nerd:"\uF07B",plain:"\uD83D\uDCC1"},git:{nerd:"\uE725",plain:"\uD83C\uDF3F"},model:{nerd:"\uF11B",plain:"\uD83E\uDD16"},version:{nerd:"\uF412",plain:"\uD83D\uDCBE"},outputStyle:{nerd:"\uF12F5",plain:"\uD83C\uDFAF"},context:{nerd:"\uF0E7",plain:"\u26A1"},todayUsage:{nerd:"\uF155",plain:"\uD83D\uDCB0"},gitClean:"\u2713",gitDirty:"\u25CF",gitConflict:"\u26A0",gitAhead:"\u2191",gitBehind:"\u2193"};function Bp(){return!1}function ki(i){let o=Oi[i];if(typeof o==="string")return o;return Bp()?o.nerd:o.plain}class Tn{id="directory";render(i){let o=this.formatPath(i.workspace.current_dir),n=ki("directory");return`${q.directory.icon}${n}${I.reset} ${q.directory.text}${o}${I.reset}`}formatPath(i){let o=Ap();if(i===o)return"~";if(i.startsWith(o+"/"))return"~"+i.slice(o.length);return i}}class Xn{id="git";async render(i){let o=i.workspace.current_dir;if(!await this.isGitRepository(o))return null;let d=await this.getBranch(o);if(!d)return null;let{status:e,statusColor:u}=await this.getStatus(o),{ahead:r,behind:t}=await this.getAheadBehind(o),c=ki("git"),a=`${q.git.icon}${c}${I.reset} ${q.git.text}${d}${I.reset}`;if(a+=` ${u}${e}${I.reset}`,r>0)a+=` ${q.git.clean}${Oi.gitAhead}${r}${I.reset}`;if(t>0)a+=` ${q.git.dirty}${Oi.gitBehind}${t}${I.reset}`;return a}async isGitRepository(i){try{return await Bun.spawn(["git","rev-parse","--git-dir"],{cwd:i,stdout:"pipe",stderr:"pipe"}).exited===0}catch{return!1}}async getBranch(i){try{let o=Bun.spawn(["git","branch","--show-current"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited===0&&n.trim())return n.trim();let e=Bun.spawn(["git","rev-parse","--short","HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),u=await new Response(e.stdout).text();if(await e.exited===0&&u.trim())return`detached:${u.trim()}`;return null}catch{return null}}async getStatus(i){try{let o=Bun.spawn(["git","status","--porcelain"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text();if(await o.exited!==0)return{status:Oi.gitClean,statusColor:q.git.clean};let e=n.trim();if(!e)return{status:Oi.gitClean,statusColor:q.git.clean};if(e.includes("UU")||e.includes("AA")||e.includes("DD"))return{status:Oi.gitConflict,statusColor:q.git.conflict};return{status:Oi.gitDirty,statusColor:q.git.dirty}}catch{return{status:Oi.gitClean,statusColor:q.git.clean}}}async getAheadBehind(i){try{let o=Bun.spawn(["git","rev-list","--count","@{u}..HEAD"],{cwd:i,stdout:"pipe",stderr:"pipe"}),n=await new Response(o.stdout).text(),e=await o.exited===0?parseInt(n.trim(),10)||0:0,u=Bun.spawn(["git","rev-list","--count","HEAD..@{u}"],{cwd:i,stdout:"pipe",stderr:"pipe"}),r=await new Response(u.stdout).text(),c=await u.exited===0?parseInt(r.trim(),10)||0:0;return{ahead:e,behind:c}}catch{return{ahead:0,behind:0}}}}var Yp={"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 Kn{id="model";render(i){let o=i.model.id,n=Yp[o]||this.simplifyModelName(i.model.display_name),d=ki("model");return`${q.model.icon}${d}${I.reset} ${q.model.text}${n}${I.reset}`}simplifyModelName(i){let o=i.replace(/^Claude\s+/i,"");return o=o.replace(/-\d{8}$/,""),o}}fo();var Hp=200000;class zi{id="context";static cache=null;static CACHE_TTL=5000;async render(i){let o=await this.getTokensWithCache(i.transcript_path),d=Bd(i.model.id)?.contextWindow??Hp,e=Math.round((o??0)/d*100),u=Math.max(0,100-e),r=ki("context"),t=u<=20?S.brightRed:u<=50?S.brightYellow:S.brightGreen;return`${q.context.icon}${r}${I.reset} ${t}${u}%${I.reset}`}async getTokensWithCache(i){let o=Date.now();if(zi.cache&&zi.cache.path===i&&o-zi.cache.timestamp<zi.CACHE_TTL)return zi.cache.tokens;let n=await this.parseTranscriptTokens(i);return zi.cache={path:i,tokens:n,timestamp:o},n}async parseTranscriptTokens(i){try{let o=Bun.file(i);if(!await o.exists())return null;let n=await o.text();if(!n.trim())return null;let d=n.split(`
533
- `).filter((e)=>e.trim());for(let e=d.length-1;e>=0;e--)try{let u=JSON.parse(d[e]);if(u.type==="assistant"&&u.message?.usage){let r=u.message.usage;return(r.input_tokens||0)+(r.output_tokens||0)+(r.cache_creation_input_tokens||0)+(r.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}Vn();C();ai();class Zn{id="quota";async render(i){let o=await this.tryRenderOfficial();if(o)return o;return this.renderSessionCost(i)}async tryRenderOfficial(){try{let i=await qi("claude-code")??await ei();if(!i){let n=await Di().catch(()=>"");if(!n)return null;let d=await ro(n);return this.renderTako(d)}let o=await C0(i);if(o.status!=="ok")return null;switch(o.provider){case"tako":return this.renderTako(o);case"claude-subscription":return this.renderClaudeSub(o);case"codex-subscription":return this.renderCodexSub(o);default:return null}}catch{return null}}renderTako(i){if(i.status!=="ok")return null;if(!!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit))return this.renderSub(i);let n=i.daily??i.primary??i.secondary;if(!n)return null;let d=n.costUsed??0;return`${this.icon()} ${S.brightGreen}Day:${this.fmtCost(d)}${I.reset}`}renderSub(i){let o=(d,e,u)=>{if(d&&d>=1440)return`${Math.round(d/1440)}d`;if(d)return`${Math.round(d/60)}h`;return u?`${u}d`:`${e}h`},n=[];if(i.primary)n.push(this.remainChunk(o(i.primary.windowMinutes,5),i.primary.usedPct));if(i.secondary)n.push(this.remainChunk(o(i.secondary.windowMinutes,24,7),i.secondary.usedPct));if(i.modelLimits?.opus)n.push(this.remainChunk("opus",i.modelLimits.opus.usedPct));if(!n.length)return null;return`${this.icon()} ${n.join(`${I.dim} \xB7 ${I.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(i,o){let n=o>=90?S.brightRed:o>=70?S.brightYellow:S.brightGreen;return`${i}:${n}${o}%${I.reset}`}remainChunk(i,o){let n=Math.max(0,Math.min(100,100-Math.round(o))),d=n<=10?S.brightRed:n<=30?S.brightYellow:S.brightGreen;return`${i} \u5269 ${d}${n}%${I.reset}`}renderSessionCost(i){let o=i.cost?.total_cost_usd;if(o==null||o<=0)return null;return`${this.icon()} ${S.brightGreen}Session:${this.fmtCost(o)}${I.reset}`}icon(){return`${q.todayUsage.icon}${ki("todayUsage")}${I.reset}`}fmtCost(i){if(i>=100)return`$${Math.round(i)}`;if(i>=10)return`$${i.toFixed(1)}`;return`$${i.toFixed(2)}`}}class Q0{separator=`${q.separator} \u2502 ${I.reset}`;render(i){let o=["directory","git","model","context","quota"],n=[];for(let d of o){let e=i.get(d);if(e)n.push(e)}return n.join(this.separator)}}import{join as to,dirname as el}from"path";import{homedir as q0}from"os";import{mkdir as ul}from"fs/promises";var vr=to(q0(),".tako"),rl=to(vr,"cli"),tl=to(vr,"bin",process.platform==="win32"?"tako.cmd":"tako");function cl(){if(process.platform==="win32")return to(process.env.APPDATA||to(q0(),"AppData","Roaming"),"claude","settings.json");return to(q0(),".claude","settings.json")}var al=process.platform==="win32",pl="0.1.48";function ll(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number),e=Math.max(n.length,d.length);for(let u=0;u<e;u++){let r=n[u]||0,t=d[u]||0;if(r!==t)return r-t}return 0}async function ml(){let i=to(rl,"node_modules","tako-cli","package.json");try{let o=Bun.file(i);if(!await o.exists())return null;return(await o.json()).version||null}catch{return null}}async function xl(){let i=await ml();if(!i)return!1;return ll(i,pl)>=0}function wl(){return tl}function yl(){return`"${sl(wl())}" statusline`}function sl(i){if(al)return i.replace(/\\/g,"/");return i}async function O0(){if(!await xl())return;let o=cl(),n={};try{let u=Bun.file(o);if(await u.exists())n=await u.json()}catch{}let d={type:"command",command:yl(),padding:0},e=typeof n.statusLine==="object"&&n.statusLine!==null?n.statusLine.command:null;if(typeof e==="string"&&e.includes("tako statusline"))return;n.statusLine=d,await ul(el(o),{recursive:!0}),await Bun.write(o,JSON.stringify(n,null,2))}var fl=[new Tn,new Xn,new Kn,new zi,new Zn];async function vl(i){let o=await Promise.all(fl.map(async(e)=>{try{let u=await e.render(i);return{id:e.id,content:u}}catch{return{id:e.id,content:null}}})),n=new Map;for(let{id:e,content:u}of o)n.set(e,u);return new Q0().render(n)}async function hr(){try{let i=await Bun.stdin.json(),o=await vl(i);console.log(o)}catch{process.exit(0)}}ai();xi();async function Fn(i){let o=await Qi(i);if(o.length===0)return null;let n=await qi(i);if(n)return _(n);if(o.length===1)return _(o[0]);let d=await ei();if(d&&o.some((e)=>e.id===d.id))return _(d);return _(o[0])}async function br(){let i=await _o();if(await Uo(i)>0){for(let n of i)O("provider_added",{provider_type:n.type,method:"auto_detect"});U(),T()}}r0();An();var hl={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function En(i,o,n,d){let e=o.filter((t)=>t!==n),u=await bl(i,e,d);if(i!=="claude-code")return u?[u,...e]:e;let r=[];if(u)r.push(u);for(let t=0;t<e.length;t++){let c=e[t];if(c==="--model"&&t+1<e.length){r.push(c,vo(e[t+1])),t++;continue}if(c.startsWith("--model=")){let a=c.slice(8);r.push(`--model=${vo(a)}`);continue}r.push(c)}return r}async function bl(i,o,n){let d=hl[i];if(!d)return null;if(o.includes(d.flag))return null;return(await(n?.getLastSelectedOptionIds??Bn)(i)).includes(d.optionId)?d.flag:null}fo();Un();C();var yd="0.3.17";function Mm(){console.log(`
533
+ `).filter((e)=>e.trim());for(let e=d.length-1;e>=0;e--)try{let u=JSON.parse(d[e]);if(u.type==="assistant"&&u.message?.usage){let r=u.message.usage;return(r.input_tokens||0)+(r.output_tokens||0)+(r.cache_creation_input_tokens||0)+(r.cache_read_input_tokens||0)}}catch{continue}return null}catch{return null}}}Vn();C();ai();class Zn{id="quota";async render(i){let o=await this.tryRenderOfficial();if(o)return o;return this.renderSessionCost(i)}async tryRenderOfficial(){try{let i=await qi("claude-code")??await ei();if(!i){let n=await Di().catch(()=>"");if(!n)return null;let d=await ro(n);return this.renderTako(d)}let o=await C0(i);if(o.status!=="ok")return null;switch(o.provider){case"tako":return this.renderTako(o);case"claude-subscription":return this.renderClaudeSub(o);case"codex-subscription":return this.renderCodexSub(o);default:return null}}catch{return null}}renderTako(i){if(i.status!=="ok")return null;if(!!(i.primary?.costLimit||i.secondary?.costLimit||i.daily?.costLimit))return this.renderSub(i);let n=i.daily??i.primary??i.secondary;if(!n)return null;let d=n.costUsed??0;return`${this.icon()} ${S.brightGreen}Day:${this.fmtCost(d)}${I.reset}`}renderSub(i){let o=(d,e,u)=>{if(d&&d>=1440)return`${Math.round(d/1440)}d`;if(d)return`${Math.round(d/60)}h`;return u?`${u}d`:`${e}h`},n=[];if(i.primary)n.push(this.remainChunk(o(i.primary.windowMinutes,5),i.primary.usedPct));if(i.secondary)n.push(this.remainChunk(o(i.secondary.windowMinutes,24,7),i.secondary.usedPct));if(i.modelLimits?.opus)n.push(this.remainChunk("opus",i.modelLimits.opus.usedPct));if(!n.length)return null;return`${this.icon()} ${n.join(`${I.dim} \xB7 ${I.reset}`)}`}renderClaudeSub=this.renderSub;renderCodexSub=this.renderSub;pctChunk(i,o){let n=o>=90?S.brightRed:o>=70?S.brightYellow:S.brightGreen;return`${i}:${n}${o}%${I.reset}`}remainChunk(i,o){let n=Math.max(0,Math.min(100,100-Math.round(o))),d=n<=10?S.brightRed:n<=30?S.brightYellow:S.brightGreen;return`${i} \u5269 ${d}${n}%${I.reset}`}renderSessionCost(i){let o=i.cost?.total_cost_usd;if(o==null||o<=0)return null;return`${this.icon()} ${S.brightGreen}Session:${this.fmtCost(o)}${I.reset}`}icon(){return`${q.todayUsage.icon}${ki("todayUsage")}${I.reset}`}fmtCost(i){if(i>=100)return`$${Math.round(i)}`;if(i>=10)return`$${i.toFixed(1)}`;return`$${i.toFixed(2)}`}}class Q0{separator=`${q.separator} \u2502 ${I.reset}`;render(i){let o=["directory","git","model","context","quota"],n=[];for(let d of o){let e=i.get(d);if(e)n.push(e)}return n.join(this.separator)}}import{join as to,dirname as el}from"path";import{homedir as q0}from"os";import{mkdir as ul}from"fs/promises";var vr=to(q0(),".tako"),rl=to(vr,"cli"),tl=to(vr,"bin",process.platform==="win32"?"tako.cmd":"tako");function cl(){if(process.platform==="win32")return to(process.env.APPDATA||to(q0(),"AppData","Roaming"),"claude","settings.json");return to(q0(),".claude","settings.json")}var al=process.platform==="win32",pl="0.1.48";function ll(i,o){let n=i.split(".").map(Number),d=o.split(".").map(Number),e=Math.max(n.length,d.length);for(let u=0;u<e;u++){let r=n[u]||0,t=d[u]||0;if(r!==t)return r-t}return 0}async function ml(){let i=to(rl,"node_modules","tako-cli","package.json");try{let o=Bun.file(i);if(!await o.exists())return null;return(await o.json()).version||null}catch{return null}}async function xl(){let i=await ml();if(!i)return!1;return ll(i,pl)>=0}function wl(){return tl}function yl(){return`"${sl(wl())}" statusline`}function sl(i){if(al)return i.replace(/\\/g,"/");return i}async function O0(){if(!await xl())return;let o=cl(),n={};try{let u=Bun.file(o);if(await u.exists())n=await u.json()}catch{}let d={type:"command",command:yl(),padding:0},e=typeof n.statusLine==="object"&&n.statusLine!==null?n.statusLine.command:null;if(typeof e==="string"&&e.includes("tako statusline"))return;n.statusLine=d,await ul(el(o),{recursive:!0}),await Bun.write(o,JSON.stringify(n,null,2))}var fl=[new Tn,new Xn,new Kn,new zi,new Zn];async function vl(i){let o=await Promise.all(fl.map(async(e)=>{try{let u=await e.render(i);return{id:e.id,content:u}}catch{return{id:e.id,content:null}}})),n=new Map;for(let{id:e,content:u}of o)n.set(e,u);return new Q0().render(n)}async function hr(){try{let i=await Bun.stdin.json(),o=await vl(i);console.log(o)}catch{process.exit(0)}}ai();xi();async function Fn(i){let o=await Qi(i);if(o.length===0)return null;let n=await qi(i);if(n)return _(n);if(o.length===1)return _(o[0]);let d=await ei();if(d&&o.some((e)=>e.id===d.id))return _(d);return _(o[0])}async function br(){let i=await _o();if(await Uo(i)>0){for(let n of i)O("provider_added",{provider_type:n.type,method:"auto_detect"});U(),T()}}r0();An();var hl={"claude-code":{optionId:"skip-permissions",flag:"--dangerously-skip-permissions"},codex:{optionId:"bypass-sandbox",flag:"--dangerously-bypass-approvals-and-sandbox"}};async function En(i,o,n,d){let e=o.filter((t)=>t!==n),u=await bl(i,e,d);if(i!=="claude-code")return u?[u,...e]:e;let r=[];if(u)r.push(u);for(let t=0;t<e.length;t++){let c=e[t];if(c==="--model"&&t+1<e.length){r.push(c,vo(e[t+1])),t++;continue}if(c.startsWith("--model=")){let a=c.slice(8);r.push(`--model=${vo(a)}`);continue}r.push(c)}return r}async function bl(i,o,n){let d=hl[i];if(!d)return null;if(o.includes(d.flag))return null;return(await(n?.getLastSelectedOptionIds??Bn)(i)).includes(d.optionId)?d.flag:null}fo();Un();C();var yd="0.3.18";function Mm(){console.log(`
534
534
  ${g("cli.version",{version:yd})}
535
535
 
536
536
  ${g("cli.usage")}
package/dist/index.js CHANGED
@@ -5,9 +5,14 @@ const isOpentuiMissing = (error) => {
5
5
  return code === "ERR_MODULE_NOT_FOUND" || code === "MODULE_NOT_FOUND" || /@opentui\/core/.test(message);
6
6
  };
7
7
  const inkUrl = new URL("./index-ink.js", import.meta.url).href;
8
- try {
9
- await import(new URL("./index-opentui.js", import.meta.url).href);
10
- } catch (error) {
11
- if (!isOpentuiMissing(error)) throw error;
8
+ // Windows: OpenTUI 后端存在问题,直接使用 Ink 渲染后端
9
+ if (process.platform === "win32") {
12
10
  await import(inkUrl);
11
+ } else {
12
+ try {
13
+ await import(new URL("./index-opentui.js", import.meta.url).href);
14
+ } catch (error) {
15
+ if (!isOpentuiMissing(error)) throw error;
16
+ await import(inkUrl);
17
+ }
13
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.3.17",
3
+ "version": "0.3.18",
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",