PageSourceSearch

https://csap.ai/assets/KeysView-C_aKJw64.js

js csap.ai collected 2026-10-05 12:13:24 UTC 71,663 bytes, 85 lines download raw bytes

1import{d as Ze,r as h,c as R,w as je,G as H,u as i,I as S,A as e,y as c,C as n,D as v,z as y,k as T,F as $e,Q as De,h as ye,B as u,J as xe,H as rt,S as Pt,Y as ut,M as Fe,o as Rt,a as Ot,N as ve,U as ne,W as re,K as Ut}from"./vendor-vue-CsbjxI08.js";import{_ as F,a as Nt,k as Be,a8 as Ft,a9 as dt}from"./index-BzylLGuI.js";import{u as qt,_ as Bt}from"./AppLayout.vue_vue_type_script_setup_true_lang-DrBsXKZC.js";import{u as Je}from"./useClipboard-Wnhw-uMv.js";import{g as zt,P as Vt}from"./Pagination-9mmHDurk.js";import{k as he}from"./keys-BdYH3i83.js";import{u as Ht}from"./usage-DNK1WB7g.js";import{u as We}from"./groups-CrPp7sDp.js";import{T as jt}from"./TablePageLayout-DpiBtDhS.js";import{D as Wt}from"./DataTable-BzbTFQ9K.js";import{_ as Qe}from"./BaseDialog.vue_vue_type_script_setup_true_lang-DotL6kcS.js";import{_ as Ye}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DNXPSTcN.js";import{_ as Yt}from"./EmptyState.vue_vue_type_script_setup_true_lang-6ZHvRYTP.js";import{S as ze}from"./Select-D1r8_mRQ.js";import{_ as Qt}from"./SearchInput.vue_vue_type_script_setup_true_lang-BMGxwm7s.js";import{u as Xe}from"./vendor-i18n-5MxlSExE.js";import{_ as ct}from"./GroupBadge.vue_vue_type_script_setup_true_lang-Ct2dRncL.js";import{G as pt}from"./GroupOptionItem-X2ajWYud.js";import{m as Zt}from"./maskApiKey-ClKV8GuA.js";import"./vendor-misc-CU62nypU.js";/* empty css                                                                  */import"./LocaleSwitcher-DjXczmWf.js";/* empty css                                                                       */import"./vendor-ui-B2v8QJNu.js";import"./PlatformIcon.vue_vue_type_script_setup_true_lang-CESmnv9I.js";const Jt={class:"space-y-4"},Xt={key:0,class:"flex items-start gap-3 p-4 rounded-lg bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800"},ea={class:"text-sm font-medium text-yellow-800 dark:text-yellow-200"},ta={class:"text-sm text-yellow-700 dark:text-yellow-300 mt-1"},aa={class:"text-sm text-gray-600 dark:text-gray-400"},sa={key:1,class:"border-b border-gray-200 dark:border-dark-700"},la={class:"-mb-px flex space-x-6","aria-label":"Client"},oa=["onClick"],ia={class:"flex items-center gap-2"},na={key:2,class:"border-b border-gray-200 dark:border-dark-700"},ra={class:"-mb-px flex space-x-4","aria-label":"Tabs"},ua=["onClick"],da={class:"flex items-center gap-2"},ca={class:"space-y-4"},pa={key:0,class:"text-xs text-amber-600 dark:text-amber-400 mb-1.5 flex items-center gap-1"},ma={class:"bg-gray-900 dark:bg-dark-900 rounded-xl overflow-hidden"},_a={class:"flex items-center justify-between px-4 py-2 bg-gray-800 dark:bg-dark-800 border-b border-gray-700 dark:border-dark-700"},ga={class:"text-xs text-gray-400 font-mono"},ya=["onClick"],va={key:0,class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},ha={key:1,class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},xa={class:"p-4 text-sm font-mono text-gray-100 overflow-x-auto"},ka=["innerHTML"],ba=["textContent"],fa={key:3,class:"flex items-start gap-3 p-3 rounded-lg bg-blue-50 dark:bg-blue-900/20 border border-blue-100 dark:border-blue-800"},wa={class:"text-sm text-blue-700 dark:text-blue-300"},$a={class:"flex justify-end"},Ca=Ze({__name:"UseKeyModal",props:{show:{type:Boolean},apiKey:{},baseUrl:{},platform:{},allowMessagesDispatch:{type:Boolean},claudeCodeOnly:{type:Boolean},reclaudeProxy:{type:Boolean}},emits:["close"],setup(j,{emit:a}){const w=j,M=a,{t:g}=Xe(),{copyToClipboard:ue}=Je(),se=h(null),K=h("unix"),E=h("claude"),de=R(()=>{switch(w.platform){case"openai":return"codex";case"gemini":return"gemini";case"antigravity":return"claude";default:return"claude"}});je(()=>w.platform,()=>{K.value="unix",E.value=de.value},{immediate:!0}),je(E,()=>{K.value="unix"});const L={render(){return ye("svg",{fill:"currentColor",viewBox:"0 0 24 24",class:"w-4 h-4"},[ye("path",{d:"M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"})])}},x={render(){return ye("svg",{fill:"currentColor",viewBox:"0 0 24 24",class:"w-4 h-4"},[ye("path",{d:"M3 12V6.75l6-1.32v6.48L3 12zm17-9v8.75l-10 .15V5.21L20 3zM3 13l6 .09v6.81l-6-1.15V13zm7 .25l10 .15V21l-10-1.91v-5.84z"})])}},$={render(){return ye("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5",class:"w-4 h-4"},[ye("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 17.25V6.75A2.25 2.25 0 0 0 18.75 4.5H5.25A2.25 2.25 0 0 0 3 6.75v10.5A2.25 2.25 0 0 0 5.25 20.25Z"})])}},me={render(){return ye("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5",class:"w-4 h-4"},[ye("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09
1L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"})])}},le=R(()=>{if(!w.platform)return[];switch(w.platform){case"openai":{const d=[{id:"codex",label:g("keys.useKeyModal.cliTabs.codexCli"),icon:$},{id:"codex-ws",label:g("keys.useKeyModal.cliTabs.codexCliWs"),icon:$}];return w.allowMessagesDispatch&&d.push({id:"claude",label:g("keys.useKeyModal.cliTabs.claudeCode"),icon:$}),d.push({id:"opencode",label:g("keys.useKeyModal.cliTabs.opencode"),icon:$}),d}case"gemini":return[{id:"gemini",label:g("keys.useKeyModal.cliTabs.geminiCli"),icon:me},{id:"opencode",label:g("keys.useKeyModal.cliTabs.opencode"),icon:$}];case"antigravity":return[{id:"claude",label:g("keys.useKeyModal.cliTabs.claudeCode"),icon:$},{id:"gemini",label:g("keys.useKeyModal.cliTabs.geminiCli"),icon:me},{id:"opencode",label:g("keys.useKeyModal.cliTabs.opencode"),icon:$}];default:return[{id:"claude",label:g("keys.useKeyModal.cliTabs.claudeCode"),icon:$},{id:"opencode",label:g("keys.useKeyModal.cliTabs.opencode"),icon:$}]}}),O=R(()=>w.claudeCodeOnly||w.reclaudeProxy?le.value.filter(d=>d.id==="claude"):le.value);je(O,d=>{d.length&&!d.some(l=>l.id===E.value)&&(E.value=d[0].id)});const Ce=[{id:"unix",label:"macOS / Linux",icon:L},{id:"cmd",label:"Windows CMD",icon:x},{id:"powershell",label:"PowerShell",icon:x}],Te=[{id:"unix",label:"macOS / Linux",icon:L},{id:"windows",label:"Windows",icon:x}],ke=R(()=>E.value!=="opencode"&&!w.reclaudeProxy),Me=R(()=>ke.value?E.value==="codex"||E.value==="codex-ws"?Te:Ce:[]),Ee=R(()=>{if(w.reclaudeProxy)return g("keys.useKeyModal.reclaude.description");switch(w.platform){case"openai":return E.value==="claude"?g("keys.useKeyModal.description"):g("keys.useKeyModal.openai.description");case"gemini":return g("keys.useKeyModal.gemini.description");case"antigravity":return g("keys.useKeyModal.antigravity.description");default:return g("keys.useKeyModal.description")}}),D=R(()=>{switch(w.platform){case"openai":return E.value==="claude"?g("keys.useKeyModal.note"):K.value==="windows"?g("keys.useKeyModal.openai.noteWindows"):g("keys.useKeyModal.openai.note");case"gemini":return g("keys.useKeyModal.gemini.note");case"antigravity":return E.value==="claude"?g("keys.useKeyModal.antigravity.claudeNote"):g("keys.useKeyModal.antigravity.geminiNote");default:return g("keys.useKeyModal.note")}}),Se=R(()=>E.value!=="opencode"&&!w.reclaudeProxy),Ie=d=>d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),te=(d,l)=>`<span class="${d}">${Ie(l)}</span>`,W=d=>te("text-emerald-300",d),B=d=>te("text-sky-200",d),z=d=>te("text-slate-400",d),q=d=>te("text-amber-200",d),r=d=>te("text-slate-500",d),be=R(()=>{const d=w.baseUrl||window.location.origin,l=w.apiKey;if(w.reclaudeProxy)return oe(l);const m=d.replace(/\/v1\/?$/,"").replace(/\/+$/,""),k=Z=>{const ie=Z.replace(/\/+$/,"");return ie.endsWith("/v1")?ie:`${ie}/v1`},f=k(m),U=k(`${m}/antigravity`),Q=(()=>{const Z=`${m}/antigravity`.replace(/\/+$/,"");return Z.endsWith("/v1beta")?Z:`${Z}/v1beta`})(),Oe=(()=>{const Z=m.replace(/\/+$/,"");return Z.endsWith("/v1beta")?Z:`${Z}/v1beta`})();if(E.value==="opencode")switch(w.platform){case"anthropic":return[X("anthropic",f,l)];case"openai":return[X("openai",f,l)];case"gemini":return[X("gemini",Oe,l)];case"antigravity":return[X("antigravity-claude",U,l,"opencode.json (Claude)"),X("antigravity-gemini",Q,l,"opencode.json (Gemini)")];default:return[X("openai",f,l)]}switch(w.platform){case"openai":return E.value==="claude"?P(d,l):E.value==="codex-ws"?Re(d,l):Y(d,l);case"gemini":return[Pe(d,l)];case"antigravity":return E.value==="gemini"?[Pe(`${d}/antigravity`,l)]:P(`${d}/antigravity`,l);default:return P(d,l)}});function oe(d){return[{path:"一键安装 + 启动 (macOS / Linux)",content:`# 1. 安装 csap:写入 key 并自动接管 claude(每个窗口首次运行自动分配账号)
2curl -fsSL https://www.csap.ai/install.sh | sh -s -- --key ${d} && source ~/.zshrc
3
4# 2. 直接用原生 claude(csap 全程隐形)
5claude`,hint:g("keys.useKeyModal.reclaude.hint")}]}function P(d,l){let m,k;switch(K.value){case"unix":m="Terminal",k=`export ANTHROPIC_BASE_URL="${d}"
6export ANTHROPIC_AUTH_TOKEN="${l}"
7export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;case"cmd":m="Command Prompt",k=`set ANTHROPIC_BASE_URL=${d}
8set ANTHROPIC_AUTH_TOKEN=${l}
9set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;case"powershell":m="PowerShell",k=`$env:ANTHROPIC_BASE_URL="${d}"
10$env:ANTHROPIC_AUTH_TOKEN="${l}"
11$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;default:m="Terminal",k=""}const f=K.value==="unix"?"~/.claude/settings.json":"%userprofile%\\.claude\\settings.json",U=`{
12  "env": {
13    "ANTHROPIC_BASE_URL": "${d}",
14    "ANTHROPIC_AUTH_TOKEN": "${l}",
15    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
16    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"
17  }
18}`;return[{path:m,content:k},{path:f,content:U,hint:"VSCode Claude Code"}]}function Pe(d,l){const m="gemini-2.0-flash",k=g("keys.useKeyModal.gemini.modelComment");let f,U,Q;switch(K.value){case"unix":f="Terminal",U=`export GOOGLE_GEMINI_BASE_URL="${d}"
19export GEMINI_API_KEY="${l}"
20export GEMINI_MODEL="${m}"  # ${k}`,Q=`${W("export")} ${B("GOOGLE_GEMINI_BASE_URL")}${z("=")}${q(`"${d}"`)}
21${W("export")} ${B("GEMINI_API_KEY")}${z("=")}${q(`"${l}"`)}
22${W("export")} ${B("GEMINI_MODEL")}${z("=")}${q(`"${m}"`)}  ${r(`# ${k}`)}`;break;case"cmd":f="Command Prompt",U=`set GOOGLE_GEMINI_BASE_URL=${d}
23set GEMINI_API_KEY=${l}
24set GEMINI_MODEL=${m}`,Q=`${W("set")} ${B("GOOGLE_GEMINI_BASE_URL")}${z("=")}${q(d)}
25${W("set")} ${B("GEMINI_API_KEY")}${z("=")}${q(l)}
26${W("set")} ${B("GEMINI_MODEL")}${z("=")}${q(m)}
27${r(`REM ${k}`)}`;break;case"powershell":f="PowerShell",U=`$env:GOOGLE_GEMINI_BASE_URL="${d}"
28$env:GEMINI_API_KEY="${l}"
29$env:GEMINI_MODEL="${m}"  # ${k}`,Q=`${W("$env:")}${B("GOOGLE_GEMINI_BASE_URL")}${z("=")}${q(`"${d}"`)}
30${W("$env:")}${B("GEMINI_API_KEY")}${z("=")}${q(`"${l}"`)}
31${W("$env:")}${B("GEMINI_MODEL")}${z("=")}${q(`"${m}"`)}  ${r(`# ${k}`)}`;break;default:f="Terminal",U="",Q=""}return{path:f,content:U,highlighted:Q}}function Y(d,l){const k=K.value==="windows"?"%userprofile%\\.codex":"~/.codex",f=`model_provider = "OpenAI"
32model = "gpt-5.4"
33review_model = "gpt-5.4"
34model_reasoning_effort = "xhigh"
35disable_response_storage = true
36network_access = "enabled"
37windows_wsl_setup_acknowledged = true
38model_context_window = 1000000
39model_auto_compact_token_limit = 900000
40
41[model_providers.OpenAI]
42name = "OpenAI"
43base_url = "${d}"
44wire_api = "responses"
45requires_openai_auth = true`,U=`{
46  "OPENAI_API_KEY": "${l}"
47}`;return[{path:`${k}/config.toml`,content:f,hint:g("keys.useKeyModal.openai.configTomlHint")},{path:`${k}/auth.json`,content:U}]}function Re(d,l){const k=K.value==="windows"?"%userprofile%\\.codex":"~/.codex",f=`model_provider = "OpenAI"
48model = "gpt-5.4"
49review_model = "gpt-5.4"
50model_reasoning_effort = "xhigh"
51disable_response_storage = true
52network_access = "enabled"
53windows_wsl_setup_acknowledged = true
54model_context_window = 1000000
55model_auto_compact_token_limit = 900000
56
57[model_providers.OpenAI]
58name = "OpenAI"
59base_url = "${d}"
60wire_api = "responses"
61supports_websockets = true
62requires_openai_auth = true
63
64[features]
65responses_websockets_v2 = true`,U=`{
66  "OPENAI_API_KEY": "${l}"
67}`;return[{path:`${k}/config.toml`,content:f,hint:g("keys.useKeyModal.openai.configTomlHint")},{path:`${k}/auth.json`,content:U}]}function X(d,l,m,k){const f={[d]:{options:{baseURL:l,apiKey:m}}},U={"gpt-5.2":{name:"GPT-5.2",limit:{context:4e5,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.5":{name:"GPT-5.5",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.4":{name:"GPT-5.4",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.4-mini":{name:"GPT-5.4 Mini",limit:{context:4e5,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.3-codex-spark":{name:"GPT-5.3 Codex Spark",limit:{context:128e3,output:32e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.3-codex":{name:"GPT-5.3 Codex",limit:{context:4e5,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"codex-mini-latest":{name:"Codex Mini",limit:{context:2e5,output:1e5},options:{store:!1},variants:{low:{},medium:{},high:{}}}},Q={"gemini-2.0-flash":{name:"Gemini 2.0 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-2.5-flash":{name:"Gemini 2.5 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-2.5-pro":{name:"Gemini 2.5 Pro",limit:{context:2097152,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3-flash-preview":{name:"Gemini 3 Flash Preview",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-3-pro-preview":{name:"Gemini 3 Pro Preview",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3.1-pro-preview":{name:"Gemini 3.1 Pro Preview",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}}},Oe={"gemini-2.5-flash":{name:"Gemini 2.5 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"disable"}}},"gemini-2.5-flash-lite":{name:"Gemini 2.5 Flash Lite",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-2.5-flash-thinking":{name:"Gemini 2.5 Flash (Thinking)",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3-flash":{name:"Gemini 3 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3.1-pro-low":{name:"Gemini 3.1 Pro Low",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3.1-pro-high":{name:"Gemini 3.1 Pro High",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-2.5-flash-image":{name:"Gemini 2.5 Flash Image",limit:{context:1048576,output:65536},modalities:{input:["text","image"],output:["image"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"gemini-3.1-flash-image":{name:"Gemini 3.1 Flash Image",limit:{context:1048576,output:65536},modalities:{input:["text","image"],output:["image"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}}},Z={"claude-fable-5":{name:"Claude Fable 5",limit:{context:1e6,output:128e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"claude-opus-4-6-thinking":{name:"Claude 4.6 Opus (Thinking)",limit:{context:2e5,output:128e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}},"claude-sonnet-4-6":{name:"Claude 4.6 Sonnet",limit:{context:2e5,output:64e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{budgetTokens:24576,type:"enabled"}}}};d==="gemini"?(f[d].npm="@ai-sdk/google",f[d].models=Q):d==="anthropic"?f[d].npm="@ai-sdk/anthropic":d==="antigravity-claude"?(f[d].npm="@ai-sdk/anthropic",f[d].name="Antigravity (Claude)",f[d].models=Z):d==="antigravity-gemini"?(f[d].npm="@ai-sdk/google",f[d].name="Antigravity (Gemini)",f[d].models=Oe):d==="openai"&&(f[d].models=U);const ie=d==="openai"?{build:{options:{store:!1}},plan:{options:{store:!1}}}:void 0,Le=JSON.stringify({provider:f,...ie?{agent:ie}:{},$schema:"https://opencode.ai/config.json"},null,2);return{path:k??"opencode.json",content:Le,hint:g("keys.useKeyModal.opencode.hint")}}const fe=async(d,l)=>{await ue(d,g("keys.copied"))&&(se.value=l,setTimeout(()=>{se.value=null},2e3))};return(d,l)=>(u(),H(Qe,{show:j.show,title:j.reclaudeProxy?"":i(g)("keys.useKeyModal.title"),width:"wide",onClose:l[1]||(l[1]=m=>M("close"))},{footer:S(()=>[e("div",$a,[e("button",{onClick:l[0]||(l[0]=m=>M("close")),class:"btn btn-secondary"},n(i(g)("common.close")),1)])]),default:S(()=>[e("div",Jt,[j.platform?(u(),c($e,{key:1},[j.claudeCodeOnly&&!j.reclaudeProxy?(u(),c("div",{key:0,class:y(["flex items-start gap-3 p-4 rounded-lg",j.reclaudeProxy?"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800":"bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-800"])},[T(F,{name:"exclamationCircle",size:"md",class:y(j.reclaudeProxy?"text-red-500 flex-shrink-0 mt-0.5":"text-amber-500 flex-shrink-0 mt-0.5")},null,8,["class"]),e("p",{class:y(["text-sm",j.reclaudeProxy?"text-red-700 dark:text-red-300":"text-amber-700 dark:text-amber-300"])},n(j.reclaudeProxy?i(g)("keys.useKeyModal.reclaude.notice"):i(g)("keys.useKeyModal.claudeCodeOnlyNotice")),3)],2)):v("",!0),e("p",aa,n(Ee.value),1),O.value.length?(u(),c("div",sa,[e("nav",la,[(u(!0),c($e,null,De(O.value,m=>(u(),c("button",{key:m.id,onClick:k=>E.value=m.id,class:y(["whitespace-nowrap py-2.5 px-1 border-b-2 font-medium text-sm transition-colors",E.value===m.id?"border-primary-500 text-primary-600 dark:text-primary-400":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:text-gray-300"])},[e("span",ia,[(u(),H(rt(m.icon),{class:"w-4 h-4"})),xe(" "+n(m.label),1)])],10,oa))),128))])])):v("",!0),ke.value?(u(),c("div",na,[e("nav",ra,[(u(!0),c($e,null,De(Me.value,m=>(u(),c("button",{key:m.id,onClick:k=>K.value=m.id,class:y(["whitespace-nowrap py-2.5 px-1 border-b-2 font-medium text-sm transition-colors",K.value===m.id?"border-primary-500 text-primary-600 dark:text-primary-400":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:text-gray-300"])},[e("span",da,[(u(),H(rt(m.icon),{class:"w-4 h-4"})),xe(" "+n(m.label),1)])],10,ua))),128))])])):v("",!0),e("div",ca,[(u(!0),c($e,null,De(be.value,(m,k)=>(u(),c("div",{key:k,class:"relative"},[m.hint?(u(),c("p",pa,[T(F,{name:"exclamationCircle",size:"sm",class:"flex-shrink-0"}),xe(" "+n(m.hint),1)])):v("",!0),e("div",ma,[e("div",_a,[e("span",ga,n(m.path),1),e("button",{onClick:f=>fe(m.content,k),class:y(["flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-lg transition-colors",se.value===k?"bg-green-500/20 text-green-400":"bg-gray-700 hover:bg-gray-600 text-gray-300 hover:text-white"])},[se.value===k?(u(),c("svg",va,[...l[3]||(l[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):(u(),c("svg",ha,[...l[4]||(l[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184"},null,-1)])])),xe(" "+n(se.value===k?i(g)("keys.useKeyModal.copied"):i(g)("keys.useKeyModal.copy")),1)],10,ya)]),e("pre",xa,[m.highlighted?(u(),c("code",{key:0,innerHTML:m.highlighted},null,8,ka)):(u(),c("code",{key:1,textContent:n(m.content)},null,8,ba))])])]))),128))]),Se.value?(u(),c("div",fa,[T(F,{name:"infoCircle",size:"md",class:"text-blue-500 flex-shrink-0 mt-0.5"}),e("p",wa,n(D.value),1)])):v("",!0)],64)):(u(),c("div",Xt,[l[2]||(l[2]=e("svg",{class:"w-
675 h-5 text-yellow-500 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})],-1)),e("div",null,[e("p",ea,n(i(g)("keys.useKeyModal.noGroupTitle")),1),e("p",ta,n(i(g)("keys.useKeyModal.noGroupDescription")),1)])]))])]),_:1},8,["show","title"]))}}),Ta={key:0,class:"flex flex-wrap gap-2"},Ma={class:"font-medium text-gray-600 dark:text-gray-300"},Ea={key:0,class:"rounded bg-primary-50 px-1 py-px text-[10px] font-medium leading-tight text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Sa={class:"group/endpoint relative flex items-center gap-1.5"},Ia={class:"pointer-events-none absolute bottom-full left-1/2 z-20 mb-2 w-max max-w-[24rem] -translate-x-1/2 translate-y-1 rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-left opacity-0 shadow-[0_14px_36px_-20px_rgba(15,23,42,0.35)] ring-1 ring-slate-200/80 transition-all duration-150 group-hover/endpoint:translate-y-0 group-hover/endpoint:opacity-100 group-focus-within/endpoint:translate-y-0 group-focus-within/endpoint:opacity-100 dark:border-slate-700 dark:bg-slate-900 dark:ring-slate-700/70"},La={key:0,class:"max-w-[24rem] break-words text-xs leading-5 text-slate-600 dark:text-slate-200"},Aa=["onClick","onKeydown"],Ga=["aria-label","onClick"],Ka={key:0,class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2.2"},Da={key:1,class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},Pa=["href","title"],Ra=Ze({__name:"EndpointPopover",props:{apiBaseUrl:{},apiEndpoints:{},customEndpoints:{}},setup(j){const a=j,{t:w}=Xe(),{copyToClipboard:M}=Je(),g=h(null);let ue;const se=R(()=>{const L=[];a.apiBaseUrl&&L.push({name:w("keys.endpoints.baseUrl"),endpoint:a.apiBaseUrl,description:"",isDefault:!0});for(const x of a.apiEndpoints||[])x.base_url&&L.push({name:x.name||`${x.region||w("keys.endpoints.endpoint")} ${x.sort_order+1}`,endpoint:x.base_url,description:x.description||(x.region?`${w("keys.endpoints.region")}: ${x.region}`:""),isDefault:x.is_default});for(const x of a.customEndpoints||[])L.push({...x,isDefault:!1});return L});async function K(L){await M(L,w("keys.endpoints.copied"))&&(g.value=L,ue!==void 0&&window.clearTimeout(ue),ue=window.setTimeout(()=>{g.value===L&&(g.value=null)},1800))}function E(L){return g.value===L?w("keys.endpoints.copiedHint"):w("keys.endpoints.clickToCopy")}function de(L){return`https://www.tcptest.cn/http/${encodeURIComponent(L)}`}return Pt(()=>{ue!==void 0&&window.clearTimeout(ue)}),(L,x)=>se.value.length>0?(u(),c("div",Ta,[(u(!0),c($e,null,De(se.value,($,me)=>(u(),c("div",{key:me,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs transition-colors hover:border-primary-200 dark:border-dark-600 dark:bg-dark-800 dark:hover:border-primary-700"},[e("span",Ma,n($.name),1),$.isDefault?(u(),c("span",Ea,n(i(w)("keys.endpoints.default")),1)):v("",!0),x[5]||(x[5]=e("span",{class:"text-gray-300 dark:text-dark-500"},"|",-1)),e("div",Sa,[e("div",Ia,[$.description?(u(),c("p",La,n($.description),1)):v("",!0),e("p",{class:y(["flex items-center gap-1.5 text-[11px] leading-4 text-primary-600 dark:text-primary-300",$.description?"mt-1.5":""])},[x[0]||(x[0]=e("span",{class:"h-1.5 w-1.5 rounded-full bg-primary-500 dark:bg-primary-300"},null,-1)),xe(" "+n(E($.endpoint)),1)],2),x[1]||(x[1]=e("div",{class:"absolute left-1/2 top-full h-3 w-3 -translate-x-1/2 -translate-y-1/2 rotate-45 border-b border-r border-slate-200 bg-white dark:border-slate-700 dark:bg-slate-900"},null,-1))]),e("code",{class:"cursor-pointer font-mono text-gray-500 decoration-gray-400 decoration-dashed underline-offset-2 hover:text-primary-600 hover:underline focus:text-primary-600 focus:underline focus:outline-none dark:text-gray-400 dark:decoration-gray-500 dark:hover:text-primary-400 dark:focus:text-primary-400",role:"button",tabindex:"0",onClick:le=>K($.endpoint),onKeydown:[ut(Fe(le=>K($.endpoint),["prevent"]),["enter"]),ut(Fe(le=>K($.endpoint),["prevent"]),["space"])]},n($.endpoint),41,Aa),e("button",{type:"button",class:y(["rounded p-0.5 transition-colors",g.value===$.endpoint?"text-emerald-500 dark:text-emerald-400":"text-gray-400 hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400"]),"aria-label":E($.endpoint),onClick:le=>K($.endpoint)},[g.value===$.endpoint?(u(),c("svg",Ka,[...x[2]||(x[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):(u(),c("svg",Da,[...x[3]||(x[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"},null,-1)])]))],10,Ga),e("a",{href:de($.endpoint),target:"_blank",rel:"noopener noreferrer",class:"rounded p-0.5 text-gray-400 transition-colors hover:text-amber-500 dark:text-gray-500 dark:hover:text-amber-400",title:i(w)("keys.endpoints.speedTest")},[...x[4]||(x[4]=[e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])],8,Pa)])]))),128))])):v("",!0)}}),Oa={class:"flex flex-col gap-3"},Ua={class:"flex flex-wrap items-center gap-3"},Na={class:"flex justify-end gap-3"},Fa=["disabled","title"],qa={class:"flex items-center gap-2"},Ba={class:"code text-xs"},za=["onClick","title"],Va={class:"flex items-center gap-1.5"},Ha={class:"font-medium text-gray-900 dark:text-white"},ja={class:"group/dropdown relative"},Wa=["onClick","title"],Ya={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Qa={class:"text-xs text-gray-500 dark:text-gray-400"},Za={class:"text-sm"},Ja={class:"flex items-center gap-1.5"},Xa={class:"text-gray-500 dark:text-gray-400"},es={class:"font-medium text-gray-900 dark:text-white"},ts={class:"mt-0.5 flex items-center gap-1.5"},as={class:"text-gray-500 dark:text-gray-400"},ss={class:"font-medium text-gray-900 dark:text-white"},ls={key:0,class:"mt-1.5"},os={class:"flex items-center gap-1.5"},is={class:"text-gray-500 dark:text-gray-400"},ns={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},rs={key:0,class:"space-y-1.5 min-w-[140px]"},us={key:0},ds={class:"flex items-center justify-between text-xs"},cs={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"}
67,ps={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},ms={key:1},_s={class:"flex items-center justify-between text-xs"},gs={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},ys={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},vs={key:2},hs={class:"flex items-center justify-between text-xs"},xs={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},ks={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},bs=["onClick","title"],fs={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},ws={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},$s={key:0,class:"text-sm text-gray-500 dark:text-dark-400"},Cs={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Ts={class:"text-sm text-gray-500 dark:text-dark-400"},Ms={class:"flex items-center gap-1"},Es=["onClick"],Ss={class:"text-xs"},Is=["onClick"],Ls={class:"text-xs"},As=["onClick"],Gs={class:"text-xs"},Ks=["onClick"],Ds={class:"text-xs"},Ps=["onClick"],Rs={class:"text-xs"},Os={class:"input-label"},Us=["placeholder"],Ns={class:"input-label"},Fs={key:1,class:"text-gray-400"},qs={key:0,class:"space-y-3"},Bs={class:"flex items-center justify-between"},zs={class:"input-label mb-0"},Vs={key:0},Hs=["placeholder"],js={key:0,class:"mt-1 text-sm text-red-500"},Ws={key:1,class:"input-hint"},Ys={key:1},Qs={class:"input-label"},Zs={class:"space-y-3"},Js={class:"flex items-center justify-between"},Xs={class:"input-label mb-0"},el={key:0,class:"space-y-4 pt-2"},tl={class:"input-label"},al=["placeholder"],sl={class:"input-hint"},ll={class:"input-label"},ol=["placeholder"],il={class:"input-hint"},nl={class:"space-y-3"},rl={class:"input-label"},ul={class:"space-y-4"},dl={class:"relative"},cl=["placeholder"],pl={class:"input-hint"},ml={key:0},_l={class:"input-label"},gl={class:"flex items-center gap-2"},yl={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700"},vl={class:"font-medium text-gray-900 dark:text-white"},hl={class:"text-gray-500 dark:text-gray-400"},xl=["title"],kl={class:"space-y-3"},bl={class:"flex items-center justify-between"},fl={class:"input-label mb-0"},wl={key:0,class:"space-y-4 pt-2"},$l={class:"input-hint -mt-2"},Cl={class:"input-label"},Tl={class:"relative"},Ml={key:0,class:"mt-2"},El={class:"flex items-center gap-2"},Sl={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},Il={class:"text-gray-500 dark:text-gray-400"},Ll={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},Al={class:"input-label"},Gl={class:"relative"},Kl={key:0,class:"mt-2"},Dl={class:"flex items-center gap-2"},Pl={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},Rl={class:"text-gray-500 dark:text-gray-400"},Ol={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},Ul={class:"input-label"},Nl={class:"relative"},Fl={key:0,class:"mt-2"},ql={class:"flex items-center gap-2"},Bl={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},zl={class:"text-gray-500 dark:text-gray-400"},Vl={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},Hl={key:0},jl={class:"space-y-3"},Wl={class:"flex items-center justify-between"},Yl={class:"input-label mb-0"},Ql={key:0,class:"space-y-4 pt-2"},Zl={class:"flex flex-wrap gap-2"},Jl=["onClick"],Xl={class:"input-label"},eo={class:"input-hint"},to={key:0,class:"text-sm"},ao={class:"text-gray-500 dark:text-gray-400"},so={class:"font-medium text-gray-900 dark:text-white"},lo={class:"flex justify-end gap-3"},oo=["disabled"],io={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},no={class:"space-y-4"},ro={class:"text-sm text-gray-600 dark:text-gray-400"},uo={class:"grid grid-cols-2 gap-3"},co={class:"font-medium text-gray-900 dark:text-white"},po={class:"text-xs text-gray-500 dark:text-gray-400"},mo={class:"font-medium text-gray-900 dark:text-white"},_o={class:"text-xs text-gray-500 dark:text-gray-400"},go={class:"flex justify-end"},yo={class:"border-b border-gray-100 p-2 dark:border-dark-700"},vo={class:"relative"},ho=["placeholder"],xo={class:"max-h-80 overflow-y-auto p-1.5"},ko=["onClick","title"],bo={key:0,class:"py-4 text-center text-sm text-gray-400 dark:text-gray-500"},jo=Ze({__name:"KeysView",setup(j){const{t:a}=Xe(),w=o=>{const t=new Date(o),p=b=>b.toString().padStart(2,"0");return`${t.getFullYear()}-${p(t.getMonth()+1)}-${p(t.getDate())}T${p(t.getHours())}:${p(t.getMinutes())}`},M=Nt(),g=qt(),{copyToClipboard:ue}=Je(),se=R(()=>[{key:"name",label:a("common.name"),sortable:!0},{key:"key",label:a("keys.apiKey"),sortable:!1},{key:"group",label:a("keys.group"),sortable:!1},{key:"usage",label:a("keys.usage"),sortable:!1},{key:"rate_limit",label:a("keys.rateLimitColumn"),sortable:!1},{key:"expires_at",label:a("keys.expiresAt"),sortable:!0},{key:"status",label:a("common.status"),sortable:!0},{key:"last_used_at",label:a("keys.lastUsedAt"),sortable:!0},{key:"created_at",label:a("keys.created"),sortable:!0},{key:"actions",label:a("common.actions"),sortable:!1}]),K=h([]),E=h([]),de=h(!1),L=h(!1),x=h(new Date);let $=null;const me=h({}),le=h({}),O=h({page:1,page_size:zt(),total:0,pages:0}),Ce=h({sort_by:"created_at",sort_order:"desc"}),Te=h(""),ke=h(""),Me=h(""),Ee=h(!1),D=h(!1),Se=h(!1),Ie=h(!1),te=h(!1),W=h(!1),B=h(!1),z=h(!1),q=h(null),r=h(null),be=h(null),oe=h(null),P=h(null),Pe=h(null),Y=h(null),Re=h(new Map);let X=null;const fe=R(()=>oe.value===null?null:K.value.find(o=>o.id===oe.value)||null),d=(o,t)=>{t instanceof HTMLElement?Re.value.set(o,t):Re.value.delete(o)}
67,l=h({name:"",group_id:null,status:"active",use_custom_key:!1,custom_key:"",enable_ip_restriction:!1,ip_whitelist:"",ip_blacklist:"",enable_quota:!1,quota:null,enable_rate_limit:!1,rate_limit_5h:null,rate_limit_1d:null,rate_limit_7d:null,enable_expiration:!1,expiration_preset:"30",expiration_date:""}),m=R(()=>{if(!l.value.use_custom_key||!l.value.custom_key)return"";const o=l.value.custom_key;return o.length<16?a("keys.customKeyTooShort"):/^[a-zA-Z0-9_-]+$/.test(o)?"":a("keys.customKeyInvalidChars")}),k=R(()=>[{value:"active",label:a("common.active")},{value:"inactive",label:a("common.inactive")}]),f=R(()=>[{value:"",label:a("keys.allGroups")},{value:0,label:a("keys.noGroup")},...E.value.map(o=>({value:o.id,label:o.name}))]),U=R(()=>[{value:"",label:a("keys.allStatus")},{value:"active",label:a("keys.status.active")},{value:"inactive",label:a("keys.status.inactive")},{value:"quota_exhausted",label:a("keys.status.quota_exhausted")},{value:"expired",label:a("keys.status.expired")}]),Q=()=>{O.value.page=1,ae()},Oe=o=>{Me.value=o,Q()},Z=o=>{ke.value=o,Q()},ie=R(()=>E.value.map(o=>({value:o.id,label:o.name,description:o.description,rate:o.rate_multiplier,userRate:le.value[o.id]??null,subscriptionType:o.subscription_type,platform:o.platform}))),Le=h(""),et=R(()=>{const o=Le.value.trim().toLowerCase();return o?ie.value.filter(t=>t.label.toLowerCase().includes(o)||t.description&&t.description.toLowerCase().includes(o)):ie.value}),mt=async(o,t)=>{await ue(o,a("keys.copied"))&&(be.value=t,setTimeout(()=>{be.value=null},800))},tt=o=>{if(!o||typeof o!="object")return!1;const{name:t,code:p}=o;return t==="AbortError"||p==="ERR_CANCELED"},ae=async()=>{X==null||X.abort();const o=new AbortController;X=o;const{signal:t}=o;de.value=!0;try{const p={};Te.value&&(p.search=Te.value),ke.value&&(p.status=ke.value),Me.value!==""&&(p.group_id=Me.value),p.sort_by=Ce.value.sort_by,p.sort_order=Ce.value.sort_order;const b=await he.list(O.value.page,O.value.page_size,p,{signal:t});if(t.aborted)return;if(K.value=b.items,O.value.total=b.total,O.value.pages=b.pages,b.items.length>0){const A=b.items.map(G=>G.id);try{const G=await Ht.getDashboardApiKeysUsage(A,{signal:t});if(t.aborted)return;me.value=G.stats}catch(G){tt(G)||console.error("Failed to load usage stats:",G)}}}catch(p){if(tt(p))return;M.showError(a("keys.failedToLoad"))}finally{X===o&&(de.value=!1)}},_t=async()=>{try{E.value=await We.getAvailable()}catch(o){console.error("Failed to load groups:",o)}},gt=async()=>{try{le.value=await We.getUserGroupRates()}catch(o){console.error("Failed to load user group rates:",o)}},yt=async()=>{try{P.value=await Ft.getPublicSettings()}catch(o){console.error("Failed to load public settings:",o)}},vt=async o=>{if(r.value=o,B.value=!1,o.group_id)try{B.value=await We.isReClaude(o.group_id)}catch{B.value=!1}W.value=!0},ht=()=>{W.value=!1,r.value=null},xt=o=>{O.value.page=o,ae()},kt=o=>{O.value.page_size=o,O.value.page=1,ae()},bt=(o,t)=>{Ce.value.sort_by=o,Ce.value.sort_order=t,O.value.page=1,ae()},ft=o=>{var b,A;r.value=o;const t=((b=o.ip_whitelist)==null?void 0:b.length)>0||((A=o.ip_blacklist)==null?void 0:A.length)>0,p=!!o.expires_at;l.value={name:o.name,group_id:o.group_id,status:o.status==="quota_exhausted"||o.status==="expired"?"inactive":o.status,use_custom_key:!1,custom_key:"",enable_ip_restriction:t,ip_whitelist:(o.ip_whitelist||[]).join(`
68`),ip_blacklist:(o.ip_blacklist||[]).join(`
69`),enable_quota:o.quota>0,quota:o.quota>0?o.quota:null,enable_rate_limit:o.rate_limit_5h>0||o.rate_limit_1d>0||o.rate_limit_7d>0,rate_limit_5h:o.rate_limit_5h||null,rate_limit_1d:o.rate_limit_1d||null,rate_limit_7d:o.rate_limit_7d||null,enable_expiration:p,expiration_preset:"custom",expiration_date:o.expires_at?w(o.expires_at):""},D.value=!0},wt=async o=>{const t=o.status==="active"?"inactive":"active";try{await he.toggleStatus(o.id,t),M.showSuccess(a(t==="active"?"keys.keyEnabledSuccess":"keys.keyDisabledSuccess")),ae()}catch{M.showError(a("keys.failedToUpdateStatus"))}},$t=o=>{if(oe.value===o.id)oe.value=null,Y.value=null;else{const t=Re.value.get(o.id);if(t){const p=t.getBoundingClientRect(),b=400,A=window.innerHeight-p.bottom,G=p.top;A<b&&G>A?Y.value={bottom:window.innerHeight-p.top+4,left:p.left}:Y.value={top:p.bottom+4,left:p.left}}oe.value=o.id,Le.value=""}},Ct=async(o,t)=>{if(oe.value=null,Y.value=null,o.group_id!==t)try{await he.update(o.id,{group_id:t}),M.showSuccess(a("keys.groupChangedSuccess")),ae()}catch{M.showError(a("keys.failedToChangeGroup"))}},at=o=>{var p;const t=o.target;!t.closest(".group\\/dropdown")&&!((p=Pe.value)!=null&&p.contains(t))&&(oe.value=null,Y.value=null)},Tt=o=>{r.value=o,Se.value=!0},Mt=async()=>{var we,Ge;if(l.value.group_id===null){M.showError(a("keys.groupRequired"));return}if(!D.value&&l.value.use_custom_key){if(!l.value.custom_key){M.showError(a("keys.customKeyRequired"));return}if(m.value){M.showError(m.value);return}}const o=ee=>ee.split(`
70`).map(J=>J.trim()).filter(J=>J.length>0),t=l.value.enable_ip_restriction?o(l.value.ip_whitelist):[],p=l.value.enable_ip_restriction?o(l.value.ip_blacklist):[],b=l.value.quota&&l.value.quota>0?l.value.quota:0;let A,G;if(l.value.enable_expiration&&l.value.expiration_date)if(D.value)G=new Date(l.value.expiration_date).toISOString();else{const ee=new Date(l.value.expiration_date),J=new Date,_e=Math.ceil((ee.getTime()-J.getTime())/(1e3*60*60*24));A=_e>0?_e:1}else D.value&&(G="");const ce=l.value.enable_rate_limit?{rate_limit_5h:l.value.rate_limit_5h&&l.value.rate_limit_5h>0?l.value.rate_limit_5h:0,rate_limit_1d:l.value.rate_limit_1d&&l.value.rate_limit_1d>0?l.value.rate_limit_1d:0,rate_limit_7d:l.value.rate_limit_7d&&l.value.rate_limit_7d>0?l.value.rate_limit_7d:0}:{rate_limit_5h:0,rate_limit_1d:0,rate_limit_7d:0};L.value=!0;try{if(D.value&&r.value)await he.update(r.value.id,{name:l.value.name,group_id:l.value.group_id,status:l.value.status,ip_whitelist:t,ip_blacklist:p,quota:b,expires_at:G,rate_limit_5h:ce.rate_limit_5h,rate_limit_1d:ce.rate_limit_1d,rate_limit_7d:ce.rate_limit_7d}),M.showSuccess(a("keys.keyUpdatedSuccess"));else{const ee=l.value.use_custom_key?l.value.custom_key:void 0;await he.create(l.value.name,l.value.group_id,ee,t,p,b,A,ce),M.showSuccess(a("keys.keyCreatedSuccess")),g.isCurrentStep('[data-tour="key-form-submit"]')&&g.nextStep(500)}Ve(),ae()}catch(ee){const J=((Ge=(we=ee.response)==null?void 0:we.data)==null?void 0:Ge.detail)||a("keys.failedToSave");M.showError(J)}finally{L.value=!1}},Et=async()=>
70{if(r.value)try{await he.delete(r.value.id),M.showSuccess(a("keys.keyDeletedSuccess")),Se.value=!1,ae()}catch(o){const t=(o==null?void 0:o.message)||a("keys.failedToDelete");M.showError(t)}},Ve=()=>{Ee.value=!1,D.value=!1,r.value=null,l.value={name:"",group_id:null,status:"active",use_custom_key:!1,custom_key:"",enable_ip_restriction:!1,ip_whitelist:"",ip_blacklist:"",enable_quota:!1,quota:null,enable_rate_limit:!1,rate_limit_5h:null,rate_limit_1d:null,rate_limit_7d:null,enable_expiration:!1,expiration_preset:"30",expiration_date:""}},St=()=>{Ie.value=!0},It=o=>{l.value.expiration_preset=o.toString();const t=new Date;t.setDate(t.getDate()+o),l.value.expiration_date=w(t.toISOString())},Lt=async()=>{var o,t;if(r.value){Ie.value=!1;try{await he.update(r.value.id,{reset_quota:!0}),M.showSuccess(a("keys.quotaResetSuccess")),r.value&&(r.value.quota_used=0)}catch(p){const b=((t=(o=p.response)==null?void 0:o.data)==null?void 0:t.detail)||a("keys.failedToResetQuota");M.showError(b)}}},At=()=>{te.value=!0},Gt=o=>{r.value=o,te.value=!0},Kt=async()=>{var o,t;if(r.value){te.value=!1;try{await he.update(r.value.id,{reset_rate_limit_usage:!0}),M.showSuccess(a("keys.rateLimitResetSuccess")),await ae();const p=K.value.find(b=>b.id===r.value.id);p&&(r.value=p)}catch(p){const b=((t=(o=p.response)==null?void 0:o.data)==null?void 0:t.detail)||a("keys.failedToResetRateLimit");M.showError(b)}}},Dt=o=>{var p;const t=((p=o.group)==null?void 0:p.platform)||"anthropic";if(t==="antigravity"){q.value=o,z.value=!0;return}st(o,t==="gemini"?"gemini":"claude")},st=(o,t)=>{var J,_e,Ue;const p=((J=P.value)==null?void 0:J.api_base_url)||window.location.origin,b=((_e=o.group)==null?void 0:_e.platform)||"anthropic";let A,G;if(b==="antigravity")A=t==="gemini"?"gemini":"claude",G=`${p}/antigravity`;else switch(b){case"openai":A="codex",G=p;break;case"gemini":A="gemini",G=p;break;default:A="claude",G=p}const ce=`({
71    request: {
72      url: "{{baseUrl}}/v1/usage",
73      method: "GET",
74      headers: { "Authorization": "Bearer {{apiKey}}" }
75    },
76    extractor: function(response) {
77      const remaining = response?.remaining ?? response?.quota?.remaining ?? response?.balance;
78      const unit = response?.unit ?? response?.quota?.unit ?? "USD";
79      return {
80        isValid: response?.is_active ?? response?.isValid ?? true,
81        remaining,
82        unit
83      };
84    }
85  })`,we=(((Ue=P.value)==null?void 0:Ue.site_name)||dt).trim()||dt,ee=`ccswitch://v1/import?${new URLSearchParams({resource:"provider",app:A,name:we,homepage:p,endpoint:G,apiKey:o.key,configFormat:"json",usageEnabled:"true",usageScript:btoa(ce),usageAutoInterval:"30"}).toString()}`;try{window.open(ee,"_self"),setTimeout(()=>{document.hasFocus()&&M.showError(a("keys.ccSwitchNotInstalled"))},100)}catch{M.showError(a("keys.ccSwitchNotInstalled"))}},lt=o=>{q.value&&st(q.value,o),z.value=!1,q.value=null},ot=()=>{z.value=!1,q.value=null};function Ae(o){if(!o)return"";const t=new Date(o).getTime()-x.value.getTime();if(t<=0)return a("keys.resetNow");const p=Math.floor(t/864e5),b=Math.floor(t%864e5/36e5),A=Math.floor(t%36e5/6e4);return p>0?`${p}d ${b}h`:b>0?`${b}h ${A}m`:`${A}m`}return Rt(()=>{ae(),_t(),gt(),yt(),document.addEventListener("click",at),$=setInterval(()=>{x.value=new Date},6e4)}),Ot(()=>{document.removeEventListener("click",at),$&&clearInterval($)}),(o,t)=>(u(),H(Bt,null,{default:S(()=>{var p,b,A,G,ce,we,Ge,ee,J,_e,Ue,He,it,nt;return[T(jt,null,{filters:S(()=>{var s,C,I,N,V,pe,ge,Ke,Ne,_;return[e("div",Oa,[e("div",Ua,[T(Qt,{modelValue:Te.value,"onUpdate:modelValue":t[0]||(t[0]=qe=>Te.value=qe),placeholder:i(a)("keys.searchPlaceholder"),class:"w-full sm:w-64",onSearch:Q},null,8,["modelValue","placeholder"]),T(ze,{"model-value":Me.value,class:"w-40",options:f.value,"onUpdate:modelValue":Oe},null,8,["model-value","options"]),T(ze,{"model-value":ke.value,class:"w-40",options:U.value,"onUpdate:modelValue":Z},null,8,["model-value","options"])]),(s=P.value)!=null&&s.public_api_base_url||(C=P.value)!=null&&C.api_base_url||(((N=(I=P.value)==null?void 0:I.api_endpoints)==null?void 0:N.length)??0)>0||(((pe=(V=P.value)==null?void 0:V.custom_endpoints)==null?void 0:pe.length)??0)>0?(u(),H(Ra,{key:0,"api-base-url":((ge=P.value)==null?void 0:ge.public_api_base_url)||((Ke=P.value)==null?void 0:Ke.api_base_url)||"","a
85pi-endpoints":((Ne=P.value)==null?void 0:Ne.api_endpoints)||[],"custom-endpoints":((_=P.value)==null?void 0:_.custom_endpoints)||[]},null,8,["api-base-url","api-endpoints","custom-endpoints"])):v("",!0)])]}),actions:S(()=>[e("div",Na,[e("button",{onClick:ae,disabled:de.value,class:"btn btn-secondary",title:i(a)("common.refresh")},[T(F,{name:"refresh",size:"md",class:y(de.value?"animate-spin":"")},null,8,["class"])],8,Fa),e("button",{onClick:t[1]||(t[1]=s=>Ee.value=!0),class:"btn btn-primary","data-tour":"keys-create-btn"},[T(F,{name:"plus",size:"md",class:"mr-2"}),xe(" "+n(i(a)("keys.createKey")),1)])])]),table:S(()=>[T(Wt,{columns:se.value,data:K.value,loading:de.value,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc",onSort:bt},{"cell-key":S(({value:s,row:C})=>[e("div",qa,[e("code",Ba,n(i(Zt)(s)),1),e("button",{onClick:I=>mt(s,C.id),class:y(["rounded-lg p-1 transition-colors hover:bg-gray-100 dark:hover:bg-dark-700",be.value===C.id?"text-green-500":"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"]),title:be.value===C.id?i(a)("keys.copied"):i(a)("keys.copyToClipboard")},[be.value===C.id?(u(),H(F,{key:0,name:"check",size:"sm","stroke-width":2})):(u(),H(F,{key:1,name:"clipboard",size:"sm"}))],10,za)])]),"cell-name":S(({value:s,row:C})=>{var I,N;return[e("div",Va,[e("span",Ha,n(s),1),((I=C.ip_whitelist)==null?void 0:I.length)>0||((N=C.ip_blacklist)==null?void 0:N.length)>0?(u(),H(F,{key:0,name:"shield",size:"sm",class:"text-blue-500",title:i(a)("keys.ipRestrictionEnabled")},null,8,["title"])):v("",!0)])]}),"cell-group":S(({row:s})=>[e("div",ja,[e("button",{ref:C=>d(s.id,C),onClick:C=>$t(s),class:"-mx-2 -my-1 flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 transition-all duration-200 hover:bg-gray-100 dark:hover:bg-dark-700",title:i(a)("keys.clickToChangeGroup")},[s.group?(u(),H(ct,{key:0,name:s.group.name,platform:s.group.platform,"subscription-type":s.group.subscription_type,"rate-multiplier":s.group.rate_multiplier,"user-rate-multiplier":le.value[s.group.id]},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier"])):(u(),c("span",Ya,n(i(a)("keys.noGroup")),1)),e("span",Qa,n(i(a)("keys.selectGroup")),1),t[26]||(t[26]=e("svg",{class:"h-3.5 w-3.5 text-gray-400 opacity-60 transition-opacity group-hover/dropdown:opacity-100",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 15L12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"})],-1))],8,Wa)])]),"cell-usage":S(({row:s})=>{var C,I,N,V;return[e("div",Za,[e("div",Ja,[e("span",Xa,n(i(a)("keys.today"))+":",1),e("span",es," $"+n((((C=me.value[s.id])==null?void 0:C.today_actual_cost)??0).toFixed(4)),1)]),e("div",ts,[e("span",as,n(i(a)("keys.total"))+":",1),e("span",ss," $"+n((((I=me.value[s.id])==null?void 0:I.total_actual_cost)??0).toFixed(4)),1)]),s.quota>0?(u(),c("div",ls,[e("div",os,[e("span",is,n(i(a)("keys.quota"))+":",1),e("span",{class:y(["font-medium",s.quota_used>=s.quota?"text-red-500":s.quota_used>=s.quota*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((N=s.quota_used)==null?void 0:N.toFixed(2))||"0.00")+" / $"+n((V=s.quota)==null?void 0:V.toFixed(2)),3)]),e("div",ns,[e("div",{class:y(["h-full rounded-full transition-all",s.quota_used>=s.quota?"bg-red-500":s.quota_used>=s.quota*.8?"bg-yellow-500":"bg-primary-500"]),style:ve({width:Math.min(s.quota_used/s.quota*100,100)+"%"})},null,6)])])):v("",!0)])]}),"cell-rate_limit":S(({row:s})=>{var C,I,N,V,pe,ge;return[s.rate_limit_5h>0||s.rate_limit_1d>0||s.rate_limit_7d>0?(u(),c("div",rs,[s.rate_limit_5h>0?(u(),c("div",us,[e("div",ds,[t[27]||(t[27]=e("span",{class:"text-gray-500 dark:text-gray-400"},"5h",-1)),e("span",{class:y(["font-medium tabular-nums",s.usage_5h>=s.rate_limit_5h?"text-red-500":s.usage_5h>=s.rate_limit_5h*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((C=s.usage_5h)==null?void 0:C.toFixed(2))||"0.00")+"/$"+n((I=s.rate_limit_5h)==null?void 0:I.toFixed(2)),3)]),e("div",cs,[e("div",{class:y(["h-full rounded-full transition-all",s.usage_5h>=s.rate_limit_5h?"bg-red-500":s.usage_5h>=s.rate_limit_5h*.8?"bg-yellow-500":"bg-emerald-500"]),style:ve({width:Math.min(s.usage_5h/s.rate_limit_5h*100,100)+"%"})},null,6)]),s.reset_5h_at&&Ae(s.reset_5h_at)?(u(),c("div",ps," ⟳ "+n(Ae(s.reset_5h_at)),1)):v("",!0)])):v("",!0),s.rate_limit_1d>0?(u(),c("div",ms,[e("div",_s,[t[28]||(t[28]=e("span",{class:"text-gray-500 dark:text-gray-400"},"1d",-1)),e("span",{class:y(["font-medium tabular-nums",s.usage_1d>=s.rate_limit_1d?"text-red-500":s.usage_1d>=s.rate_limit_1d*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((N=s.usage_1d)==null?void 0:N.toFixed(2))||"0.00")+"/$"+n((V=s.rate_limit_1d)==null?void 0:V.toFixed(2)),3)]),e("div",gs,[e("div",{class:y(["h-full rounded-full transition-all",s.usage_1d>=s.rate_limit_1d?"bg-red-500":s.usage_1d>=s.rate_limit_1d*.8?"bg-yellow-500":"bg-emerald-500"]),style:ve({width:Math.min(s.usage_1d/s.rate_limit_1d*100,100)+"%"})},null,6)]),s.reset_1d_at&&Ae(s.reset_1d_at)?(u(),c("div",ys," ⟳ "+n(Ae(s.reset_1d_at)),1)):v("",!0)])):v("",!0),s.rate_limit_7d>0?(u(),c("div",vs,[e("div",hs,[t[29]||(t[29]=e("span",{class:"text-gray-500 dark:text-gray-400"},"7d",-1)),e("span",{class:y(["font-medium tabular-nums",s.usage_7d>=s.rate_limit_7d?"text-red-500":s.usage_7d>=s.rate_limit_7d*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((pe=s.usage_7d)==null?void 0:pe.toFixed(2))||"0.00")+"/$"+n((ge=s.rate_limit_7d)==null?void 0:ge.toFixed(2)),3)]),e("div",xs,[e("div",{class:y(["h-full rounded-full transition-all",s.usage_7d>=s.rate_limit_7d?"bg-red-500":s.usage_7d>=s.rate_limit_7d*.8?"bg-yellow-500":"bg-emerald-500"]),style:ve({width:Math.min(s.usage_7d/s.rate_limit_7d*100,100)+"%"})},null,6)]),s.reset_7d_at&&Ae(s.reset_7d_at)?(u(),c("div",ks," ⟳ "+n(Ae(s.reset_7d_at)),1)):v("",!0)])):v("",!0),s.usage_5h>0||s.usage_1d>0||s.usage_7d>0?(u(),c("button",{key:3,onClick:Fe(Ke=>Gt(s),["stop"]),class:"mt-0.5 inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400",title:i(a)("keys.resetRateLimitUsage")},[T(F,{name:"refresh",size:"xs"}),xe(" "+n(i(a)("keys.resetUsage")),1)],8,bs)):v("",!0)])):(u(),c("span",fs,"-"))]}),"cell-expires_at":S(({value:s})=>[s?(u(),c("span",{key:0,class:y(["text-sm",new Date(s)<new Date?"text-red-500 dark:text-red-400":"text-gray-500 dark:text-dark-400"])},n(i(Be)(s)),3)):(u(),c("span",ws,n(i(a)("keys.noExpiration")),1))]),"cell-status":S(({value:s})=>[e("span",{class:y(["badge",s==="active"?"badge-success":s==="quota_exhausted"?"badge-warning":s==="expired"?"badge-danger":"badge-gray"])},n(i(a)("keys.status."+s)),3)]),"cell-last_used_at":S(({value:s})=>[s?(u(),c("span",$s,n(i(Be)(s)),1)):(u(),c("span",Cs,"-"))]),"cell-created_at":S(({value:s})=>[e("span",Ts,n(i(Be)(s)),1)]),"cell-actions":S(({row:s})=>{var C;return[e("div",Ms,[e("button",{onClick:I=>vt(s),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-green-50 hover:text-green-600 dark:hover:bg-green-900/20 dark:hover:text-green-400"},[T(F,{name:"terminal",size:"sm"}),e("span",Ss,n(i(a)("keys.useKey")),1)],8,Es),(C=P.value)!=null&&C.hide_ccs_import_button?v("",!0):(u(),c("button",{key:0,onClick:I=>Dt(s),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-blue-50 hover:text-blue-600 dar
85k:hover:bg-blue-900/20 dark:hover:text-blue-400"},[T(F,{name:"upload",size:"sm"}),e("span",Ls,n(i(a)("keys.importToCcSwitch")),1)],8,Is)),e("button",{onClick:I=>wt(s),class:y(["flex flex-col items-center gap-0.5 rounded-lg p-1.5 transition-colors",s.status==="active"?"text-gray-500 hover:bg-yellow-50 hover:text-yellow-600 dark:hover:bg-yellow-900/20 dark:hover:text-yellow-400":"text-gray-500 hover:bg-green-50 hover:text-green-600 dark:hover:bg-green-900/20 dark:hover:text-green-400"])},[s.status==="active"?(u(),H(F,{key:0,name:"ban",size:"sm"})):(u(),H(F,{key:1,name:"checkCircle",size:"sm"})),e("span",Gs,n(s.status==="active"?i(a)("keys.disable"):i(a)("keys.enable")),1)],10,As),e("button",{onClick:I=>ft(s),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400"},[T(F,{name:"edit",size:"sm"}),e("span",Ds,n(i(a)("common.edit")),1)],8,Ks),e("button",{onClick:I=>Tt(s),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20 dark:hover:text-red-400"},[T(F,{name:"trash",size:"sm"}),e("span",Rs,n(i(a)("common.delete")),1)],8,Ps)])]}),empty:S(()=>[T(Yt,{title:i(a)("keys.noKeysYet"),description:i(a)("keys.createFirstKey"),"action-text":i(a)("keys.createKey"),onAction:t[2]||(t[2]=s=>Ee.value=!0)},null,8,["title","description","action-text"])]),_:1},8,["columns","data","loading"])]),pagination:S(()=>[O.value.total>0?(u(),H(Vt,{key:0,page:O.value.page,total:O.value.total,"page-size":O.value.page_size,"onUpdate:page":xt,"onUpdate:pageSize":kt},null,8,["page","total","page-size"])):v("",!0)]),_:1}),T(Qe,{show:Ee.value||D.value,title:D.value?i(a)("keys.editKey"):i(a)("keys.createKey"),width:"normal",onClose:Ve},{footer:S(()=>[e("div",lo,[e("button",{onClick:Ve,type:"button",class:"btn btn-secondary"},n(i(a)("common.cancel")),1),e("button",{form:"key-form",type:"submit",disabled:L.value,class:"btn btn-primary","data-tour":"key-form-submit"},[L.value?(u(),c("svg",io,[...t[38]||(t[38]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):v("",!0),xe(" "+n(L.value?i(a)("keys.saving"):D.value?i(a)("common.update"):i(a)("common.create")),1)],8,oo)])]),default:S(()=>{var s,C,I,N,V,pe,ge,Ke,Ne;return[e("form",{id:"key-form",onSubmit:Fe(Mt,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",Os,n(i(a)("keys.nameLabel")),1),ne(e("input",{"onUpdate:modelValue":t[3]||(t[3]=_=>l.value.name=_),type:"text",required:"",class:"input",placeholder:i(a)("keys.namePlaceholder"),"data-tour":"key-form-name"},null,8,Us),[[re,l.value.name]])]),e("div",null,[e("label",Ns,n(i(a)("keys.groupLabel")),1),T(ze,{modelValue:l.value.group_id,"onUpdate:modelValue":t[4]||(t[4]=_=>l.value.group_id=_),options:ie.value,placeholder:i(a)("keys.selectGroup"),searchable:!0,"search-placeholder":i(a)("keys.searchGroup"),"data-tour":"key-form-group"},{selected:S(({option:_})=>[_?(u(),H(ct,{key:0,name:_.label,platform:_.platform,"subscription-type":_.subscriptionType,"rate-multiplier":_.rate,"user-rate-multiplier":_.userRate},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier"])):(u(),c("span",Fs,n(i(a)("keys.selectGroup")),1))]),option:S(({option:_,selected:qe})=>[T(pt,{name:_.label,platform:_.platform,"subscription-type":_.subscriptionType,"rate-multiplier":_.rate,"user-rate-multiplier":_.userRate,description:_.description,selected:qe},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","description","selected"])]),_:1},8,["modelValue","options","placeholder","search-placeholder"])]),D.value?v("",!0):(u(),c("div",qs,[e("div",Bs,[e("label",zs,n(i(a)("keys.customKeyLabel")),1),e("button",{type:"button",onClick:t[5]||(t[5]=_=>l.value.use_custom_key=!l.value.use_custom_key),class:y(["relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",l.value.use_custom_key?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:y(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",l.value.use_custom_key?"translate-x-4":"translate-x-0"])},null,2)],2)]),l.value.use_custom_key?(u(),c("div",Vs,[ne(e("input",{"onUpdate:modelValue":t[6]||(t[6]=_=>l.value.custom_key=_),type:"text",class:y(["input font-mono",{"border-red-500 dark:border-red-500":m.value}]),placeholder:i(a)("keys.customKeyPlaceholder")},null,10,Hs),[[re,l.value.custom_key]]),m.value?(u(),c("p",js,n(m.value),1)):(u(),c("p",Ws,n(i(a)("keys.customKeyHint")),1))])):v("",!0)])),D.value?(u(),c("div",Ys,[e("label",Qs,n(i(a)("keys.statusLabel")),1),T(ze,{modelValue:l.value.status,"onUpdate:modelValue":t[7]||(t[7]=_=>l.value.status=_),options:k.value,placeholder:i(a)("keys.selectStatus")},null,8,["modelValue","options","placeholder"])])):v("",!0),e("div",Zs,[e("div",Js,[e("label",Xs,n(i(a)("keys.ipRestriction")),1),e("button",{type:"button",onClick:t[8]||(t[8]=_=>l.value.enable_ip_restriction=!l.value.enable_ip_restriction),class:y(["relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",l.value.enable_ip_restriction?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:y(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",l.value.enable_ip_restriction?"translate-x-4":"translate-x-0"])},null,2)],2)]),l.value.enable_ip_restriction?(u(),c("div",el,[e("div",null,[e("label",tl,n(i(a)("keys.ipWhitelist")),1),ne(e("textarea",{"onUpdate:modelValue":t[9]||(t[9]=_=>l.value.ip_whitelist=_),rows:"3",class:"input font-mono text-sm",placeholder:i(a)("keys.ipWhitelistPlaceholder")},null,8,al),[[re,l.value.ip_whitelist]]),e("p",sl,n(i(a)("keys.ipWhitelistHint")),1)]),e("div",null,[e("label",ll,n(i(a)("keys.ipBlacklist")),1),ne(e("textarea",{"onUpdate:modelValue":t[10]||(t[10]=_=>l.value.ip_blacklist=_),rows:"3",class:"input font-mono text-sm",placeholder:i(a)("keys.ipBlacklistPlaceholder")},null,8,ol),[[re,l.value.ip_blacklist]]),e("p",il,n(i(a)("keys.ipBlacklistHint")),1)])])):v("",!0)]),e("div",nl,[e("label",rl,n(i(a)("keys.quotaLimit")),1),e("div",ul,[e("div",null,[e("div",dl,[t[30]||(t[30]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),ne(e("input",{"onUpdate:modelValue":t[11]||(t[11]=_=>l.value.quota=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:i(a)("keys.quotaAmountPlaceholder")},null,8,cl),[[re,l.value.quota,void 0,{number:!0}]])]),e("p",pl,n(i(a)("keys.quotaAmountHint")),1)]),D.value&&r.value&&r.value.quota>
850?(u(),c("div",ml,[e("label",_l,n(i(a)("keys.quotaUsed")),1),e("div",gl,[e("div",yl,[e("span",vl," $"+n(((s=r.value.quota_used)==null?void 0:s.toFixed(4))||"0.0000"),1),t[31]||(t[31]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",hl," $"+n(((C=r.value.quota)==null?void 0:C.toFixed(2))||"0.00"),1)]),e("button",{type:"button",onClick:St,class:"btn btn-secondary text-sm",title:i(a)("keys.resetQuotaUsed")},n(i(a)("keys.reset")),9,xl)])])):v("",!0)])]),e("div",kl,[e("div",bl,[e("label",fl,n(i(a)("keys.rateLimitSection")),1),e("button",{type:"button",onClick:t[12]||(t[12]=_=>l.value.enable_rate_limit=!l.value.enable_rate_limit),class:y(["relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",l.value.enable_rate_limit?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:y(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",l.value.enable_rate_limit?"translate-x-4":"translate-x-0"])},null,2)],2)]),l.value.enable_rate_limit?(u(),c("div",wl,[e("p",$l,n(i(a)("keys.rateLimitHint")),1),e("div",null,[e("label",Cl,n(i(a)("keys.rateLimit5h")),1),e("div",Tl,[t[32]||(t[32]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),ne(e("input",{"onUpdate:modelValue":t[13]||(t[13]=_=>l.value.rate_limit_5h=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[re,l.value.rate_limit_5h,void 0,{number:!0}]])]),D.value&&r.value&&r.value.rate_limit_5h>0?(u(),c("div",Ml,[e("div",El,[e("div",Sl,[e("span",{class:y(["font-medium",r.value.usage_5h>=r.value.rate_limit_5h?"text-red-500":r.value.usage_5h>=r.value.rate_limit_5h*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((I=r.value.usage_5h)==null?void 0:I.toFixed(4))||"0.0000"),3),t[33]||(t[33]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",Il," $"+n(((N=r.value.rate_limit_5h)==null?void 0:N.toFixed(2))||"0.00"),1)])]),e("div",Ll,[e("div",{class:y(["h-full rounded-full transition-all",r.value.usage_5h>=r.value.rate_limit_5h?"bg-red-500":r.value.usage_5h>=r.value.rate_limit_5h*.8?"bg-yellow-500":"bg-green-500"]),style:ve({width:Math.min(r.value.usage_5h/r.value.rate_limit_5h*100,100)+"%"})},null,6)])])):v("",!0)]),e("div",null,[e("label",Al,n(i(a)("keys.rateLimit1d")),1),e("div",Gl,[t[34]||(t[34]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),ne(e("input",{"onUpdate:modelValue":t[14]||(t[14]=_=>l.value.rate_limit_1d=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[re,l.value.rate_limit_1d,void 0,{number:!0}]])]),D.value&&r.value&&r.value.rate_limit_1d>0?(u(),c("div",Kl,[e("div",Dl,[e("div",Pl,[e("span",{class:y(["font-medium",r.value.usage_1d>=r.value.rate_limit_1d?"text-red-500":r.value.usage_1d>=r.value.rate_limit_1d*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((V=r.value.usage_1d)==null?void 0:V.toFixed(4))||"0.0000"),3),t[35]||(t[35]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",Rl," $"+n(((pe=r.value.rate_limit_1d)==null?void 0:pe.toFixed(2))||"0.00"),1)])]),e("div",Ol,[e("div",{class:y(["h-full rounded-full transition-all",r.value.usage_1d>=r.value.rate_limit_1d?"bg-red-500":r.value.usage_1d>=r.value.rate_limit_1d*.8?"bg-yellow-500":"bg-green-500"]),style:ve({width:Math.min(r.value.usage_1d/r.value.rate_limit_1d*100,100)+"%"})},null,6)])])):v("",!0)]),e("div",null,[e("label",Ul,n(i(a)("keys.rateLimit7d")),1),e("div",Nl,[t[36]||(t[36]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),ne(e("input",{"onUpdate:modelValue":t[15]||(t[15]=_=>l.value.rate_limit_7d=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[re,l.value.rate_limit_7d,void 0,{number:!0}]])]),D.value&&r.value&&r.value.rate_limit_7d>0?(u(),c("div",Fl,[e("div",ql,[e("div",Bl,[e("span",{class:y(["font-medium",r.value.usage_7d>=r.value.rate_limit_7d?"text-red-500":r.value.usage_7d>=r.value.rate_limit_7d*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((ge=r.value.usage_7d)==null?void 0:ge.toFixed(4))||"0.0000"),3),t[37]||(t[37]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",zl," $"+n(((Ke=r.value.rate_limit_7d)==null?void 0:Ke.toFixed(2))||"0.00"),1)])]),e("div",Vl,[e("div",{class:y(["h-full rounded-full transition-all",r.value.usage_7d>=r.value.rate_limit_7d?"bg-red-500":r.value.usage_7d>=r.value.rate_limit_7d*.8?"bg-yellow-500":"bg-green-500"]),style:ve({width:Math.min(r.value.usage_7d/r.value.rate_limit_7d*100,100)+"%"})},null,6)])])):v("",!0)]),D.value&&r.value&&(r.value.rate_limit_5h>0||r.value.rate_limit_1d>0||r.value.rate_limit_7d>0)?(u(),c("div",Hl,[e("button",{type:"button",onClick:At,class:"btn btn-secondary text-sm"},n(i(a)("keys.resetRateLimitUsage")),1)])):v("",!0)])):v("",!0)]),e("div",jl,[e("div",Wl,[e("label",Yl,n(i(a)("keys.expiration")),1),e("button",{type:"button",onClick:t[16]||(t[16]=_=>l.value.enable_expiration=!l.value.enable_expiration),class:y(["relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",l.value.enable_expiration?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:y(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",l.value.enable_expiration?"translate-x-4":"translate-x-0"])},null,2)],2)]),l.value.enable_expiration?(u(),c("div",Ql,[e("div",Zl,[(u(),c($e,null,De(["7","30","90"],_=>e("button",{key:_,type:"button",onClick:qe=>It(parseInt(_)),class:y(["rounded-lg px-3 py-1.5 text-sm transition-colors",l.value.expiration_preset===_?"bg-primary-100 text-primary-700 dark:bg-primary-900/30 dark:text-primary-400":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-400 dark:hover:bg-dark-600"])},n(D.value?i(a)("keys.extendDays",{days:_}):i(a)("keys.expiresInDays",{days:_})),11,Jl)),64)),e("button",{type:"button",onClick:t[17]||(t[17]=_=>l.value.expiration_preset="custom"),class:y(["rounded-lg px-3 py-1.5 text-sm transition-colors",l.value.expiration_preset==="custom"?"bg-primary-100 text-primary-700 dark:bg-primary-900/30 dark:text-primary-400":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-400 dark:hover:bg-dark-600"])},n(i(a)("keys.customDate")),3)]),e("div",null,[e("label",Xl,n(i(a)("keys.expirationDate")),1),ne(e("input",{"onUpdate:modelValue":t[18]||(t[18]=_=>l.value.expiration_date=_),type:"datetime-local",class:"input"},null,512),[[re,l.value.expiration_date]]),e("p",eo,n(i(a)("keys.expirationDateHint")),1)]),D.value&&((Ne=r.value)!=null&&Ne.expires_at)?(u(),c("div",to,[e("span",ao,n(i(a)("keys.currentExpiration"))+": ",1),e("span",so,n(i(Be)(r.value.expires_at)),1)])):v("",!0)])):v("",!0)])],32)]}),_:1},8,["show","title"]),T(Ye,{show:Se.value,title:i(a)("keys.deleteKey"),message:i(a)("keys.deleteConfirmMessage",{name:(p=r.value)==null?void 0:p.name}),"confirm-text":i(a)("common.delete"),"cancel-text":i(a)("common.cancel"),danger:!0,onConfirm:Et,onCancel:t[19]||(t[19]=s=>Se.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),T(Ye,{show:Ie.value,title:i(a)("keys.resetQuotaTitle"),message:i(a)("keys.resetQuotaConfirmMessage",{name:(b=r.value)==null?void 0:b.name,used:(G=(A=r.value)==null?void 0:A.quota_used)==null?void 0:G.toFixed(4)}),"confirm-text":i(a)("keys.reset"),"cancel-text":i(a)("common.cancel"),danger:!0,onConfirm:Lt,onCancel:t[20]||(t[20]=s=>Ie.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),T(Ye,{show:te.value,title:i(a)("keys.resetRateLimitTitle"),message:i(a)("keys.resetRateLimitConfirmMessage",{name:(ce=r.value)==null?void 0:ce.name}),"confirm-text":i(a)("keys.reset"),"cancel-text":i(a)("common.cancel"),danger:!0,onConfirm:Kt,onCancel:t[21]||(t[21]=s=>te.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),T(Ca,{show:W.value,"api-key":((we=r.value)==null?void 0:we.key)||"","base-url":((Ge=P.value)==null?void 0:Ge.public_api_base_url)||((ee=P.value)==null?void 0:ee.api_base_url)||"",platform:((_e=(J=r.value)==null?void 0:J.group)==null?void 0:_e.platform)||null,"allow-messages-dispatch":((He=(Ue=r.value)==null?void 0:Ue.group)==null?void 0:He.allow_messages_dispatch)||!1,"claude-code-only":((nt=(it=r.value)==null?void 0:it.group)==null?void 0:nt.claude_code_only
85)||!1,"reclaude-proxy":B.value,onClose:ht},null,8,["show","api-key","base-url","platform","allow-messages-dispatch","claude-code-only","reclaude-proxy"]),T(Qe,{show:z.value,title:i(a)("keys.ccsClientSelect.title"),width:"narrow",onClose:ot},{footer:S(()=>[e("div",go,[e("button",{onClick:ot,class:"btn btn-secondary"},n(i(a)("common.cancel")),1)])]),default:S(()=>[e("div",no,[e("p",ro,n(i(a)("keys.ccsClientSelect.description")),1),e("div",uo,[e("button",{onClick:t[22]||(t[22]=s=>lt("claude")),class:"flex flex-col items-center gap-2 p-4 rounded-xl border-2 border-gray-200 dark:border-dark-600 hover:border-primary-500 dark:hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-primary-900/20 transition-all"},[T(F,{name:"terminal",size:"xl",class:"text-gray-600 dark:text-gray-400"}),e("span",co,n(i(a)("keys.ccsClientSelect.claudeCode")),1),e("span",po,n(i(a)("keys.ccsClientSelect.claudeCodeDesc")),1)]),e("button",{onClick:t[23]||(t[23]=s=>lt("gemini")),class:"flex flex-col items-center gap-2 p-4 rounded-xl border-2 border-gray-200 dark:border-dark-600 hover:border-primary-500 dark:hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-primary-900/20 transition-all"},[T(F,{name:"sparkles",size:"xl",class:"text-gray-600 dark:text-gray-400"}),e("span",mo,n(i(a)("keys.ccsClientSelect.geminiCli")),1),e("span",_o,n(i(a)("keys.ccsClientSelect.geminiCliDesc")),1)])])])]),_:1},8,["show","title"]),(u(),H(Ut,{to:"body"},[oe.value!==null&&Y.value?(u(),c("div",{key:0,ref_key:"dropdownRef",ref:Pe,class:"animate-in fade-in slide-in-from-top-2 fixed z-[100000020] w-max min-w-[380px] overflow-hidden rounded-xl bg-white shadow-lg ring-1 ring-black/5 duration-200 dark:bg-dark-800 dark:ring-white/10",style:ve([{"pointer-events":"auto !important"},{top:Y.value.top!==void 0?Y.value.top+"px":void 0,bottom:Y.value.bottom!==void 0?Y.value.bottom+"px":void 0,left:Y.value.left+"px"}])},[e("div",yo,[e("div",vo,[t[39]||(t[39]=e("svg",{class:"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),ne(e("input",{"onUpdate:modelValue":t[24]||(t[24]=s=>Le.value=s),type:"text",class:"w-full rounded-lg border border-gray-200 bg-gray-50 py-1.5 pl-8 pr-3 text-sm text-gray-900 placeholder-gray-400 outline-none focus:border-primary-300 focus:ring-1 focus:ring-primary-300 dark:border-dark-600 dark:bg-dark-700 dark:text-white dark:placeholder-gray-500 dark:focus:border-primary-600 dark:focus:ring-primary-600",placeholder:i(a)("keys.searchGroup"),onClick:t[25]||(t[25]=Fe(()=>{},["stop"]))},null,8,ho),[[re,Le.value]])])]),e("div",xo,[(u(!0),c($e,null,De(et.value,s=>{var C,I,N,V;return u(),c("button",{key:s.value??"null",onClick:pe=>Ct(fe.value,s.value),class:y(["flex w-full items-center justify-between rounded-lg px-3 py-2.5 text-sm transition-colors","border-b border-gray-100 last:border-0 dark:border-dark-700",((C=fe.value)==null?void 0:C.group_id)===s.value||!((I=fe.value)!=null&&I.group_id)&&s.value===null?"bg-primary-50 dark:bg-primary-900/20":"hover:bg-gray-100 dark:hover:bg-dark-700"]),title:s.description||void 0},[T(pt,{name:s.label,platform:s.platform,"subscription-type":s.subscriptionType,"rate-multiplier":s.rate,"user-rate-multiplier":s.userRate,description:s.description,selected:((N=fe.value)==null?void 0:N.group_id)===s.value||!((V=fe.value)!=null&&V.group_id)&&s.value===null},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","description","selected"])],10,ko)}),128)),et.value.length===0?(u(),c("div",bo,n(i(a)("keys.noGroupFound")),1)):v("",!0)])],4)):v("",!0)]))]}),_:1}))}});export{jo as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.