1import{d as yt,r as M,q as St,c as K,w as Xe,D as Y,u as l,M as N,A as e,z as c,C as b,B as n,N as Q,J as te,a6 as lt,E as me,F as ee,O as he,Z as nt,G as d,H as I,k as R,h as Fe,I as os,S as zs,a1 as ls,o as Ws,a as Ys,Y as He,W as Xs}from"./vendor-vue-DmILWSqk.js";import{a as ps,m as Et,_ as J,d as Js,an as Qs,n as gt,al as Zs,aV as ea,aW as ta,a9 as sa}from"./index-BUiVe6m5.js";import{u as Bt}from"./useClipboard-seVhsrj5.js";import{u as aa}from"./useEndpointHealth-whitHPC_.js";import{g as oa}from"./usePersistedPageSize-CMXyiapx.js";import{k as Le}from"./AppHeader.vue_vue_type_style_index_0_scoped_e13b152f_lang-CxnbIJKA.js";import{u as la}from"./usage-DPxcU4SW.js";import{u as is}from"./groups-3VEH2Evg.js";import{_ as ia}from"./AppLayout.vue_vue_type_script_setup_true_lang-ReFHxcAR.js";import{T as na}from"./TablePageLayout-CW0pr9Cq.js";import{S as it}from"./Select-B2Zy1NcM.js";import{u as vt}from"./vendor-i18n-CkjPFrjs.js";import{D as ra}from"./DataTable-CNWon8xF.js";import{P as da}from"./Pagination-CvaYBZwX.js";import{_ as Gt}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-Cc4T1xxB.js";import{_ as ua}from"./EmptyState.vue_vue_type_script_setup_true_lang-CrH3sXJ6.js";import{_ as ca}from"./SearchInput.vue_vue_type_script_setup_true_lang-C4p-DXjf.js";import{F as pa}from"./vendor-misc-G-tVwJov.js";import{a as ns,s as ma}from"./siteStatus-Dv_75R-2.js";import{_ as Ot}from"./GroupBadge.vue_vue_type_script_setup_true_lang-BN27LJ92.js";import{_ as _a,G as rs}from"./GroupOptionItem-DO78dS84.js";import{a as ga,d as ka,s as Rt}from"./planSeriesTheme-DhTQLcCG.js";import{m as ya}from"./maskApiKey-ClKV8GuA.js";import{_ as va}from"./PlatformIcon.vue_vue_type_script_setup_true_lang-BULX22hl.js";import{a as ha}from"./platformColors-CgwyFMTB.js";import{b as wt}from"./apiError-BcAuv_LF.js";import"./useTheme-ppzYR-Gp.js";import"./LocaleSwitcher-pBCrhR8P.js";/* empty css */import"./lottery-DaOxXE4M.js";import"./vendor-ui-DQLtVwsX.js";import"./peak-rate-qZGUWdry.js";import"./planGrouping-DIWVQtD4.js";const ba={class:"space-y-1 text-sm"},xa={class:"font-medium text-gray-900 dark:text-white"},fa={class:"text-gray-500 dark:text-gray-400"},wa=["disabled"],$a={class:"space-y-2"},Ca={class:"flex items-center gap-2 text-sm font-medium"},Ma={class:"space-y-2"},Sa={class:"flex items-center gap-2 text-sm font-medium"},Ea={class:"flex items-center gap-2 text-sm font-medium"},Ia=["onUpdate:modelValue","data-test"],Aa={key:0},Ta=["onUpdate:modelValue","aria-label","data-test"],La={class:"input-hint"},Ka={class:"space-y-2"},Pa={class:"flex items-center gap-2 text-sm font-medium"},Ga={key:0,class:"space-y-2"},Oa={class:"flex items-center gap-2 text-sm"},Da=["aria-label"],Ra={class:"flex items-center gap-2 text-sm font-medium"},Ua=["onUpdate:modelValue","data-test"],Na={key:0},Ba=["onUpdate:modelValue","aria-label","data-test"],Fa={class:"input-hint"},Ha={key:0,role:"alert",class:"text-sm text-red-600 dark:text-red-400"},ja={key:1,role:"alert",class:"space-y-2 text-sm text-red-600 dark:text-red-400"},qa={class:"max-h-40 space-y-1 overflow-y-auto"},Va=["disabled"],za=["disabled"],Wa=yt({__name:"BulkEditKeysModal",props:{show:{type:Boolean},selectedKeys:{},groups:{}},emits:["close","updated"],setup(h,{emit:s}){const g=h,f=s,{t:r}=vt(),le=ps(),U=M(!1),P=M([]),y=M([]),$=St({group_id:!1,status:!1,quota:!1,rate_limit_5h:!1,rate_limit_1d:!1,rate_limit_7d:!1,expires_at:!1,ip_whitelist:!1,ip_blacklist:!1}),F=M(null),z=M("active"),L=St({quota:"",rate_limit_5h:"",rate_limit_1d:"",rate_limit_7d:""}),D=St({ip_whitelist:"",ip_blacklist:""}),T=M(!1),ie=M(""),_e=[{key:"quota",label:"keys.quotaAmount"},{key:"rate_limit_5h",label:"keys.rateLimit5h"},{key:"rate_limit_1d",label:"keys.rateLimit1d"},{key:"rate_limit_7d",label:"keys.rateLimit7d"}],Se=[{key:"ip_whitelist",label:"keys.ipWhitelist"},{key:"ip_blacklist",label:"keys.ipBlacklist"}],de=K(()=>g.groups.map(B=>({value:B.id,label:B.name}))),se=K(()=>[{value:"active",label:r("keys.enable")},{value:"inactive",label:r("keys.disable")}]),Ee=K(()=>
1{if($.group_id&&!g.groups.some(B=>B.id===F.value))return r("keys.groupRequired");for(const{key:B}of _e){if(!$[B])continue;const w=String(L[B]).trim();if(!w||!Number.isFinite(Number(w))||Number(w)<0)return r("keys.bulkEdit.invalidLimit")}return $.expires_at&&!T.value&&!Number.isFinite(Date.parse(ie.value))?r("keys.bulkEdit.invalidExpiration"):""}),Oe=K(()=>P.value.length>0&&Object.values($).some(Boolean)&&!Ee.value&&!U.value);Xe(()=>g.show,B=>{if(B){P.value=g.selectedKeys.map(({id:w,name:E})=>({id:w,name:E})),y.value=[];for(const w of Object.keys($))$[w]=!1;for(const{key:w}of _e)L[w]="";for(const{key:w}of Se)D[w]="";F.value=null,z.value="active",T.value=!1,ie.value=""}},{immediate:!0});const q=()=>{U.value||f("close")},je=B=>{const w=B==null?void 0:B.message;return typeof w=="string"&&w?w:r("keys.failedToSave")},Ie=async()=>{if(!Oe.value)return;const B={};$.group_id&&(B.group_id=F.value),$.status&&(B.status=z.value);for(const{key:w}of _e)$[w]&&(B[w]=Number(L[w]));for(const{key:w}of Se)$[w]&&(B[w]=D[w].split(` 2`).map(E=>E.trim()).filter(Boolean));$.expires_at&&(B.expires_at=T.value?"":new Date(ie.value).toISOString()),U.value=!0;try{const w=await Le.bulkUpdate(P.value.map(W=>W.id),B);y.value=w.failures.map(({id:W,error:qe})=>{var De;return{id:W,name:((De=P.value.find(ae=>ae.id===W))==null?void 0:De.name)??"",message:je(qe)}});const E=new Set(w.failures.map(({id:W})=>W));P.value=P.value.filter(W=>E.has(W.id)),w.succeededIds.length&&f("updated",w.succeededIds),w.failures.length?le.showError(r("keys.bulkEdit.partialFailure",{success:w.succeededIds.length,failed:w.failures.length})):(le.showSuccess(r("keys.bulkEdit.success",{count:w.succeededIds.length})),f("close"))}catch(w){le.showError(je(w))}finally{U.value=!1}};return(B,w)=>(d(),Y(Et,{show:h.show,title:l(r)("keys.bulkEdit.title"),width:"normal","close-on-escape":!U.value,"show-close-button":!U.value,onClose:q},{footer:N(()=>[e("button",{type:"button",class:"btn btn-secondary",disabled:U.value,onClick:q},n(l(r)("common.cancel")),9,Va),e("button",{type:"submit",form:"bulk-edit-keys-form",class:"btn btn-primary",disabled:!Oe.value,"data-test":"submit"},n(U.value?l(r)("keys.saving"):l(r)("keys.bulkEdit.apply",{count:P.value.length})),9,za)]),default:N(()=>[e("form",{id:"bulk-edit-keys-form",class:"space-y-5",onSubmit:nt(Ie,["prevent"])},[e("div",ba,[e("p",xa,n(l(r)("keys.bulkEdit.selectedCount",{count:P.value.length})),1),e("p",fa,n(l(r)("keys.bulkEdit.hint")),1)]),e("fieldset",{disabled:U.value,class:"space-y-5"},[e("div",$a,[e("label",Ca,[Q(e("input",{"onUpdate:modelValue":w[0]||(w[0]=E=>$.group_id=E),type:"checkbox",class:"checkbox","data-test":"enable-group"},null,512),[[lt,$.group_id]]),te(" "+n(l(r)("keys.groupLabel")),1)]),$.group_id?(d(),Y(it,{key:0,modelValue:F.value,"onUpdate:modelValue":w[1]||(w[1]=E=>F.value=E),options:de.value,placeholder:l(r)("keys.selectGroup"),disabled:U.value,"aria-label":l(r)("keys.groupLabel"),searchable:"","data-test":"group-input"},null,8,["modelValue","options","placeholder","disabled","aria-label"])):b("",!0)]),e("div",Ma,[e("label",Sa,[Q(e("input",{"onUpdate:modelValue":w[2]||(w[2]=E=>$.status=E),type:"checkbox",class:"checkbox","data-test":"enable-status"},null,512),[[lt,$.status]]),te(" "+n(l(r)("keys.statusLabel")),1)]),$.status?(d(),Y(it,{key:0,modelValue:z.value,"onUpdate:modelValue":w[3]||(w[3]=E=>z.value=E),options:se.value,disabled:U.value,"aria-label":l(r)("keys.statusLabel"),"data-test":"status-input"},null,8,["modelValue","options","disabled","aria-label"])):b("",!0)]),(d(),c(ee,null,me(_e,E=>e("div",{key:E.key,class:"space-y-2"},[e("label",Ea,[Q(e("input",{"onUpdate:modelValue":W=>$[E.key]=W,type:"checkbox",class:"checkbox","data-test":`enable-${E.key}`},null,8,Ia),[[lt,$[E.key]]]),te(" "+n(l(r)(E.label)),1)]),$[E.key]?(d(),c("div",Aa,[Q(e("input",{"onUpdate:modelValue":W=>L[E.key]=W,type:"number",min:"0",step:"any",required:"",class:"input","aria-label":l(r)(E.label),"data-test":`${E.key}-input`},null,8,Ta),[[he,L[E.key]]]),e("p",La,n(l(r)("keys.bulkEdit.limitHint")),1)])):b("",!0)])),64)),e("div",Ka,[e("label",Pa,[Q(e("input",{"onUpdate:modelValue":w[4]||(w[4]=E=>$.expires_at=E),type:"checkbox",class:"checkbox","data-test":"enable-expiration"},null,512),[[lt,$.expires_at]]),te(" "+n(l(r)("keys.expiration")),1)]),$.expires_at?(d(),c("div",Ga,[e("label",Oa,[Q(e("input",{"onUpdate:modelValue":w[5]||(w[5]=E=>T.value=E),type:"checkbox",class:"checkbox","data-test":"never-expires"},null,512),[[lt,T.value]]),te(" "+n(l(r)("keys.noExpiration")),1)]),T.value?b("",!0):Q((d(),c("input",{key:0,"onUpdate:modelValue":w[6]||(w[6]=E=>ie.value=E),type:"datetime-local",required:"",class:"input","aria-label":l(r)("keys.expirationDate"),"data-test":"expiration-input"},null,8,Da)),[[he,ie.value]])])):b("",!0)]),(d(),c(ee,null,me(Se,E=>e("div",{key:E.key,class:"space-y-2"},[e("label",Ra,[Q(e("input",{"onUpdate:modelValue":W=>$[E.key]=W,type:"checkbox",class:"checkbox","data-test":`enable-${E.key}`}
2,null,8,Ua),[[lt,$[E.key]]]),te(" "+n(l(r)(E.label)),1)]),$[E.key]?(d(),c("div",Na,[Q(e("textarea",{"onUpdate:modelValue":W=>D[E.key]=W,rows:"3",class:"input font-mono text-sm","aria-label":l(r)(E.label),"data-test":`${E.key}-input`},null,8,Ba),[[he,D[E.key]]]),e("p",Fa,n(l(r)("keys.bulkEdit.ipHint")),1)])):b("",!0)])),64))],8,wa),Ee.value?(d(),c("p",Ha,n(Ee.value),1)):b("",!0),y.value.length?(d(),c("div",ja,[e("p",null,n(l(r)("keys.bulkEdit.failureHint")),1),e("ul",qa,[(d(!0),c(ee,null,me(y.value,E=>(d(),c("li",{key:E.id,class:"break-words"}," #"+n(E.id)+" "+n(E.name)+": "+n(E.message),1))),128))])])):b("",!0)],32)]),_:1},8,["show","title","close-on-escape","show-close-button"]))}}),Ya="0.147.0";function Xa(h){const s=typeof window<"u"?window.location.origin:"",g=(h||s).trim().replace(/\/+$/,"");return g?/\/v1$/i.test(g)?g:`${g}/v1`:"/v1"}function Ja(h,s=Ya){const g=Xa(h),f=new URLSearchParams({client_version:s});return`${g}/models?${f.toString()}`}function Qa(h){return typeof h=="object"&&h!==null&&Array.isArray(h.models)}async function Za(h,s,g){const f=await fetch(Ja(h),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${s}`},cache:"no-store",signal:g});if(!f.ok)throw new Error(`Codex models request failed with status ${f.status}`);const r=await f.json();if(!Qa(r))throw new Error("Codex models response is not a valid manifest");return{content:JSON.stringify(r,null,2),modelCount:r.models.length}}function Ut(h){return typeof h!="string"?"":h.trim()}function ms(h){if(!h)return[];try{const s=JSON.parse(h);if(typeof s!="object"||s===null||!("models"in s))return[];const g=s.models;return Array.isArray(g)?g.flatMap(f=>{if(typeof f!="object"||f===null||!("slug"in f))return[];const r=Ut(f.slug);return r?[{...f,slug:r}]:[]}):[]}catch{return[]}}function eo(h,s){const g=s.trim();if(g)return ms(h).find(f=>f.slug===g)}function to(h){if(!h)return null;const s=(h.supported_reasoning_levels??[]).flatMap(f=>{const r=Ut(f==null?void 0:f.effort);return r?[r]:[]});if(s.length===0)return null;const g=Ut(h.default_reasoning_level);return g&&s.includes(g)?g==="none"?null:g:s.find(f=>f!=="none")??null}function so(h){return h?`model_reasoning_effort = "${h}" 3`:""}const ao={class:"space-y-4"},oo={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"},lo={class:"text-sm font-medium text-yellow-800 dark:text-yellow-200"},io={class:"text-sm text-yellow-700 dark:text-yellow-300 mt-1"},no={class:"text-sm text-gray-600 dark:text-gray-400"},ro={key:0,class:"overflow-x-auto border-b border-gray-200 dark:border-dark-700"},uo={class:"-mb-px flex min-w-max gap-4 sm:gap-6","aria-label":"Client"},co=["onClick"],po={class:"flex items-center gap-2"},mo={key:1,class:"rounded-lg border border-gray-200 p-3 dark:border-dark-700"},_o={class:"mb-2"},go={class:"text-sm font-medium text-gray-900 dark:text-white"},ko={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},yo=["aria-label"],vo=["aria-checked"],ho=["aria-checked"],bo={key:0,"data-testid":"codex-api-key-restart-notice",class:"mt-3 flex items-start gap-2 border-l-2 border-amber-400 bg-amber-50 px-3 py-2 text-xs leading-5 text-amber-800 dark:border-amber-500 dark:bg-amber-950/30 dark:text-amber-200"},xo={key:2,class:"overflow-x-auto border-b border-gray-200 dark:border-dark-700"},fo={class:"-mb-px flex min-w-max gap-4","aria-label":"Tabs"},wo=["onClick"],$o={class:"flex items-center gap-2"},Co={class:"space-y-4"},Mo={key:0,class:"text-xs text-amber-600 dark:text-amber-400 mb-1.5 flex items-center gap-1"},So={class:"bg-gray-900 dark:bg-dark-900 rounded-xl overflow-hidden"},Eo={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"},Io={class:"min-w-0 truncate text-xs text-gray-400 font-mono"},Ao=["onClick"],To={key:0,class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},Lo={key:1,class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},Ko={class:"p-4 text-sm font-mono text-gray-100 overflow-x-auto"},Po=["innerHTML"],Go=["textContent"],Oo={key:3,"data-testid":"codex-model-catalog",class:"overflow-hidden rounded-lg border border-gray-200 bg-gray-50 dark:border-dark-700 dark:bg-dark-800/50"},Do={class:"flex flex-col gap-3 px-4 py-3 sm:flex-row sm:items-center sm:justify-between"},Ro={class:"min-w-0"},Uo={class:"text-sm font-medium text-gray-900 dark:text-white"},No={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Bo={class:"mt-1 truncate font-mono text-xs text-gray-700 dark:text-gray-300"},Fo=["disabled"],Ho={key:0,class:"border-t border-gray-200 px-4 py-2 text-xs text-emerald-700 dark:border-dark-700 dark:text-emerald-300"},jo={key:1,class:"border-t border-red-200 px-4 py-2 text-xs text-red-700 dark:border-red-900 dark:text-red-300"},qo={key:4,class:"flex items-start gap-3 p-3 rounded-lg bg-blue-50 dark:bg-blue-900/20 border border-blue-100 dar
3k:border-blue-800"},Vo={class:"text-sm text-blue-700 dark:text-blue-300"},zo={class:"flex justify-between items-center"},Wo={key:0,class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Yo={key:1,class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$t="~/.codex/codex-models.json",Xo=yt({__name:"UseKeyModal",props:{show:{type:Boolean},apiKey:{},baseUrl:{},platform:{},allowMessagesDispatch:{type:Boolean}},emits:["close"],setup(h,{emit:s}){const g=h,f=s,{t:r}=vt(),{copyToClipboard:le}=Bt(),U=M(null),P=M("unix"),y=M("claude"),$=M(!1),F=M("legacy"),z=M("idle"),L=M(""),D=M(0);let T=null,ie=0;const _e=K(()=>g.show&&(y.value==="codex"||g.platform==="openai"&&y.value==="codex-ws")),Se=K(()=>{const u=P.value==="windows";return Pe(u?"%userprofile%\\.codex":"~/.codex","codex-models.json",u)}),de=K(()=>_e.value?`${g.platform}|${g.baseUrl}|${g.apiKey}`:""),se=K(()=>{switch(g.platform){case"openai":return"codex";case"grok":return"grok";case"gemini":return"gemini";case"antigravity":return"claude";default:return"claude"}});Xe(()=>g.platform,()=>{P.value="unix",y.value=se.value,F.value="legacy"},{immediate:!0}),Xe(()=>g.show,u=>{u?F.value="legacy":Ve()}),Xe(de,(u,p)=>{u!==p&&Ve()}),Xe(y,()=>{P.value="unix"});const Ee={render(){return Fe("svg",{fill:"currentColor",viewBox:"0 0 24 24",class:"w-4 h-4"},[Fe("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"})])}},Oe={render(){return Fe("svg",{fill:"currentColor",viewBox:"0 0 24 24",class:"w-4 h-4"},[Fe("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"})])}},q={render(){return Fe("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5",class:"w-4 h-4"},[Fe("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"})])}},je={render(){return Fe("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5",class:"w-4 h-4"},[Fe("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.09L15.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"})])}},Ie=K(()=>{if(!g.platform)return[];switch(g.platform){case"openai":{const u=[{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"codex-ws",label:r("keys.useKeyModal.cliTabs.codexCliWs"),icon:q}];return g.allowMessagesDispatch&&u.push({id:"claude",label:r("keys.useKeyModal.cliTabs.claudeCode"),icon:q}),u.push({id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}),u}case"gemini":return[{id:"gemini",label:r("keys.useKeyModal.cliTabs.geminiCli"),icon:je},{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}];case"antigravity":return[{id:"claude",label:r("keys.useKeyModal.cliTabs.claudeCode"),icon:q},{id:"gemini",label:r("keys.useKeyModal.cliTabs.geminiCli"),icon:je},{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}];case"grok":return[{id:"grok",label:r("keys.useKeyModal.cliTabs.grokCli"),icon:q},{id:"claude",label:r("keys.useKeyModal.cliTabs.claudeCode"),icon:q},{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}];case"deepseek":case"minimax":case"composite":return[{id:"claude",label:r("keys.useKeyModal.cliTabs.claudeCode"),icon:q},{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}];default:return[{id:"claude",label:r("keys.useKeyModal.cliTabs.claudeCode"),icon:q},{id:"codex",label:r("keys.useKeyModal.cliTabs.codexCli"),icon:q},{id:"opencode",label:r("keys.useKeyModal.cliTabs.opencode"),icon:q}]}}),B=[{id:"unix",label:"macOS / Linux",icon:Ee},{id:"cmd",label:"Windows CMD",icon:Oe},{id:"powershell",label:"PowerShell",icon:Oe}],w=[{id:"unix",label:"macOS / Linux",icon:Ee},{id:"windows",label:"Windows",icon:Oe}],E=K(()=>y.value!=="opencode"),W=K(()=>g.platform==="openai"&&(y.value==="codex"||y.value==="codex-ws")),qe=K(()=>E.value?y.value==="codex"||y.value==="codex-ws"||y.value==="grok"?w:B:[]),De=K(()=>
3{if(y.value==="codex"&&g.platform!=="openai"&&g.platform!=="grok"&&g.platform!=="deepseek"&&g.platform!=="minimax"&&g.platform!=="composite")return r("keys.useKeyModal.routedCodex.description");switch(g.platform){case"openai":return y.value==="claude"?r("keys.useKeyModal.description"):r("keys.useKeyModal.openai.description");case"gemini":return r("keys.useKeyModal.gemini.description");case"antigravity":return r("keys.useKeyModal.antigravity.description");case"grok":return y.value==="claude"?r("keys.useKeyModal.grok.claudeDescription"):y.value==="codex"?r("keys.useKeyModal.grok.codexDescription"):r("keys.useKeyModal.grok.description");case"deepseek":return y.value==="codex"?r("keys.useKeyModal.deepseek.codexDescription"):r("keys.useKeyModal.deepseek.description");case"minimax":return y.value==="codex"?r("keys.useKeyModal.minimax.codexDescription"):r("keys.useKeyModal.minimax.description");case"composite":return y.value==="codex"?r("keys.useKeyModal.composite.codexDescription"):r("keys.useKeyModal.composite.description");default:return r("keys.useKeyModal.description")}}),ae=K(()=>{if(y.value==="codex"&&g.platform!=="openai"&&g.platform!=="grok"&&g.platform!=="deepseek"&&g.platform!=="minimax"&&g.platform!=="composite")return r("keys.useKeyModal.routedCodex.note");switch(g.platform){case"openai":return y.value==="claude"?r("keys.useKeyModal.note"):P.value==="windows"?r("keys.useKeyModal.openai.noteWindows"):r("keys.useKeyModal.openai.note");case"gemini":return r("keys.useKeyModal.gemini.note");case"antigravity":return y.value==="claude"?r("keys.useKeyModal.antigravity.claudeNote"):r("keys.useKeyModal.antigravity.geminiNote");case"grok":return y.value==="claude"?r("keys.useKeyModal.grok.claudeNote"):y.value==="codex"?P.value==="windows"?r("keys.useKeyModal.grok.codexNoteWindows"):r("keys.useKeyModal.grok.codexNote"):y.value==="grok"&&(P.value==="cmd"||P.value==="powershell")||y.value==="grok"&&P.value==="windows"?r("keys.useKeyModal.grok.noteWindows"):r("keys.useKeyModal.grok.note");case"deepseek":return y.value==="codex"?r("keys.useKeyModal.deepseek.codexNote"):r("keys.useKeyModal.note");case"minimax":return y.value==="codex"?r("keys.useKeyModal.minimax.codexNote"):r("keys.useKeyModal.note");case"composite":return y.value==="codex"?r("keys.useKeyModal.composite.codexNote"):r("keys.useKeyModal.note");default:return r("keys.useKeyModal.note")}}),Je=K(()=>y.value!=="opencode");function Ve(){T==null||T.abort(),T=null,ie+=1,z.value="idle",L.value="",D.value=0}async function Qe(){if(!_e.value||!g.apiKey)return;T==null||T.abort();const u=new AbortController,p=++ie;T=u,z.value="loading";try{const k=await Za(g.baseUrl,g.apiKey,u.signal);if(p!==ie)return;L.value=k.content,D.value=k.modelCount,z.value="ready"}catch(k){const C=k&&typeof k=="object"&&"name"in k?String(k.name||""):"";if(p!==ie||C==="AbortError")return;z.value="error"}finally{p===ie&&(T=null)}}function Ze(){L.value&&pa.saveAs(new Blob([L.value],{type:"application/json;charset=utf-8"}),"codex-models.json")}const Re=K(()=>ms(L.value).map(u=>u.slug));function H(u){return Re.value.includes(u)?u:Re.value[0]||u}function ze(u){return so(to(eo(L.value,u)))}const et=u=>u.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),we=(u,p)=>`<span class="${u}">${et(p)}</span>`,ge=u=>we("text-emerald-300",u),ue=u=>we("text-sky-200",u),ce=u=>we("text-slate-400",u),ne=u=>we("text-amber-200",u),v=u=>we("text-slate-500",u),We=K(()=>{const u=g.baseUrl||window.location.origin,p=$.value?g.apiKey:bt(g.apiKey),k=u.replace(/\/v1\/?$/,"").replace(/\/+$/,""),C=Z=>{const Te=Z.replace(/\/+$/,"");return Te.endsWith("/v1")?Te:`${Te}/v1`},x=C(k),i=C(`${k}/antigravity`),O=(()=>{const Z=`${k}/antigravity`.replace(/\/+$/,"");return Z.endsWith("/v1beta")?Z:`${Z}/v1beta`})(),X=(()=>{const Z=k.replace(/\/+$/,"");return Z.endsWith("/v1beta")?Z:`${Z}/v1beta`})();if(y.value==="opencode")switch(g.platform){case"anthropic":return[Ce("anthropic",x,p)];case"openai":return[Ce("openai",x,p)];case"gemini":return[Ce("gemini",X,p)];case"antigravity":return[Ce("antigravity-claude",i,p,"opencode.json (Claude)"),Ce("antigravity-gemini",O,p,"opencode.json (Gemini)")];case"grok":return[Ce("grok",x,p)];default:return[Ce("openai",x,p)]}switch(g.platform){case"openai":return y.value==="claude"?re(k,p):y.value==="codex-ws"?ht(x,p):dt(x,p);case"gemini":return y.value==="codex"?be(x,p,"gemini"):[rt(u,p)];case"antigravity":return y.value==="codex"?be(x,p,"antigravity"):y.value==="gemini"?[rt(`${u}/antigravity`,p)]:re(`${u}/antigravity`,p);case"grok":return y.value==="claude"?Ke(k,p):y.value==="codex"?Ye(x,p):$e(x,p);case"deepseek":return y.value==="codex"?be(x,p,"deepseek"):re(k,p);case"minimax":return y.value==="codex"?be(x,p,"minimax"):re(k,p);case"composite":return y.value==="codex"?be(x,p,"composite"):re(k,p);default:return y.value==="codex"&&g.platform?be(x,p,g.platform):re(u,p)}});function re(u,p){let k,C;switch(P.value){case"unix":k="Terminal",C=`export ANTHROPIC_BASE_URL="${u}" 4export ANTHROPIC_AUTH_TOKEN="${p}" 5export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;case"cmd":k="Command Prompt",C=`set ANTHROPIC_BASE_URL=${u} 6set ANTHROPIC_AUTH_TOKEN=${p} 7set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;case"powershell":k="PowerShell",C=`$env:ANTHROPIC_BASE_URL="${u}" 8$env:ANTHROPIC_AUTH_TOKEN="${p}" 9$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`;break;default:k="Terminal",C=""}const x=P.value==="unix"?"~/.claude/settings.json":"%USERPROFILE%\\.claude\\settings.json",i=`{ 10 "$schema": "https://json.schemastore.org/claude-code-settings.json", 11 "env": { 12 "ANTHROPIC_BASE_URL": "${u}", 13 "ANTHROPIC_AUTH_TOKEN": "${p}", 14 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1" 15 } 16}`;return[{path:k,content:C},{path:x,content:i,hint:r("keys.useKeyModal.claudeSettingsHint")}]}function Ke(u,p){const k={ANTHROPIC_BASE_URL:u,ANTHROPIC_AUTH_TOKEN:p,ANTHROPIC_MODEL:"grok-4.5",ANTHROPIC_DEFAULT_OPUS_MODEL:"grok-4.5",ANTHROPIC_DEFAULT_SONNET_MODEL:"grok-4.5",ANTHROPIC_DEFAULT_HAIKU_MODEL:"grok-4.5",ANTHROPIC_DEFAULT_FABLE_MODEL:"grok-4.5",CLAUDE_CODE_SUBAGENT_MODEL:"grok-4.5",CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:"1"};let C,x;switch(P.value){case"unix":C="Terminal",x=Object.entries(k).map(([O,X])=>`export ${O}="${X}"`).join(` 17`);break;case"cmd":C="Command Prompt",x=Object.entries(k).map(([O,X])=>`set ${O}=${X}`).join(` 18`);break;case"powershell":C="PowerShell",x=Object.entries(k).map(([O,X])=>`$env:${O}="${X}"`).join(` 19`);break;default:C="Terminal",x=""}const i=P.value==="unix"?"~/.claude/settings.json":"%USERPROFILE%\\.claude\\settings.json";return[{path:C,content:x},{path:i,content:JSON.stringify({$schema:"https://json.schemastore.org/claude-code-settings.json",env:k},null,2),hint:r("keys.useKeyModal.claudeSettingsHint")}]}function rt(u,p){const k="gemini-2.5-flash",C=r("keys.useKeyModal.gemini.modelComment");let x,i,O;switch(P.value){case"unix":x="Terminal",i=`export GOOGLE_GEMINI_BASE_URL="${u}" 20export GEMINI_API_KEY="${p}" 21export GEMINI_MODEL="${k}" # ${C}`,O=`${ge("export")}
21 ${ue("GOOGLE_GEMINI_BASE_URL")}${ce("=")}${ne(`"${u}"`)} 22${ge("export")} ${ue("GEMINI_API_KEY")}${ce("=")}${ne(`"${p}"`)} 23${ge("export")} ${ue("GEMINI_MODEL")}${ce("=")}${ne(`"${k}"`)} ${v(`# ${C}`)}`;break;case"cmd":x="Command Prompt",i=`set GOOGLE_GEMINI_BASE_URL=${u} 24set GEMINI_API_KEY=${p} 25set GEMINI_MODEL=${k}`,O=`${ge("set")} ${ue("GOOGLE_GEMINI_BASE_URL")}${ce("=")}${ne(u)} 26${ge("set")} ${ue("GEMINI_API_KEY")}${ce("=")}${ne(p)} 27${ge("set")} ${ue("GEMINI_MODEL")}${ce("=")}${ne(k)} 28${v(`REM ${C}`)}`;break;case"powershell":x="PowerShell",i=`$env:GOOGLE_GEMINI_BASE_URL="${u}" 29$env:GEMINI_API_KEY="${p}" 30$env:GEMINI_MODEL="${k}" # ${C}`,O=`${ge("$env:")}${ue("GOOGLE_GEMINI_BASE_URL")}${ce("=")}${ne(`"${u}"`)} 31${ge("$env:")}${ue("GEMINI_API_KEY")}${ce("=")}${ne(`"${p}"`)} 32${ge("$env:")}${ue("GEMINI_MODEL")}${ce("=")}${ne(`"${k}"`)} ${v(`# ${C}`)}`;break;default:x="Terminal",i="",O=""}return{path:x,content:i,highlighted:O}}function dt(u,p){const C=P.value==="windows"?"%userprofile%\\.codex":"~/.codex",x=H("gpt-5.5"),i=ze(x),O=`model_provider = "code80" 33model = "${x}" 34review_model = "${x}" 35${i}disable_response_storage = true 36model_catalog_json = "${$t}" 37network_access = "enabled" 38windows_wsl_setup_acknowledged = true 39 40[model_providers.code80] 41name = "code80" 42base_url = "${u}" 43wire_api = "responses" 44${pe(p)} 45 46[features] 47goals = true`;return tt(C,O,p)}function pe(u){return F.value==="api-key"?`requires_openai_auth = false 48experimental_bearer_token = "${Ae(u)}" 49http_headers = { "x-openai-actor-authorization" = "local-image-extension" }`:"requires_openai_auth = true"}function tt(u,p,k){const C=[{path:`${u}/config.toml`,content:p,hint:r("keys.useKeyModal.openai.configTomlHint")}];return F.value==="legacy"&&C.push({path:`${u}/auth.json`,content:JSON.stringify({OPENAI_API_KEY:k},null,2)}),C}function Pe(u,p,k){return k?`${u}\\${p}`:`${u}/${p}`}function Ae(u){return u.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function $e(u,p){const k=P.value,C=k==="windows"||k==="cmd"||k==="powershell",x=C?"%userprofile%\\.grok":"~/.grok";let i,O;switch(k){case"cmd":i="Command Prompt",O=`set GROK_MODELS_BASE_URL=${u} 50set XAI_API_KEY=${p}`;break;case"powershell":case"windows":i="PowerShell",O=`$env:GROK_MODELS_BASE_URL="${u}" 51$env:XAI_API_KEY="${p}"`;break;default:i="Terminal",O=`export GROK_MODELS_BASE_URL="${u}" 52export XAI_API_KEY="${p}"`}const X=`${u.replace(/\/+$/,"")}/models`,Z=`# Grok Build CLI â Sub2API Grok group (API key auth). 53# Docs: ~/.grok/docs/user-guide/05-configuration.md + 11-custom-models.md 54# Verify after save: grok inspect 55# 56# IMPORTANT: api_backend must be "responses" for Sub2API Grok (POST /v1/responses). 57# If omitted, Grok Build defaults to chat_completions (/v1/chat/completions). 58# Keep api_backend = "responses" on every model entry. 59# 60# Prefer env_key over hardcoding api_key (never commit secrets). 61# Also export GROK_MODELS_BASE_URL + XAI_API_KEY in the shell block above. 62 63# Global inference / catalog endpoints (same role as env GROK_MODELS_BASE_URL). 64# When models_base_url is set, Grok uses API-key Bearer auth (no grok login required). 65[endpoints] 66models_base_url = "${u}" # inference base; model list defaults to {base}/models 67models_list_url = "${X}" # optional override (env: GROK_MODELS_LIST_URL) 68xai_api_base_url = "${u}" # public xAI API base override for gateway routing 69cli_chat_proxy_base_url = "${u}" # CLI chat-proxy base (env: GROK_CLI_CHAT_PROXY_BASE_URL) 70 71# Prefer API key when using a custom gateway (matches Sub2API). 72# Requires XAI_API_KEY env or per-model env_key / api_key. 73[auth] 74preferred_method = "api_key" 75 76[model."grok-4.5"] 77model = "grok-4.5" # id sent to the API 78name = "Grok 4.5" # shown in /model picker 79description = "Grok 4.5 via Sub2API (Responses)" 80# base_url inherits from [endpoints].models_base_url; override only if needed: 81# base_url = "${u}" 82env_key = "XAI_API_KEY" # or: api_key = "${p}" (not recommended) 83api_backend = "responses" # chat_completions | responses | messages 84context_window = 500000 # drives auto-compaction timing 85# Optional sampling (global defaults can live under [models] instead): 86# temperature = 0.7 87# top_p = 0.95 88# max_completion_tokens = 8192 89# Server-side (backend) web_search tools â only if your gateway exposes them: 90supports_backend_search = true 91 92[model."grok-build-0.1"] 93model = "grok-build-0.1" 94name = "Grok Build" 95description = "Coding / agent sessions (xAI recommends grok-build* for coding)" 96env_key = "XAI_API_KEY" 97api_backend = "responses" 98context_window = 256000 99supports_backend_search = true 100 101# Text multi-agent / client web_search sub-agent (NOT Imagine image/video). 102[model."grok-4.20-multi-agent-0309"] 103model = "grok-4.20-multi-agent-0309" 104name = "Grok 4.20 Multi Agent (text / web_search)" 105description = "Text multi-agent; use for web_search sub-agent, not image/video" 106env_key = "XAI_API_KEY" 107api_backend = "responses" 108context_window = 1000000 109supports_backend_search = true 110 111[model."grok-4.3"] 112model = "grok-4.3" 113name = "Grok 4.3" 114env_key = "XAI_API_KEY" 115api_backend = "responses" 116context_window = 1000000 117supports_backend_search = true 118 119# Optional short alias for /model grok: 120# [model."grok"] 121# model = "grok-4.5" 122# name = "Grok" 123# env_key = "XAI_API_KEY" 124# api_backend = "responses" 125# context_window = 1000000 126# supports_backend_search = true 127 128[models] 129# xAI recommends grok-build* for coding/agent sessions; use grok-4.5 for general chat. 130default = "grok-4.5" 131web_search = "grok-4.5" # client-side web_search tool model (must exist as [model.*]) 132image_description = "grok-4.5" # vision/describe-image helper model 133# Optional environment-wide sampling defaults (per-model values win): 134# temperature = 0.7 135# top_p = 0.95 136# max_completion_tokens = 8192 137# max_retries = 8 138 139[session] 140auto_compact_threshold_percent = 80 # auto-compact at this % of context_window (default 85) 141 142# Imagine tools: model IDs go to Sub2API media endpoints (not the text [model.*] catalog). 143# Enable only if the Grok group allows image/video generation. 144[features] 145image_gen = true 146video_gen = true 147image_gen_model_override = "grok-imagine-image-quality" # or grok-imagine-image 148image_edit_model_override = "grok-imagine-edit" 149# Optional feature flags (defaults shown in docs): 150# telemetry = false 151# remote_fetch = true # set false for air-gapped / pure-gateway catalogs 152# lsp_tools = false`;return[{path:i,content:O},{path:Pe(x,"config.toml",C),content:Z,hint:r("keys.useKeyModal.grok.configTomlHint")}]}function Ye(u,p){const k=P.value,C=k==="windows"||k==="cmd"||k==="powershell",x=C?"%userprofile%\\.codex":"~/.codex",i=H("grok-4.5");let O,X;switch(k){case"cmd":O="Command Prompt",X=`set SUB2API_API_KEY=${p}`;break;case"powershell":case"windows":O="PowerShell",X=`$env:SUB2API_API_KEY="${p}"`;break;default:O="Terminal",X=`export SUB2API_API_KEY="${p}"`}const Z=`# Codex CLI â Sub2API Grok group 153# Docs: Codex config reference (model_providers.*, wire_api = "responses") 154# 155# Text models only. Image/video: grok-imagine-image / grok-imagine-video on media endpoints. 156# Switch model: grok-4.5 | grok-4.3 | grok-build-0.1 | grok-4.20-multi-agent-0309 (text / web_search) 157 158model_provider = "sub2api" 159model = "${i}" 160model_catalog_json = "${$t}" 161# Optional: 162# review_model = "${i}" 163# model_reasoning_effort = "medium" 164# model_context_window = 500000 165# disable_response_storage = true 166# network_access = "enabled" 167# windows_wsl_setup_acknowledged = true 168 169[model_providers.sub2api] 170name = "Sub2API Grok" 171base_url = "${u}" 172# Prefer env_key (variable NAME). Do not combine with experimental_bearer_token. 173env_key = "SUB2API_API_KEY"
174# Fallback only if you cannot set env (discouraged â keeps secret on disk): 175# experimental_bearer_token = "${p}" 176wire_api = "responses" 177# API-key providers: do not require ChatGPT OAuth login 178requires_openai_auth = false 179# Grok/Sub2API path is HTTP/SSE; disable WS (Codex may otherwise try WebSocket first) 180supports_websockets = false 181 182# Optional: 183# [features] 184# goals = true`;return[{path:O,content:X},{path:Pe(x,"config.toml",C),content:Z,hint:r("keys.useKeyModal.grok.codexConfigTomlHint")}]}function be(u,p,k){const C=P.value==="windows",x=C?"%userprofile%\\.codex":"~/.codex",O={openai:"gpt-5.5",anthropic:"claude-sonnet-4-6",gemini:"gemini-2.5-pro",antigravity:"claude-sonnet-4-6",grok:"grok-4.5",kimi:"kimi-k2.5",zhipu:"glm-4.7",deepseek:"deepseek-v4-pro",minimax:"MiniMax-M3",opencode_go:"glm-5.3",composite:"gpt-5.5"}[k]||"",X=H(O),Te={anthropic:"Anthropic",openai:"OpenAI",gemini:"Gemini",antigravity:"Antigravity",grok:"Grok",kimi:"Kimi",zhipu:"Zhipu",deepseek:"DeepSeek",minimax:"MiniMax",opencode_go:"OpenCode",composite:"Composite",all:"All"}[k],Ue=C?`$env:SUB2API_API_KEY="${p}"`:`export SUB2API_API_KEY="${p}"`,ut=`# Codex CLI -> Sub2API ${Te} group 185model_provider = "sub2api" 186model = "${X}" 187review_model = "${X}" 188disable_response_storage = true 189model_catalog_json = "${$t}" 190 191[model_providers.sub2api] 192name = "Sub2API ${Te}" 193base_url = "${u}" 194env_key = "SUB2API_API_KEY" 195wire_api = "responses" 196requires_openai_auth = false 197supports_websockets = false`;return[{path:C?"PowerShell":"Terminal",content:Ue},{path:Pe(x,"config.toml",C),content:ut,hint:r(k==="deepseek"||k==="minimax"||k==="composite"?`keys.useKeyModal.${k}.codexConfigTomlHint`:"keys.useKeyModal.routedCodex.configTomlHint")}]}function ht(u,p){const C=P.value==="windows"?"%userprofile%\\.codex":"~/.codex",x=H("gpt-5.5"),i=ze(x),O=`model_provider = "code80" 198model = "${x}" 199review_model = "${x}" 200${i}disable_response_storage = true 201model_catalog_json = "${$t}" 202network_access = "enabled" 203windows_wsl_setup_acknowledged = true 204 205[model_providers.code80] 206name = "code80" 207base_url = "${u}" 208wire_api = "responses" 209supports_websockets = true 210${pe(p)} 211 212[features] 213responses_websockets_v2 = true 214goals = true`;return tt(C,O,p)}function Ce(u,p,k,C){const x={[u]:{options:{baseURL:p,apiKey:k}}},i={"gpt-6":{name:"GPT-6 (Astra)",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-6-astra":{name:"GPT-6 Astra",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-5.2":{name:"GPT-5.2",limit:{context:4e5,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{}}},"gpt-5.6":{name:"GPT-5.6 (Sol)",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-6-sol":{name:"GPT-6 Sol",limit:{context:105e4,output:128e3},options:{store:!1},variants:{none:{},low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-5.6-sol":{name:"GPT-5.6 Sol",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-5.6-terra":{name:"GPT-5.6 Terra",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-6-luna":{name:"GPT-6 Luna",limit:{context:105e4,output:128e3},options:{store:!1},variants:{none:{},low:{},medium:{},high:{},xhigh:{},max:{}}},"gpt-5.6-luna":{name:"GPT-5.6 Luna",limit:{context:105e4,output:128e3},options:{store:!1},variants:{low:{},medium:{},high:{},xhigh:{},max:{}}},"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:{}}},"codex-mini-latest":{name:"Codex Mini",limit:{context:2e5,output:1e5},options:{store:!1},variants:{low:{},medium:{},high:{}}}},O={"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.5-flash":{name:"Gemini 3.5 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-3.6-flash":{name:"Gemini 3.6 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-3.7-flash":{name:"Gemini 3.7 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-3.8-flash":{name:"Gemini 3.8 Flash",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"gemini-3-flash-preview":{name:"Gemini 3 Flash Preview",limit:{context:1048576,output:65536},modalities:{input:["text","image","pdf"],output:["text"]}},"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"}}}},X={"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-1":{name:"Claude Fable 5.1",limit:{context:1048576,output:128e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{type:"adaptive"}}},"claude-fable-5":{name:"Claude Fable 5",limit:{context:1048576,output:128e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{type:"adaptive"}}},"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"}}}},Te={"grok-4.7":{name:"Grok 4.7",limit:{context:5e5,output:64e3}},"grok-4.6":{name:"Grok 4.6",limit:{context:5e5,output:64e3}},"grok-4.5":{name:"Grok 4.5",limit:{context:5e5,output:64e3}},"grok-build-0.1":{name:"Grok Build 0.1",limit:{context:256e3,output:64e3}}
214,"grok-4.20-multi-agent-0309":{name:"Grok 4.20 Multi Agent (text / web_search)",limit:{context:1e6,output:64e3}},"grok-4.3":{name:"Grok 4.3",limit:{context:1e6,output:64e3}}};u==="gemini"?(x[u].npm="@ai-sdk/google",x[u].models=O):u==="anthropic"?(x[u].npm="@ai-sdk/anthropic",x[u].models={"claude-opus-5-5":{name:"Claude Opus 5.5",limit:{context:1e6,output:128e3},modalities:{input:["text","image","pdf"],output:["text"]},options:{thinking:{type:"adaptive"},effort:"medium"},variants:{low:{effort:"low"},medium:{effort:"medium"},high:{effort:"high"},xhigh:{effort:"xhigh"},max:{effort:"max"}}}}):u==="antigravity-claude"?(x[u].npm="@ai-sdk/anthropic",x[u].name="Antigravity (Claude)",x[u].models=Z):u==="antigravity-gemini"?(x[u].npm="@ai-sdk/google",x[u].name="Antigravity (Gemini)",x[u].models=X):u==="openai"?x[u].models=i:u==="grok"&&(x[u].npm="@ai-sdk/openai-compatible",x[u].name="Grok via Sub2API",x[u].models=Te);const Ue=u==="openai"?{build:{options:{store:!1}},plan:{options:{store:!1}}}:void 0,ut=JSON.stringify({provider:x,...Ue?{agent:Ue}:{},$schema:"https://opencode.ai/config.json"},null,2);return{path:C??"opencode.json",content:ut,hint:r("keys.useKeyModal.opencode.hint")}}const bt=u=>!u||u.length<=12?"â¢â¢â¢â¢â¢â¢â¢â¢â¢â¢â¢â¢":`${u.slice(0,8)}${"â¢".repeat(Math.max(0,u.length-12))}${u.slice(-4)}`,It=async(u,p)=>{await le(u,r("keys.copied"))&&(U.value=p,setTimeout(()=>{U.value=null},2e3))};return(u,p)=>(d(),Y(Et,{show:h.show,title:l(r)("keys.useKeyModal.title"),width:"wide",onClose:p[4]||(p[4]=k=>f("close"))},{footer:N(()=>[e("div",zo,[e("button",{onClick:p[2]||(p[2]=k=>$.value=!$.value),class:"btn btn-secondary flex items-center gap-2"},[$.value?(d(),c("svg",Wo,[...p[8]||(p[8]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"},null,-1)])])):(d(),c("svg",Yo,[...p[9]||(p[9]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"},null,-1)])])),te(" "+n($.value?l(r)("keys.useKeyModal.hideKey"):l(r)("keys.useKeyModal.showKey")),1)]),e("button",{onClick:p[3]||(p[3]=k=>f("close")),class:"btn btn-secondary"},n(l(r)("common.close")),1)])]),default:N(()=>[e("div",ao,[h.platform?(d(),c(ee,{key:1},[e("p",no,n(De.value),1),Ie.value.length?(d(),c("div",ro,[e("nav",uo,[(d(!0),c(ee,null,me(Ie.value,k=>(d(),c("button",{key:k.id,type:"button",onClick:C=>y.value=k.id,class:I(["whitespace-nowrap py-2.5 px-1 border-b-2 font-medium text-sm transition-colors",y.value===k.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",po,[(d(),Y(os(k.icon),{class:"w-4 h-4"})),te(" "+n(k.label),1)])],10,co))),128))])])):b("",!0),W.value?(d(),c("div",mo,[e("div",_o,[e("p",go,n(l(r)("keys.useKeyModal.openai.authModeTitle")),1),e("p",ko,n(l(r)("keys.useKeyModal.openai.authModeDescription")),1)]),e("div",{class:"grid grid-cols-2 gap-1 rounded-lg bg-gray-100 p-1 dark:bg-dark-700",role:"radiogroup","aria-label":l(r)("keys.useKeyModal.openai.authModeTitle")},[e("button",{type:"button",role:"radio","data-testid":"codex-auth-mode-legacy","aria-checked":F.value==="legacy",class:I(["rounded-md px-3 py-2 text-sm font-medium transition-colors",F.value==="legacy"?"bg-white text-primary-700 shadow-sm dark:bg-dark-800 dark:text-primary-300":"text-gray-600 hover:text-gray-900 dark:text-dark-300 dark:hover:text-white"]),onClick:p[0]||(p[0]=k=>F.value="legacy")},n(l(r)("keys.useKeyModal.openai.authModeLegacy")),11,vo),e("button",{type:"button",role:"radio","data-testid":"codex-auth-mode-api-key","aria-checked":F.value==="api-key",class:I(["rounded-md px-3 py-2 text-sm font-medium transition-colors",F.value==="api-key"?"bg-white text-primary-700 shadow-sm dark:bg-dark-800 dark:text-primary-300":"text-gray-600 hover:text-gray-900 dark:text-dark-300 dark:hover:text-white"]),onClick:p[1]||(p[1]=k=>F.value="api-key")},n(l(r)("keys.useKeyModal.openai.authModeApiKey")),11,ho)],8,yo),F.value==="api-key"?(d(),c("div",bo,[R(J,{name:"exclamationCircle",size:"sm",class:"mt-0.5 flex-shrink-0"}),e("p",null,n(l(r)("keys.useKeyModal.openai.authModeApiKeyRestartNotice")),1)])):b("",!0)])):b("",!0),E.value?(d(),c("div",xo,[e("nav",fo,[(d(!0),c(ee,null,me(qe.value,k=>(d(),c("button",{key:k.id,type:"button",onClick:C=>P.value=k.id,class:I(["whitespace-nowrap py-2.5 px-1 border-b-2 font-medium text-sm transition-colors",P.value===k.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",$o,[(d(),Y(os(k.icon),{class:"w-4 h-4"})),te(" "+n(k.label),1)])],10,wo))),128))])])):b("",!0),e("div",Co,[(d(!0),c(ee,null,me(We.value,(k,C)=>(d(),c("div",{key:C,class:"relative"},[k.hint?(d(),c("p",Mo,[R(J,{name:"exclamationCircle",size:"sm",class:"flex-shrink-0"}),te(" "+n(k.hint),1)])):b("",!0),e("div",So,[e("div",Eo,[e("span",Io,n(k.path),1),e("button",{type:"button",onClick:x=>It(k.content,C),class:I(["flex flex-shrink-0 items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-lg transition-colors",U.value===C?"bg-green-500/20 text-green-400":"bg-gray-700 hover:bg-gray-600 text-gray-300 hover:text-white"])},[U.value===C?(d(),c("svg",To,[...p[6]||(p[6]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):(d(),c("svg",Lo,[...p[7]||(p[7]=[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)])])),te(" "+n(U.value===C?l(r)("keys.useKeyModal.copied"):l(r)("keys.useKeyModal.copy")),1)],10,Ao)]),e("pre",Ko,[k.highlighted?(d(),c("code",{key:0,innerHTML:k.highlighted},null,8,Po)):(d(),c("code",{key:1,textContent:n(k.content)},null,8,Go))])])]))),128))]),_e.value?(d(),c("section",Oo,[e("div",Do,[e("div",Ro,[e("h3",Uo,n(l(r)("keys.useKeyModal.codexModelCatalog.title")),1),e("p",No,n(l(r)("keys.useKeyModal.codexModelCatalog.description")),1),e("p",Bo,n(Se.value),1)]),z.value==="ready"?(d(),c("button",{key:0,t
214ype:"button",class:"btn btn-primary min-h-9 flex-shrink-0 px-3 text-xs",onClick:Ze},[R(J,{name:"download",size:"sm",class:"mr-1.5"}),te(" "+n(l(r)("keys.useKeyModal.codexModelCatalog.download")),1)])):(d(),c("button",{key:1,type:"button","data-testid":"codex-model-catalog-fetch",class:"btn btn-primary min-h-9 flex-shrink-0 px-3 text-xs",disabled:z.value==="loading"||!h.apiKey,onClick:Qe},[R(J,{name:"refresh",size:"sm",class:I(["mr-1.5",z.value==="loading"?"animate-spin":""])},null,8,["class"]),te(" "+n(z.value==="error"?l(r)("keys.useKeyModal.codexModelCatalog.retry"):l(r)("keys.useKeyModal.codexModelCatalog.fetch")),1)],8,Fo))]),z.value==="ready"?(d(),c("p",Ho,n(l(r)("keys.useKeyModal.codexModelCatalog.modelsCount",{count:D.value})),1)):z.value==="error"?(d(),c("p",jo,n(l(r)("keys.useKeyModal.codexModelCatalog.errorDescription")),1)):b("",!0)])):b("",!0),Je.value?(d(),c("div",qo,[R(J,{name:"infoCircle",size:"md",class:"text-blue-500 flex-shrink-0 mt-0.5"}),e("p",Vo,n(ae.value),1)])):b("",!0)],64)):(d(),c("div",oo,[p[5]||(p[5]=e("svg",{class:"w-5 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",lo,n(l(r)("keys.useKeyModal.noGroupTitle")),1),e("p",io,n(l(r)("keys.useKeyModal.noGroupDescription")),1)])]))])]),_:1},8,["show","title"]))}}),Jo={key:0,class:"flex flex-wrap gap-2"},Qo=["title"],Zo={class:"font-medium text-gray-600 dark:text-gray-300"},el={key:1,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"},tl=["title"],sl={class:"group/endpoint relative flex items-center gap-1.5"},al={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"},ol={key:0,class:"max-w-[24rem] break-words text-xs leading-5 text-slate-600 dark:text-slate-200"},ll=["onClick","onKeydown"],il=["aria-label","onClick"],nl={key:0,class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2.2"},rl={key:1,class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},dl=["href","title"],ul=yt({__name:"EndpointPopover",props:{apiBaseUrl:{},customEndpoints:{},health:{},recommendedEndpoint:{}},setup(h){const s=h,{t:g}=vt(),{copyToClipboard:f}=Bt(),r=M(null);let le;const U=K(()=>{const L=[];s.apiBaseUrl&&L.push({name:g("keys.endpoints.title"),endpoint:s.apiBaseUrl,description:"",isDefault:!0});for(const D of s.customEndpoints)L.push({...D,isDefault:!1});return L});function P(L){var D;return(D=s.health)==null?void 0:D[L]}function y(L){const D=P(L);if(!D)return"";const T=g(ma(D.status));return D.latencyMs===void 0?`${T} · ${g("groups.siteMonitor.probing")}`:D.latencyMs===null?`${T} · ${g("groups.siteMonitor.probeFailed")}`:`${T} · ${g("groups.siteMonitor.latency")} ${Math.round(D.latencyMs)}ms`}async function $(L){await f(L,g("keys.endpoints.copied"))&&(r.value=L,le!==void 0&&window.clearTimeout(le),le=window.setTimeout(()=>{r.value===L&&(r.value=null)},1800))}function F(L){return r.value===L?g("keys.endpoints.copiedHint"):g("keys.endpoints.clickToCopy")}function z(L){return`https://www.tcptest.cn/http/${encodeURIComponent(L)}`}return zs(()=>{le!==void 0&&window.clearTimeout(le)}),(L,D)=>U.value.length>0?(d(),c("div",Jo,[(d(!0),c(ee,null,me(U.value,(T,ie)=>{var _e,Se;return d(),c("div",{key:ie,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"},[P(T.endpoint)?(d(),c("span",{key:0,class:I(["h-2 w-2 shrink-0 rounded-full",l(ns)((_e=P(T.endpoint))==null?void 0:_e.
214status)]),title:y(T.endpoint),"aria-hidden":"true"},null,10,Qo)):b("",!0),e("span",Zo,n(T.name),1),T.isDefault?(d(),c("span",el,n(l(g)("keys.endpoints.default")),1)):b("",!0),h.recommendedEndpoint&&T.endpoint===h.recommendedEndpoint?(d(),c("span",{key:2,class:"rounded bg-emerald-50 px-1 py-px text-[10px] font-medium leading-tight text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400",title:l(g)("groups.siteMonitor.recommendedHint")},n(l(g)("groups.siteMonitor.recommended")),9,tl)):b("",!0),D[5]||(D[5]=e("span",{class:"text-gray-300 dark:text-dark-500"},"|",-1)),e("div",sl,[e("div",al,[T.description?(d(),c("p",ol,n(T.description),1)):b("",!0),y(T.endpoint)?(d(),c("p",{key:1,class:I(["flex items-center gap-1.5 text-[11px] leading-4 text-slate-500 dark:text-slate-300",T.description?"mt-1.5":""])},[e("span",{class:I(["h-1.5 w-1.5 shrink-0 rounded-full",l(ns)((Se=P(T.endpoint))==null?void 0:Se.status)])},null,2),te(" "+n(y(T.endpoint)),1)],2)):b("",!0),e("p",{class:I(["flex items-center gap-1.5 text-[11px] leading-4 text-primary-600 dark:text-primary-300",T.description||y(T.endpoint)?"mt-1.5":""])},[D[0]||(D[0]=e("span",{class:"h-1.5 w-1.5 rounded-full bg-primary-500 dark:bg-primary-300"},null,-1)),te(" "+n(F(T.endpoint)),1)],2),D[1]||(D[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:de=>$(T.endpoint),onKeydown:[ls(nt(de=>$(T.endpoint),["prevent"]),["enter"]),ls(nt(de=>$(T.endpoint),["prevent"]),["space"])]},n(T.endpoint),41,ll),e("button",{type:"button",class:I(["rounded p-0.5 transition-colors",r.value===T.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":F(T.endpoint),onClick:de=>$(T.endpoint)},[r.value===T.endpoint?(d(),c("svg",nl,[...D[2]||(D[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):(d(),c("svg",rl,[...D[3]||(D[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,il),e("a",{href:z(T.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:l(g)("keys.endpoints.speedTest")},[...D[4]||(D[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,dl)])])}),128))])):b("",!0)}}),cl={class:"flex w-full items-center gap-2"},pl={class:"ml-auto text-[11px] tabular-nums text-slate-500 dark:text-slate-400"},Dt=yt({__name:"GroupSectionHeader",props:{series:{},billing:{},count:{default:0}},setup(h){const s=h,{t:g}=vt(),f=K(()=>ga(s.series)),r=K(()=>g(`keys.series.${s.series}`));return(le,U)=>(d(),c("div",cl,[e("span",{class:I(["h-3.5 w-1 shrink-0 rounded-full",f.value.groupAccent])},null,2),e("span",{class:I(["text-[11px] font-bold uppercase tracking-wide",f.value.groupTitle])},n(r.value),3),U[0]||(U[0]=e("span",{class:"text-slate-300 dark:text-slate-600","aria-hidden":"true"},"·",-1)),R(_a,{type:h.billing,size:"xs"},null,8,["type"]),e("span",pl,n(h.count),1)]))}});function Ct(h){return typeof h=="object"&&h!==null&&h.kind==="group"}const Nt=h=>h==="subscription"?0:1,ml=h=>{var s;return h.subscriptionType==="subscription"||h.billingSubscriptionGroupId!=null||(((s=h.billingSubscriptionGroupIds)==null?void 0:s.length)??0)>0?"subscription":"standard"},ds=(h,s)=>`${h}|${s}`,_l=(h,s)=>-(Rt(h)*2+Nt(s)+1);function gl(h,{collapseSingleBucket:s=!0}={}){const g=[],f=[];for(const y of h){if(y.value==null||y.value===0){g.push(y);continue}const $=ka(y.label,y.platform),F=ml(y),z=y.userRate??y.rate;f.push({opt:y,series:$,billing:F,effRate:z})}f.sort((y,$)=>{const F=Rt(y.series)-Rt($.series);if(F!==0)return F;const z=Nt(y.billing)-Nt($.billing);if(z!==0)return z;if(y.effRate!==$.effRate)return y.effRate-$.effRate;const L=y.opt.label.localeCompare($.opt.label,"zh-Hans-CN");return L!==0?L:y.opt.value-$.opt.value});const r=new Map;for(const y of f){const $=ds(y.series,y.billing);r.set($,(r.get($)??0)+1)}const le=!s||r.size>1,U=[...g];let P=null;for(const y of f){const $=ds(y.series,y.billing);le&&$!==P&&(P=$,U.push({value:_l(y.series,y.billing),kind:"group",disabled:!0,label:"",series:y.series,billing:y.billing,count:r.get($)??0})),U.push(y.opt)}return U}const kl=["anthropic","openai","domestic","other"],yl={anthropic:"anthropic",openai:"openai",kimi:"domestic",zhipu:"domestic",deepseek:"domestic",minimax:"domestic",gemini:"other",grok:"other",antigravity:"other",composite:"other",opencode_go:"other",all:"other"};function us(h){return yl[h]??"other"}const vl={anthropic:["anthropic"],openai:["openai"],domestic:["deepseek","kimi"],other:["gemini","grok"]},hl="gpt-5.5",bl="grok-4.5",xl=`({ 215 request: { 216 url: "{{baseUrl}}".replace(/\\/+$/, "").replace(/\\/v1$/, "") + "/v1/usage", 217 method: "GET", 218 headers: { "Authorization": "Bearer {{apiKey}}" } 219 }, 220 extractor: function(response) { 221 const remaining = response?.remaining ?? response?.quota?.remaining ?? response?.balance; 222 const unit = response?.unit ?? response?.quota?.unit ?? "USD"; 223 return { 224 isValid: response?.is_active ?? response?.isValid ?? true, 225 remaining, 226 unit 227 }; 228 } 229 })`;function fl(h){const s=h.replace(/\/+$/,"");return s.endsWith("/v1")?s:`${s}/v1`}function wl(h){return h.replace(/\/+$/,"")}function $l(h,s,g){switch(h||"anthropic"){case"antigravity":return{app:s==="gemini"?"gemini":"claude",endpoint:`${g.replace(/\/+$/,"")}/antigravity`};case"openai":return{app:"codex",endpoint:wl(g),model:hl};case"gemini":return{app:"gemini",endpoint:g};case"grok":return{app:"grokbuild",endpoint:fl(g),model:bl};default:return{app:"claude",endpoint:g}}}function Cl(h){const s=$l(h.platform,h.clientType,h.baseUrl),g=[["resource","provider"],["app",s.app],["name",h.providerName],["homepage",h.baseUrl],["endpoint",s.endpoint],["apiKey",h.apiKey],["configFormat","json"],["usageEnabled","true"],["usageScript",btoa(h.usageScript)],["usageAutoInterval","30"]];return s.model&&g.splice(2,0,["model",s.model]),`ccswitch://v1/import?${new URLSearchParams(g).toString()}`}const Ml={class:"flex flex-col gap-3"},Sl={class:"flex flex-wrap items-center gap-3"},El={key:2,class:"select-option-label"},Il={key:0,class:"flex flex-wrap items-center gap-3 text-sm"},Al={class:"text-gray-600 dark:text-gray-300"},Tl=["disabled"],Ll={class:"flex justify-end gap-3"},Kl=["disabled","title"],Pl=["title"],Gl={class:"hidden md:inline"},Ol={key:0,class:"absolute right-0 top-full z-50 mt-1 max-h-80 w-48 overflow-y-auto rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-dark-600 dark:bg-dark-800"},Dl=["onClick"],Rl={class:"font-mono text-xs text-gray-500 dark:text-gray-400"},Ul={class:"flex items-center gap-2"},Nl={class:"code text-xs"},Bl=["onClick","title"],Fl={class:"flex items-center gap-1.5"},Hl={class:"font-medium text-gray-900 dark:text-white"},jl={class:"group/dropdown relative"},ql=["onClick","title"],Vl={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},zl={class:"text-xs text-gray-500 dark:text-gray-400"},Wl={class:"flex items-center gap-2"},Yl=["disabled","onClick","title"],Xl={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},Jl={class:"text-sm"},Ql={class:"flex items-center gap-1.5"},Zl={class:"text-gray-500 dark:text-gray-400"},ei={class:"font-medium text-gray-900 dark:text-white"},ti={class:"mt-0.5 flex items-center gap-1.5"},si={class:"text-gray-500 dark:text-gray-400"},ai={class:"font-medium text-gray-900 dark:text-white"},oi={key:0,class:"mt-1.5"},li={class:"flex items-center gap-1.5"},ii={class:"text-gray-500 dark:text-gray-400"},ni={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"}
229,ri={key:0,class:"space-y-1.5 min-w-[140px]"},di={key:0},ui={class:"flex items-center justify-between text-xs"},ci={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},pi={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},mi={key:1},_i={class:"flex items-center justify-between text-xs"},gi={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},ki={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},yi={key:2},vi={class:"flex items-center justify-between text-xs"},hi={class:"h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},bi={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500 tabular-nums"},xi=["onClick","title"],fi={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},wi={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},$i={key:0,class:"text-sm text-gray-500 dark:text-dark-400"},Ci={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Mi={key:0,class:"text-sm text-gray-500 dark:text-dark-400"},Si={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Ei={class:"text-sm text-gray-500 dark:text-dark-400"},Ii={class:"flex items-center gap-1"},Ai=["onClick"],Ti={class:"text-xs"},Li=["onClick"],Ki={class:"text-xs"},Pi=["onClick"],Gi={class:"text-xs"},Oi=["onClick"],Di={class:"text-xs"},Ri=["onClick"],Ui={class:"text-xs"},Ni={class:"input-label"},Bi=["placeholder"],Fi={key:0,"data-tour":"key-form-provider"},Hi={class:"input-label"},ji={class:"grid grid-cols-2 gap-2 sm:grid-cols-4"},qi=["value","checked","disabled","onChange"],Vi={class:"flex h-8 items-center justify-center gap-1.5","aria-hidden":"true"},zi={class:"text-sm font-semibold text-gray-800 dark:text-gray-100"},Wi={key:0,class:"absolute right-1.5 top-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-primary-500 text-white","aria-hidden":"true"},Yi={class:"mt-2 text-xs leading-5 text-gray-500 dark:text-gray-400","aria-live":"polite"},Xi={class:"input-label",for:"key-form-group"},Ji={key:1,class:"text-gray-400"},Qi={key:1,class:"space-y-3"},Zi={class:"input-label mb-0"},en={class:"input-hint -mt-1"},tn={class:"max-h-72 space-y-1.5 overflow-y-auto"},sn=["checked","onChange"],an={class:"min-w-0 flex-1"},on={class:"truncate text-sm font-medium text-gray-900 dark:text-white"},ln={class:"text-xs text-gray-500 dark:text-gray-400"},nn=["disabled","title","onClick"],rn=["disabled","title","onClick"],dn={key:0,class:"input-hint italic"},un={key:2,class:"space-y-3"},cn={class:"flex items-center justify-between"},pn={class:"input-label mb-0"},mn=["aria-checked","disabled","title"],_n={key:0,class:"input-hint"},gn={key:1,class:"space-y-3 pt-1"},kn={class:"input-hint -mt-1"},yn={class:"max-h-72 space-y-1.5 overflow-y-auto"},vn=["checked","onChange"],hn={class:"min-w-0 flex-1"},bn={class:"truncate text-sm font-medium text-gray-900 dark:text-white"},xn={class:"text-xs text-gray-500 dark:text-gray-400"},fn=["disabled","title","onClick"],wn=["disabled","title","onClick"],$n={key:0,class:"input-hint italic"},Cn={key:3,class:"space-y-3"},Mn={class:"flex items-center justify-between"},Sn={class:"input-label mb-0"},En={key:0},In=["placeholder"],An={key:0,class:"mt-1 text-sm text-red-500"},Tn={key:1,class:"input-hint"},Ln={key:4},Kn={class:"input-label"},Pn={class:"space-y-3"},Gn={class:"flex items-center justify-between"},On={class:"input-label mb-0"},Dn={key:0,class:"space-y-4 pt-2"},Rn={class:"input-label"},Un=["placeholder"],Nn={class:"input-hint"},Bn={class:"input-label"},Fn=["placeholder"],Hn={class:"input-hint"},jn={class:"space-y-3"},qn={class:"input-label"},Vn={class:"space-y-4"},zn={class:"relative"},Wn=["placeholder"],Yn={class:"input-hint"},Xn={key:0},Jn={class:"input-label"},Qn={class:"flex items-center gap-2"},Zn={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700"},er={class:"font-medium text-gray-900 dark:text-white"},tr={class:"text-gray-500 dark:text-gray-400"},sr=["title"],ar={class:"space-y-3"},or={class:"flex items-center justify-between"},lr={class:"input-label mb-0"},ir={key:0,class:"space-y-4 pt-2"},nr={class:"input-hint -mt-2"},rr={class:"input-label"},dr={class:"relative"},ur={key:0,class:"mt-2"},cr={class:"flex items-center gap-2"},pr={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},mr={class:"text-gray-500 dark:text-gray-400"},_r={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},gr={class:"input-label"},kr={class:"relative"},yr={key:0,class:"mt-2"},vr={class:"flex items-center gap-2"},hr={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},br={class:"text-gray-500 dark:text-gray-400"},xr={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},fr={class:"input-label"},wr={class:"relative"},$r={key:0,class:"mt-2"},Cr={class:"flex items-center gap-2"},Mr={class:"flex-1 rounded-lg bg-gray-100 px-3 py-2 dark:bg-dark-700 text-sm"},Sr={class:"text-gray-500 dark:text-gray-400"},Er={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-600"},Ir={key:0},Ar={class:"space-y-3"},Tr={class:"flex items-center justify-between"},Lr={class:"input-label mb-0"},Kr={key:0,class:"space-y-4 pt-2"},Pr={class:"flex flex-wrap gap-2"},Gr=["onClick"],Or={class:"input-label"},Dr={class:"input-hint"},Rr={key:0,class:"text-sm"},Ur={class:"text-gray-500 dark:text-gray-400"},Nr={class:"font-medium text-gray-900 dark:text-white"},Br={class:"flex justify-end gap-3"},Fr=["disabled"],Hr={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},jr={class:"space-y-4"},qr={class:"text-sm text-gray-600 dark:text-gray-400"},Vr={class:"grid grid-cols-2 gap-3"},zr={class:"font-medium text-gray-900 dark:text-white"},Wr={class:"text-xs text-gray-500 dark:text-gray-400"},Yr={class:"font-medium text-gray-900 dark:text-white"},Xr={class:"text-xs text-gray-500 dark:text-gray-400"},Jr={class:"flex justify-end"},Qr={class:"border-b border-gray-100 p-2 dark:border-dark-700"},Zr={class:"relative"},ed=["placeholder"],td={class:"max-h-80 overflow-y-auto p-1.5"},sd={key:0,class:"mt-1 flex select-none items-center rounded-md bg-gray-50 px-3 py-1.5 first:mt-0 dark:bg-dark-900/70"},ad=["onClick","title"],od={key:0,class:"py-4 text-center text-sm text-gray-400 dark:text-gray-500"},cs="api-key-hidden-columns",Mt="api-key-column-settings-version",kt=3,Rd=yt({__name:"KeysView",setup(h){const{t:s}=vt(),g=t=>{const a=new Date(t),m=G=>G.toString().padStart(2,"0");return`${a.getFullYear()}-${m(a.getMonth()+1)}-${m(a.getDate())}T${m(a.getHours())}:${m(a.getMinutes())}`},f=ps(),r=Js(),{copyToClipboard:le}=Bt(),U=K(()=>Qs(sa.linkMonthlySubscription)),P=K(()=>[{key:"name",label:s("common.name"),sortable:!0},{key:"id",label:s("keys.id"),sortable:!0},{key:"key",label:s("keys.apiKey"),sortable:!1},{key:"group",label:s("keys.group"),sortable:!1},...U.value?[{key:"link_monthly_subscription",label:s("keys.linkMonthlyGroup"),sortable:!1}]:[],{key:"current_concurrency",label:s("keys.currentConcurrency"),sortable:!0},{key:"usage",label:s("keys.usage"),sortable:!1},{key:"rate_limit",label:s("keys.rateLimitColumn"),sortable:!1},{key:"expires_at",label:s("keys.expiresAt"),sortable:!0},{key:"status",label:s("common.status"),sortable:!0},{key:"last_used_at",label:s("keys.lastUsedAt"),sortable:!0},{key:"last_used_ip",label:s("keys.lastUsedIP"),sortable:!1},{key:"created_at",label:s("keys.created"),sortable:!0},{key:"actions",label:s("common.actions"),sortable:!1}]),y=new Set(["name","actions"]),$=["id","rate_limit","last_used_at","last_used_ip"],F={2:["last_used_ip"],3:["id"]},z=K(()=>P.value.filter(t=>!y.has(t.key))),L=St(new Set),D=()=>{try{localStorage.setItem(cs,JSON.stringify([...L])),localStorage.setItem(Mt,String(kt))}catch(t){console.error("Failed to save API key table columns:",t)}},T=()=>{L.clear();try{const t=localStorage.getItem(cs);if(t){const a=JSON.parse(t),m=new Set(P.value.map(A=>A.key));a.filter(A=>
229typeof A=="string"&&m.has(A)&&!y.has(A)).forEach(A=>L.add(A));const G=Number(localStorage.getItem(Mt)??"1");if(G<kt){for(let A=G+1;A<=kt;A++)for(const V of F[A]??[])m.has(V)&&!y.has(V)&&L.add(V);D()}else localStorage.setItem(Mt,String(kt))}else $.forEach(a=>L.add(a)),localStorage.setItem(Mt,String(kt))}catch(t){console.error("Failed to load API key table columns:",t),$.forEach(a=>L.add(a))}},ie=t=>{y.has(t)||(L.has(t)?L.delete(t):L.add(t),D())},_e=t=>!L.has(t),Se=K(()=>P.value.filter(t=>y.has(t.key)||!L.has(t.key))),de=M([]),se=M([]),Ee=M(!1),Oe=K(()=>de.value.filter(t=>se.value.includes(t.id))),q=t=>{const a=new Set(de.value.map(m=>m.id));se.value=[...new Set(t.map(Number))].filter(m=>a.has(m))},je=t=>{const a=new Set(t);se.value=se.value.filter(m=>!a.has(m)),ye()},Ie=M([]),B=M(!1),w=M(!1),E=M(new Date);let W=null;const qe=M({}),De=M({}),ae=M({page:1,page_size:oa(),total:0,pages:0}),Je=M({sort_by:"created_at",sort_order:"desc"}),Ve=M(""),Qe=M(""),Ze=M(""),Re=M(!1),H=M(!1),ze=M(!1),et=M(!1),we=M(!1),ge=M(!1),ue=M(!1),ce=M(!1),ne=M(null),v=M(null),We=M(null),re=M(null),Ke=M(null),rt=M(null),dt=M(null),pe=M(null),tt=M(new Map),Pe=M(null),Ae=M([]),$e=M([]),Ye=M(!1);let be=null;const ht=K(()=>window.location.origin),Ce=K(()=>{var t;return((t=Ke.value)==null?void 0:t.api_base_url)||ht.value}),bt=K(()=>{var t;return((t=Ke.value)==null?void 0:t.client_suggestion_url)||ht.value}),It=K(()=>{var a;const t=[];Ce.value&&t.push(Ce.value);for(const m of((a=Ke.value)==null?void 0:a.custom_endpoints)||[])m.endpoint&&t.push(m.endpoint);return t}),{refresh:u,healthByEndpoint:p,recommendedEndpoint:k}=aa(It),C=K(()=>re.value===null?null:de.value.find(t=>t.id===re.value)||null),x=(t,a)=>{a instanceof HTMLElement?tt.value.set(t,a):tt.value.delete(t)},i=M({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:"",link_monthly_subscription_group:!1,selected_linked_ids:[],billing_preference_ids:[]}),O=K(()=>{if(!i.value.use_custom_key||!i.value.custom_key)return"";const t=i.value.custom_key;return t.length<16?s("keys.customKeyTooShort"):/^[a-zA-Z0-9_-]+$/.test(t)?"":s("keys.customKeyInvalidChars")}),X=K(()=>[{value:"active",label:s("common.active")},{value:"inactive",label:s("common.inactive")}]),Z=(t,a)=>t.status==="quota_exhausted"||t.status==="expired"?a==="active":!0,Te=K(()=>[{value:"",label:s("keys.allStatus")},{value:"active",label:s("keys.status.active")},{value:"inactive",label:s("keys.status.inactive")},{value:"quota_exhausted",label:s("keys.status.quota_exhausted")},{value:"expired",label:s("keys.status.expired")}]),Ue=()=>{se.value=[],ae.value.page=1,ye()},ut=t=>{Ze.value=t,Ue()},_s=t=>{Qe.value=t,Ue()},Ft=K(()=>Ie.value.map(t=>({value:t.id,label:t.name,description:t.description,rate:t.rate_multiplier,userRate:De.value[t.id]??null,peakRateEnabled:t.peak_rate_enabled,peakStart:t.peak_start,peakEnd:t.peak_end,peakRateMultiplier:t.peak_rate_multiplier,subscriptionType:t.subscription_type,platform:t.platform,billingSubscriptionGroupId:t.billing_subscription_group_id??null,billingSubscriptionGroupIds:t.billing_subscription_group_ids}))),ke=K(()=>U.value&&Ae.value.length>0),xt=K(()=>gl(Ft.value)),Ne=M("anthropic"),Ht=K(()=>kl.map(t=>({value:t,label:s(`keys.providers.${t}`),count:Ie.value.filter(a=>us(a.platform)===t).length}))),jt=K(()=>H.value?xt.value:Ft.value.filter(t=>us(t.platform)===Ne.value)),qt=t=>{Ne.value!==t&&(Ne.value=t,i.value.group_id=null)};Xe([Re,Ht],([t,a],[m])=>{var G;t&&((!m||!a.some(A=>A.value===Ne.value&&A.count>0))&&qt(((G=a.find(A=>A.count>0))==null?void 0:G.value)??"anthropic"),jt.value.some(A=>A.value===i.value.group_id)||(i.value.group_id=null))});const ft=M(""),Vt=K(()=>{const t=ft.value.trim().toLowerCase();return t?xt.value.filter(a=>!Ct(a)&&(a.label.toLowerCase().includes(t)||(a.description?a.description.toLowerCase().includes(t):!1))):xt.value}),gs=K(()=>[{value:"",label:s("keys.allGroups")},{value:0,label:s("keys.noGroup")},...xt.value]),ks=async(t,a)=>{await le(t,s("keys.copied"))&&(We.value=a,setTimeout(()=>{We.value=null},800))},zt=t=>{if(!t||typeof t!="object")return!1;const{name:a,code:m}=t;return a==="AbortError"||m==="ERR_CANCELED"},ye=async()=>{be==null||be.abort();const t=new AbortController;be=t;const{signal:a}=t;B.value=!0;try{const m={};Ve.value&&(m.search=Ve.value),Qe.value&&(m.status=Qe.value),Ze.value!==""&&(m.group_id=Ze.value),m.sort_by=Je.value.sort_by,m.sort_order=Je.value.sort_order;const G=await Le.list(ae.value.page,ae.value.page_size,m,{signal:a});if(a.aborted)return;if(de.value=G.items,q(se.value),ae.value.total=G.total,ae.value.pages=G.pages,G.items.length>0){const A=G.items.map(V=>V.id);try{const V=await la.getDashboardApiKeysUsage(A,{signal:a});if(a.aborted)return;qe.value=V.stats}catch(V){zt(V)||console.error("Failed to load usage stats:",V)}}}catch(m){if(zt(m))return;f.showError(s("keys.failedToLoad"))}finally{be===t&&(B.value=!1)}},ys=async()=>{try{Ie.value=await is.getAvailable()}catch(t){console.error("Failed to load groups:",t)}},vs=async()=>{try{De.value=await is.getUserGroupRates()}catch(t){console.error("Failed to load user group rates:",t)}},hs=async()=>{try{Ke.value=await Zs.getPublicSettings(),u()}catch(t){console.error("Failed to load public settings:",t)}},At=async()=>
229{if(!U.value){Ae.value=[];return}try{Ae.value=await ea()}catch(t){console.error("Failed to load linkable subscriptions:",t),Ae.value=[]}if(i.value.selected_linked_ids.length>0){const t=new Set(Ae.value.map(a=>a.group_id));i.value.selected_linked_ids=i.value.selected_linked_ids.filter(a=>t.has(a))}i.value.link_monthly_subscription_group&&Ae.value.length===0&&(i.value.link_monthly_subscription_group=!1,i.value.selected_linked_ids=[])},bs=t=>{const a=i.value.selected_linked_ids.indexOf(t);if(a>0){const m=[...i.value.selected_linked_ids];[m[a-1],m[a]]=[m[a],m[a-1]],i.value.selected_linked_ids=m}},xs=t=>{const a=i.value.selected_linked_ids.indexOf(t);if(a>=0&&a<i.value.selected_linked_ids.length-1){const m=[...i.value.selected_linked_ids];[m[a],m[a+1]]=[m[a+1],m[a]],i.value.selected_linked_ids=m}},fs=t=>{i.value.selected_linked_ids.indexOf(t)>=0?i.value.selected_linked_ids=i.value.selected_linked_ids.filter(m=>m!==t):i.value.selected_linked_ids=[...i.value.selected_linked_ids,t]},ws=()=>{if(!ke.value){i.value.link_monthly_subscription_group=!1,i.value.selected_linked_ids=[];return}i.value.link_monthly_subscription_group=!i.value.link_monthly_subscription_group,i.value.link_monthly_subscription_group||(i.value.selected_linked_ids=[])},Wt=K(()=>{const t=i.value.selected_linked_ids,a=new Map(Ae.value.map(A=>[A.group_id,A])),m=t.map(A=>a.get(A)).filter(Boolean),G=Ae.value.filter(A=>!t.includes(A.group_id));return[...m,...G]}),Yt=t=>{if(!t)return"";try{return gt(t)}catch{return t}},Tt=K(()=>Ye.value&&$e.value.length>=2),Xt=async()=>{if(Ye.value=!1,i.value.group_id===null){$e.value=[];return}try{$e.value=await ta(i.value.group_id),Ye.value=!0}catch(t){console.error("Failed to load billing candidates:",t),$e.value=[]}if(i.value.billing_preference_ids.length>0){const t=new Set($e.value.map(a=>a.group_id));i.value.billing_preference_ids=i.value.billing_preference_ids.filter(a=>t.has(a))}};Xe(()=>i.value.group_id,()=>{(Re.value||H.value)&&Xt()});const Jt=K(()=>{const t=i.value.billing_preference_ids,a=new Map($e.value.map(A=>[A.group_id,A])),m=t.map(A=>a.get(A)).filter(Boolean),G=$e.value.filter(A=>!t.includes(A.group_id));return[...m,...G]}),$s=t=>{const a=i.value.billing_preference_ids;i.value.billing_preference_ids=a.includes(t)?a.filter(m=>m!==t):[...a,t]},Cs=t=>{const a=i.value.billing_preference_ids.indexOf(t);if(a>0){const m=[...i.value.billing_preference_ids];[m[a-1],m[a]]=[m[a],m[a-1]],i.value.billing_preference_ids=m}},Ms=t=>{const a=i.value.billing_preference_ids.indexOf(t);if(a>=0&&a<i.value.billing_preference_ids.length-1){const m=[...i.value.billing_preference_ids];[m[a],m[a+1]]=[m[a+1],m[a]],i.value.billing_preference_ids=m}},Ss=t=>{v.value=t,ge.value=!0},Es=()=>{ge.value=!1,v.value=null},Is=t=>{se.value=[],ae.value.page=t,ye()},As=t=>{se.value=[],ae.value.page_size=t,ae.value.page=1,ye()},Ts=(t,a)=>{se.value=[],Je.value.sort_by=t,Je.value.sort_order=a,ae.value.page=1,ye()},Ls=t=>{var A,V;v.value=t;const a=((A=t.ip_whitelist)==null?void 0:A.length)>0||((V=t.ip_blacklist)==null?void 0:V.length)>0,m=!!t.expires_at;let G=[];Array.isArray(t.linked_subscription_group_ids)&&t.linked_subscription_group_ids.length>0?G=[...t.linked_subscription_group_ids]:t.linked_subscription_group_id&&(G=[t.linked_subscription_group_id]),i.value={name:t.name,group_id:t.group_id,status:t.status==="quota_exhausted"||t.status==="expired"?"inactive":t.status,use_custom_key:!1,custom_key:"",enable_ip_restriction:a,ip_whitelist:(t.ip_whitelist||[]).join(` 230`),ip_blacklist:(t.ip_blacklist||[]).join(` 231`),enable_quota:t.quota>0,quota:t.quota>0?t.quota:null,enable_rate_limit:t.rate_limit_5h>0||t.rate_limit_1d>0||t.rate_limit_7d>0,rate_limit_5h:t.rate_limit_5h||null,rate_limit_1d:t.rate_limit_1d||null,rate_limit_7d:t.rate_limit_7d||null,enable_expiration:m,expiration_preset:"custom",expiration_date:t.expires_at?g(t.expires_at):"",link_monthly_subscription_group:G.length>0,selected_linked_ids:G,billing_preference_ids:[...t.billing_subscription_preference_ids??[]]},H.value=!0,At(),Xt()},Ks=async t=>{const a=t.status==="active"?"inactive":"active";try{await Le.toggleStatus(t.id,a),f.showSuccess(s(a==="active"?"keys.keyEnabledSuccess":"keys.keyDisabledSuccess")),ye()}catch{f.showError(s("keys.failedToUpdateStatus"))}},Ps=t=>{if(re.value===t.id)re.value=null,pe.value=null;else{const a=tt.value.get(t.id);if(a){const m=a.getBoundingClientRect(),G=400,A=Math.min(380,window.innerWidth-16),V=window.innerHeight-m.bottom,Me=m.top,xe=Math.max(8,Math.min(m.left,window.innerWidth-A-8));V<G&&Me>V?pe.value={bottom:window.innerHeight-m.top+4,left:xe}:pe.value={top:m.bottom+4,left:xe}}re.value=t.id,ft.value=""}},Gs=async(t,a)=>{if(re.value=null,pe.value=null,t.group_id!==a)try{await Le.update(t.id,{group_id:a}),f.showSuccess(s("keys.groupChangedSuccess")),ye()}catch{f.showError(s("keys.failedToChangeGroup"))}},Lt=t=>ke.value&&!!t.linked_subscription_group_id,Os=async t=>{if(!ke.value)return;const a=!Lt(t);Pe.value=t.id;try{await Le.update(t.id,{link_monthly_subscription_group:a}),f.showSuccess(s(a?"keys.linkMonthlyGroupEnabledSuccess":"keys.linkMonthlyGroupDisabledSuccess")),await ye()}catch(m){const G=wt(m,s("keys.failedToToggleLinkMonthlyGroup"));f.showError(G)}finally{Pe.value=null}},Qt=t=>{var m;const a=t.target;!a.closest(".group\\/dropdown")&&!((m=rt.value)!=null&&m.contains(a))&&(re.value=null,pe.value=null),dt.value&&!dt.value.contains(a)&&(ce.value=!1)},Ds=t=>{v.value=t,ze.value=!0},Rs=async()=>
231{if(i.value.group_id===null){f.showError(s("keys.groupRequired"));return}if(!H.value&&i.value.use_custom_key){if(!i.value.custom_key){f.showError(s("keys.customKeyRequired"));return}if(O.value){f.showError(O.value);return}}const t=o=>o.split(` 232`).map(S=>S.trim()).filter(S=>S.length>0),a=i.value.enable_ip_restriction?t(i.value.ip_whitelist):[],m=i.value.enable_ip_restriction?t(i.value.ip_blacklist):[],G=i.value.quota&&i.value.quota>0?i.value.quota:0;let A,V;if(i.value.enable_expiration&&i.value.expiration_date)if(H.value)V=new Date(i.value.expiration_date).toISOString();else{const o=new Date(i.value.expiration_date),S=new Date,j=Math.ceil((o.getTime()-S.getTime())/(1e3*60*60*24));A=j>0?j:1}else H.value&&(V="");const Me=i.value.enable_rate_limit?{rate_limit_5h:i.value.rate_limit_5h&&i.value.rate_limit_5h>0?i.value.rate_limit_5h:0,rate_limit_1d:i.value.rate_limit_1d&&i.value.rate_limit_1d>0?i.value.rate_limit_1d:0,rate_limit_7d:i.value.rate_limit_7d&&i.value.rate_limit_7d>0?i.value.rate_limit_7d:0}:{rate_limit_5h:0,rate_limit_1d:0,rate_limit_7d:0},xe=U.value,Ge=xe&&i.value.link_monthly_subscription_group&&ke.value,Be=Ge?[...i.value.selected_linked_ids]:void 0,ct=Tt.value,at=[...i.value.billing_preference_ids];w.value=!0;try{if(H.value&&v.value){const o={name:i.value.name,group_id:i.value.group_id,ip_whitelist:a,ip_blacklist:m,quota:G,expires_at:V,rate_limit_5h:Me.rate_limit_5h,rate_limit_1d:Me.rate_limit_1d,rate_limit_7d:Me.rate_limit_7d};xe&&(o.link_monthly_subscription_group=Ge,Be!==void 0&&(o.linked_subscription_group_ids=Be)),ct&&(o.billing_subscription_preference_ids=at),Z(v.value,i.value.status)&&(o.status=i.value.status),await Le.update(v.value.id,o),f.showSuccess(s("keys.keyUpdatedSuccess"))}else{const o=i.value.use_custom_key?i.value.custom_key:void 0;await Le.create(i.value.name,i.value.group_id,o,a,m,G,A,Me,xe?{link_monthly_subscription_group:Ge,...Be!==void 0?{linked_subscription_group_ids:Be}:{}}:void 0,ct&&at.length>0?at:void 0),f.showSuccess(s("keys.keyCreatedSuccess")),r.isCurrentStep('[data-tour="key-form-submit"]')&&r.nextStep(500)}Kt(),ye()}catch(o){const S=wt(o,s("keys.failedToSave"));f.showError(S)}finally{w.value=!1}},Us=async()=>{if(v.value)try{await Le.delete(v.value.id),f.showSuccess(s("keys.keyDeletedSuccess")),ze.value=!1,ye()}catch(t){const a=(t==null?void 0:t.message)||s("keys.failedToDelete");f.showError(a)}},Kt=()=>{Re.value=!1,H.value=!1,v.value=null,i.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:"",link_monthly_subscription_group:!1,selected_linked_ids:[],billing_preference_ids:[]},$e.value=[],Ye.value=!1},Zt=()=>{v.value=null,i.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:"",link_monthly_subscription_group:!1,selected_linked_ids:[],billing_preference_ids:[]},$e.value=[],Ye.value=!1,At(),Re.value=!0},Ns=()=>{et.value=!0},Bs=t=>{i.value.expiration_preset=t.toString();const a=new Date;a.setDate(a.getDate()+t),i.value.expiration_date=g(a.toISOString())},Fs=async()=>{var a;const t=v.value;if(t){et.value=!1;try{const m=await Le.update(t.id,{reset_quota:!0});f.showSuccess(s("keys.quotaResetSuccess")),t.quota_used=m.quota_used,t.status!==m.status&&(t.status=m.status,((a=v.value)==null?void 0:a.id)===t.id&&(i.value.status=m.status==="active"?"active":"inactive"))}catch(m){const G=wt(m,s("keys.failedToResetQuota"));f.showError(G)}}},Hs=()=>{we.value=!0},js=t=>{v.value=t,we.value=!0},qs=async()=>{if(v.value){we.value=!1;try{await Le.update(v.value.id,{reset_rate_limit_usage:!0}),f.showSuccess(s("keys.rateLimitResetSuccess")),await ye();const t=de.value.find(a=>a.id===v.value.id);t&&(v.value=t)}catch(t){const a=wt(t,s("keys.failedToResetRateLimit"));f.showError(a)}}},Vs=t=>{var m;const a=((m=t.group)==null?void 0:m.platform)||"anthropic";if(a==="antigravity"){ne.value=t,ue.value=!0;return}es(t,a==="gemini"?"gemini":"claude")},es=(t,a)=>{var xe,Ge;const m=bt.value,G=((xe=t.group)==null?void 0:xe.platform)||"anthropic",A=xl,V=(((Ge=Ke.value)==null?void 0:Ge.site_name)||f.siteName||"Code80").trim()||"Code80",Me=Cl({baseUrl:m,platform:G,clientType:a,providerName:V,apiKey:t.key,usageScript:A});try{window.open(Me,"_self"),setTimeout(()=>{document.hasFocus()&&f.showError(s("keys.ccSwitchNotInstalled"))},100)}catch{f.showError(s("keys.ccSwitchNotInstalled"))}},ts=t=>{ne.value&&es(ne.value,t),ue.value=!1,ne.value=null},ss=()=>{ue.value=!1,ne.value=null};function st(t){if(!t)return"";const a=new Date(t).getTime()-E.value.getTime();if(a<=0)return s("keys.resetNow");const m=Math.floor(a/864e5),G=Math.floor(a%864e5/36e5),A=Math.floor(a%36e5/6e4);return m>0?`${m}d ${G}h`:G>0?`${G}h ${A}m`:`${A}m`}return Ws(()=>{T(),ye(),ys(),vs(),hs(),At(),document.addEventListener("click",Qt),W=setInterval(()=>{E.value=new Date},6e4)}
232),Ys(()=>{document.removeEventListener("click",Qt),W&&clearInterval(W)}),(t,a)=>(d(),Y(ia,null,{default:N(()=>{var m,G,A,V,Me,xe,Ge,Be,ct,at;return[R(na,null,{filters:N(()=>{var o;return[e("div",Ml,[e("div",Sl,[R(ca,{modelValue:Ve.value,"onUpdate:modelValue":a[0]||(a[0]=S=>Ve.value=S),placeholder:l(s)("keys.searchPlaceholder"),class:"w-full sm:w-64",onSearch:Ue},null,8,["modelValue","placeholder"]),R(it,{"model-value":Ze.value,class:"w-40",options:gs.value,"onUpdate:modelValue":ut},{option:N(({option:S})=>[l(Ct)(S)?(d(),Y(Dt,{key:0,series:S.series,billing:S.billing,count:S.count},null,8,["series","billing","count"])):S.platform?(d(),Y(Ot,{key:1,name:S.label,platform:S.platform,"subscription-type":S.subscriptionType,"rate-multiplier":S.rate,"user-rate-multiplier":S.userRate},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier"])):(d(),c("span",El,n(S.label),1))]),_:1},8,["model-value","options"]),R(it,{"model-value":Qe.value,class:"w-40",options:Te.value,"onUpdate:modelValue":_s},null,8,["model-value","options"])]),R(ul,{"api-base-url":Ce.value,"custom-endpoints":((o=Ke.value)==null?void 0:o.custom_endpoints)||[],health:l(p),"recommended-endpoint":l(k)},null,8,["api-base-url","custom-endpoints","health","recommended-endpoint"]),se.value.length?(d(),c("div",Il,[e("span",Al,n(l(s)("keys.bulkEdit.selectedCount",{count:se.value.length})),1),e("button",{class:"btn btn-primary btn-sm",disabled:B.value,"data-test":"bulk-edit-keys",onClick:a[1]||(a[1]=S=>Ee.value=!0)},n(l(s)("keys.bulkEdit.title")),9,Tl),e("button",{class:"btn btn-secondary btn-sm",onClick:a[2]||(a[2]=S=>se.value=[])},n(l(s)("keys.bulkEdit.clearSelection")),1)])):b("",!0)])]}),actions:N(()=>[e("div",Ll,[e("button",{onClick:ye,disabled:B.value,class:"btn btn-secondary",title:l(s)("common.refresh")},[R(J,{name:"refresh",size:"md",class:I(B.value?"animate-spin":"")},null,8,["class"])],8,Kl),e("div",{class:"relative",ref_key:"columnDropdownRef",ref:dt},[e("button",{onClick:a[3]||(a[3]=o=>ce.value=!ce.value),class:"btn btn-secondary px-2 md:px-3",title:l(s)("keys.columnSettings")},[a[28]||(a[28]=e("svg",{class:"h-4 w-4 md:mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H4.125C3.504 4.5 3 5.004 3 5.625v12.75c0 .621.504 1.125 1.125 1.125z"})],-1)),e("span",Gl,n(l(s)("keys.columnSettings")),1)],8,Pl),ce.value?(d(),c("div",Ol,[(d(!0),c(ee,null,me(z.value,o=>(d(),c("button",{key:o.key,onClick:S=>ie(o.key),class:"flex w-full items-center justify-between px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[e("span",null,n(o.label),1),_e(o.key)?(d(),Y(J,{key:0,name:"check",size:"sm",class:"text-primary-500","stroke-width":2})):b("",!0)],8,Dl))),128))])):b("",!0)],512),e("button",{onClick:Zt,class:"btn btn-primary","data-tour":"keys-create-btn"},[R(J,{name:"plus",size:"md",class:"mr-2"}),te(" "+n(l(s)("keys.createKey")),1)])])]),table:N(()=>[R(ra,{columns:Se.value,data:de.value,loading:B.value,selectable:"","row-key":"id","selected-keys":se.value,"selection-label":o=>l(s)("keys.bulkEdit.selectKey",{name:o.name}),"onUpdate:selectedKeys":q,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc",onSort:Ts},{"cell-id":N(({value:o})=>[e("span",Rl,"#"+n(o),1)]),"cell-key":N(({value:o,row:S})=>[e("div",Ul,[e("code",Nl,n(l(ya)(o)),1),e("button",{onClick:j=>ks(o,S.id),class:I(["rounded-lg p-1 transition-colors hover:bg-gray-100 dark:hover:bg-dark-700",We.value===S.id?"text-green-500":"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"]),title:We.value===S.id?l(s)("keys.copied"):l(s)("keys.copyToClipboard")},[We.value===S.id?(d(),Y(J,{key:0,name:"check",size:"sm","stroke-width":2})):(d(),Y(J,{key:1,name:"clipboard",size:"sm"}))],10,Bl)])]),"cell-name":N(({value:o,row:S})=>{var j,oe;return[e("div",Fl,[e("span",Hl,n(o),1),((j=S.ip_whitelist)==null?void 0:j.length)>0||((oe=S.ip_blacklist)==null?void 0:oe.length)>0?(d(),Y(J,{key:0,name:"shield",size:"sm",class:"text-blue-500",title:l(s)("keys.ipRestrictionEnabled")},null,8,["title"])):b("",!0)])]}),"cell-group":N(({row:o})=>[e("div",jl,[e("button",{ref:S=>x(o.id,S),onClick:S=>Ps(o),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:l(s)("keys.clickToChangeGroup")},[o.group?(d(),Y(Ot,{key:0,name:o.group.name,platform:o.group.platform,"subscription-type":o.group.subscription_type,"rate-multiplier":o.group.rate_multiplier,"user-rate-multiplier":De.value[o.group.id],"peak-rate-enabled":o.group.peak_rate_enabled,"peak-start":o.group.peak_start,"peak-end":o.group.peak_end,"peak-rate-multiplier":o.group.peak_rate_multiplier},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier"])):(d(),c("span",Vl,n(l(s)("keys.noGroup")),1)),e("span",zl,n(l(s)("keys.selectGroup")),1),a[29]||(a[29]=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,ql)])]),"cell-link_monthly_subscription":N(({row:o})=>{var S,j,oe;return[e("div",Wl,[e("button",{type:"button",disabled:!ke.value||Pe.value===o.id||((S=o.group)==null?void 0:S.subscription_type)==="subscription",onClick:fe=>Os(o),class:I(["relative inline-flex h-5 w-9 flex-shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",!ke.value||Pe.value===o.id||((j=o.group)==null?void 0:j.subscription_type)==="subscription"?"curs
232or-not-allowed opacity-50":"cursor-pointer",Lt(o)?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"]),title:((oe=o.group)==null?void 0:oe.subscription_type)==="subscription"?l(s)("keys.linkMonthlyGroupSubscriptionGroup"):ke.value?l(s)("keys.linkMonthlyGroupHint"):l(s)("keys.linkMonthlyGroupUnavailable")},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",Lt(o)?"translate-x-4":"translate-x-0"])},null,2)],10,Yl),ke.value?b("",!0):(d(),c("span",Xl,n(l(s)("keys.linkMonthlyGroupUnavailableShort")),1))])]}),"cell-current_concurrency":N(({value:o})=>[e("span",{class:I(["inline-flex min-w-8 items-center justify-center rounded px-2 py-1 text-sm font-semibold tabular-nums",(o??0)>0?"bg-emerald-50 text-emerald-700 ring-1 ring-emerald-200 dark:bg-emerald-900/25 dark:text-emerald-300 dark:ring-emerald-800":"bg-gray-100 text-gray-500 dark:bg-dark-700 dark:text-dark-400"])},n(o??0),3)]),"cell-usage":N(({row:o})=>{var S,j,oe,fe;return[e("div",Jl,[e("div",Ql,[e("span",Zl,n(l(s)("keys.today"))+":",1),e("span",ei," $"+n((((S=qe.value[o.id])==null?void 0:S.today_actual_cost)??0).toFixed(4)),1)]),e("div",ti,[e("span",si,n(l(s)("keys.total"))+":",1),e("span",ai," $"+n((((j=qe.value[o.id])==null?void 0:j.total_actual_cost)??0).toFixed(4)),1)]),o.quota>0?(d(),c("div",oi,[e("div",li,[e("span",ii,n(l(s)("keys.quota"))+":",1),e("span",{class:I(["font-medium",o.quota_used>=o.quota?"text-red-500":o.quota_used>=o.quota*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((oe=o.quota_used)==null?void 0:oe.toFixed(2))||"0.00")+" / $"+n((fe=o.quota)==null?void 0:fe.toFixed(2)),3)]),e("div",ni,[e("div",{class:I(["h-full rounded-full transition-all",o.quota_used>=o.quota?"bg-red-500":o.quota_used>=o.quota*.8?"bg-yellow-500":"bg-primary-500"]),style:He({width:Math.min(o.quota_used/o.quota*100,100)+"%"})},null,6)])])):b("",!0)])]}),"cell-rate_limit":N(({row:o})=>{var S,j,oe,fe,ot,pt;return[o.rate_limit_5h>0||o.rate_limit_1d>0||o.rate_limit_7d>0?(d(),c("div",ri,[o.rate_limit_5h>0?(d(),c("div",di,[e("div",ui,[a[30]||(a[30]=e("span",{class:"text-gray-500 dark:text-gray-400"},"5h",-1)),e("span",{class:I(["font-medium tabular-nums",o.usage_5h>=o.rate_limit_5h?"text-red-500":o.usage_5h>=o.rate_limit_5h*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((S=o.usage_5h)==null?void 0:S.toFixed(2))||"0.00")+"/$"+n((j=o.rate_limit_5h)==null?void 0:j.toFixed(2)),3)]),e("div",ci,[e("div",{class:I(["h-full rounded-full transition-all",o.usage_5h>=o.rate_limit_5h?"bg-red-500":o.usage_5h>=o.rate_limit_5h*.8?"bg-yellow-500":"bg-emerald-500"]),style:He({width:Math.min(o.usage_5h/o.rate_limit_5h*100,100)+"%"})},null,6)]),o.reset_5h_at&&st(o.reset_5h_at)?(d(),c("div",pi," â³ "+n(st(o.reset_5h_at)),1)):b("",!0)])):b("",!0),o.rate_limit_1d>0?(d(),c("div",mi,[e("div",_i,[a[31]||(a[31]=e("span",{class:"text-gray-500 dark:text-gray-400"},"1d",-1)),e("span",{class:I(["font-medium tabular-nums",o.usage_1d>=o.rate_limit_1d?"text-red-500":o.usage_1d>=o.rate_limit_1d*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((oe=o.usage_1d)==null?void 0:oe.toFixed(2))||"0.00")+"/$"+n((fe=o.rate_limit_1d)==null?void 0:fe.toFixed(2)),3)]),e("div",gi,[e("div",{class:I(["h-full rounded-full transition-all",o.usage_1d>=o.rate_limit_1d?"bg-red-500":o.usage_1d>=o.rate_limit_1d*.8?"bg-yellow-500":"bg-emerald-500"]),style:He({width:Math.min(o.usage_1d/o.rate_limit_1d*100,100)+"%"})},null,6)]),o.reset_1d_at&&st(o.reset_1d_at)?(d(),c("div",ki," â³ "+n(st(o.reset_1d_at)),1)):b("",!0)])):b("",!0),o.rate_limit_7d>0?(d(),c("div",yi,[e("div",vi,[a[32]||(a[32]=e("span",{class:"text-gray-500 dark:text-gray-400"},"7d",-1)),e("span",{class:I(["font-medium tabular-nums",o.usage_7d>=o.rate_limit_7d?"text-red-500":o.usage_7d>=o.rate_limit_7d*.8?"text-yellow-500":"text-gray-700 dark:text-gray-300"])}," $"+n(((ot=o.usage_7d)==null?void 0:ot.toFixed(2))||"0.00")+"/$"+n((pt=o.rate_limit_7d)==null?void 0:pt.toFixed(2)),3)]),e("div",hi,[e("div",{class:I(["h-full rounded-full transition-all",o.usage_7d>=o.rate_limit_7d?"bg-red-500":o.usage_7d>=o.rate_limit_7d*.8?"bg-yellow-500":"bg-emerald-500"]),style:He({width:Math.min(o.usage_7d/o.rate_limit_7d*100,100)+"%"})},null,6)]),o.reset_7d_at&&st(o.reset_7d_at)?(d(),c("div",bi," â³ "+n(st(o.reset_7d_at)),1)):b("",!0)])):b("",!0),o.usage_5h>0||o.usage_1d>0||o.usage_7d>0?(d(),c("button",{key:3,onClick:nt(Pt=>js(o),["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:l(s)("keys.resetRateLimitUsage")},[R(J,{name:"refresh",size:"xs"}),te(" "+n(l(s)("keys.resetUsage")),1)],8,xi)):b("",!0)])):(d(),c("span",fi,"-"))]}),"cell-expires_at":N(({value:o})=>[o?(d(),c("span",{key:0,class:I(["text-sm",new Date(o)<new Date?"text-red-500 dark:text-red-400":"text-gray-500 dark:text-dark-400"])},n(l(gt)(o)),3)):(d(),c("span",wi,n(l(s)("keys.noExpiration")),1))]),"cell-status":N(({value:o})=>[e("span",{class:I(["badge",o==="active"?"badge-success":o==="quota_exhausted"?"badge-warning":
232o==="expired"?"badge-danger":"badge-gray"])},n(l(s)("keys.status."+o)),3)]),"cell-last_used_at":N(({value:o})=>[o?(d(),c("span",$i,n(l(gt)(o)),1)):(d(),c("span",Ci,"-"))]),"cell-last_used_ip":N(({value:o})=>[o?(d(),c("span",Mi,n(o),1)):(d(),c("span",Si,"-"))]),"cell-created_at":N(({value:o})=>[e("span",Ei,n(l(gt)(o)),1)]),"cell-actions":N(({row:o})=>{var S;return[e("div",Ii,[e("button",{onClick:j=>Ss(o),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"},[R(J,{name:"terminal",size:"sm"}),e("span",Ti,n(l(s)("keys.useKey")),1)],8,Ai),(S=Ke.value)!=null&&S.hide_ccs_import_button?b("",!0):(d(),c("button",{key:0,onClick:j=>Vs(o),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 dark:hover:bg-blue-900/20 dark:hover:text-blue-400"},[R(J,{name:"upload",size:"sm"}),e("span",Ki,n(l(s)("keys.importToCcSwitch")),1)],8,Li)),e("button",{onClick:j=>Ks(o),class:I(["flex flex-col items-center gap-0.5 rounded-lg p-1.5 transition-colors",o.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"])},[o.status==="active"?(d(),Y(J,{key:0,name:"ban",size:"sm"})):(d(),Y(J,{key:1,name:"checkCircle",size:"sm"})),e("span",Gi,n(o.status==="active"?l(s)("keys.disable"):l(s)("keys.enable")),1)],10,Pi),e("button",{onClick:j=>Ls(o),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"},[R(J,{name:"edit",size:"sm"}),e("span",Di,n(l(s)("common.edit")),1)],8,Oi),e("button",{onClick:j=>Ds(o),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"},[R(J,{name:"trash",size:"sm"}),e("span",Ui,n(l(s)("common.delete")),1)],8,Ri)])]}),empty:N(()=>[R(ua,{title:l(s)("keys.noKeysYet"),description:l(s)("keys.createFirstKey"),"action-text":l(s)("keys.createKey"),onAction:Zt},null,8,["title","description","action-text"])]),_:1},8,["columns","data","loading","selected-keys","selection-label"])]),pagination:N(()=>[ae.value.total>0?(d(),Y(da,{key:0,page:ae.value.page,total:ae.value.total,"page-size":ae.value.page_size,"onUpdate:page":Is,"onUpdate:pageSize":As},null,8,["page","total","page-size"])):b("",!0)]),_:1}),R(Et,{show:Re.value||H.value,title:H.value?l(s)("keys.editKey"):l(s)("keys.createKey"),width:"normal",onClose:Kt},{footer:N(()=>[e("div",Br,[e("button",{onClick:Kt,type:"button",class:"btn btn-secondary"},n(l(s)("common.cancel")),1),e("button",{form:"key-form",type:"submit",disabled:w.value,class:"btn btn-primary","data-tour":"key-form-submit"},[w.value?(d(),c("svg",Hr,[...a[41]||(a[41]=[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)])])):b("",!0),te(" "+n(w.value?l(s)("keys.saving"):H.value?l(s)("common.update"):l(s)("common.create")),1)],8,Fr)])]),default:N(()=>{var o,S,j,oe,fe,ot,pt,Pt,as;return[e("form",{id:"key-form",onSubmit:nt(Rs,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",Ni,n(l(s)("keys.nameLabel")),1),Q(e("input",{"onUpdate:modelValue":a[4]||(a[4]=_=>i.value.name=_),type:"text",required:"",class:"input",placeholder:l(s)("keys.namePlaceholder"),"data-tour":"key-form-name"},null,8,Bi),[[he,i.value.name]])]),H.value?b("",!0):(d(),c("fieldset",Fi,[e("legend",Hi,n(l(s)("keys.providerLabel")),1),e("div",ji,[(d(!0),c(ee,null,me(Ht.value,_=>(d(),c("label",{key:_.value,class:I(["relative min-w-0",_.count===0?"cursor-not-allowed":"cursor-pointer"])},[e("input",{type:"radio",name:"key-provider",value:_.value,checked:Ne.value===_.value,disabled:_.count===0,class:"peer sr-only",onChange:ve=>qt(_.value)},null,40,qi),e("span",{class:I(["flex h-full flex-col items-center gap-2 rounded-xl border border-gray-200 bg-white px-2 py-3 text-center transition-colors peer-checked:border-primary-500 peer-checked:bg-primary-50/60 peer-checked:ring-1 peer-checked:ring-primary-500 peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-primary-500 peer-disabled:opacity-40 dark:border-dark-600 dark:bg-dark-800 dark:peer-checked:border-primary-500 dark:peer-checked:bg-primary-500/10",_.count>0&&"hover:border-primary-300 dark:hover:border-primary-700"])},[e("span",Vi,[(d(!0),c(ee,null,me(l(vl)[_.value],ve=>(d(),c("span",{key:ve,class:I(["flex h-8 w-8 items-center justify-center rounded-lg",l(ha)(ve)])},[R(va,{platform:ve,size:"lg"},null,8,["platform"])],2))),128))]),e("span",zi,n(_.label),1)],2),Ne.value===_.value?(d(),c("span",Wi,[R(J,{name:"check",size:"xs","stroke-width":3})])):b("",!0)],2))),128))]),e("p",Yi,n(Ie.value.length===0?l(s)("common.noGroupsAvailable"):l(s)(`keys.providerHints.${Ne.value}`)),1)])),e("div",null,[e("label",Xi,n(l(s)("keys.groupLabel")),1),(d(),Y(it,{key:H.value?"edit":Ne.value,id:"key-form-group","aria-label":l(s)("keys.groupLabel"),modelValue:i.value.group_id,"onUpdate:modelValue":a[5]||(a[5]=_=>i.value.group_id=_),options:jt.value,placeholder:l(s)("keys.selectGroup"),"empty-text":l(s)("common.noGroupsAvailable"),searchable:!0,"search-placeholder":l(s)("keys.searchGroup"),"data-tour":"key-form-group"},{selected:N(({option:_})=>[_?(d(),Y(Ot,{key:0,name:_.label,platform:_.platform,"subscription-type":_.subscriptionType,"rate-multiplier":_.rate,"user-rate-multiplier":_.userRate,"peak-rate-enabled":_.peakRateEnabled,"peak-start":_.peakStart,"peak-end":_.peakEnd,"peak-rate-multiplier":_.peakRateMultiplier},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier"])):(d(),c("span",Ji,n(l(s)("keys.selectGroup")),1))]),option:N(({option:_,selected:ve})=>[l(Ct)(_)?(d(),Y(Dt,{key:0,series:_.series,billing:_.billing,count:_.count},null,8,["series","billing","count"])):(d(),Y(rs,{key:1,name:_.label,platform:_.platform,"subscription-type":_.subscriptionType,"rate-multiplier":_.rate,"user-rate-multiplier":_.userRate,"peak-rate-enabled":_.peakRateEnabled,"peak-start":_.peakStart,"peak-end":_.peakEnd,"peak-rate-multiplier":_.peakRateMultiplier,description:_.description,selected:ve},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier","description","selected"]))]),_:1},8,["aria-label","modelValue","options","placeholder","empty-text","search-placeholder"]))]),Tt.value?(d(),c("div",Qi,[e("label",Zi,n(l(s)("keys.billingPreferenceTitle")),1),e("p",en,n(l(s)("keys.billingPreferenceHint")),1),e("ul",t
232n,[(d(!0),c(ee,null,me(Jt.value,(_,ve)=>{var mt;return d(),c("li",{key:_.group_id,class:"flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 dark:border-dark-600 dark:bg-dark-800"},[e("input",{type:"checkbox",checked:i.value.billing_preference_ids.includes(_.group_id),class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:_t=>$s(_.group_id)},null,40,sn),e("div",an,[e("div",on,n(_.group_name),1),e("div",ln,n(l(s)("keys.linkSubscriptionBalance",{remaining:_.remaining_usd.toFixed(2),total:_.monthly_limit_usd.toFixed(2)}))+" · "+n(l(s)("keys.linkSubscriptionExpiresAt",{date:Yt(_.expires_at)})),1)]),i.value.billing_preference_ids.includes(_.group_id)?(d(),c(ee,{key:0},[e("button",{type:"button",class:"rounded p-1 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-dark-700 dark:hover:text-white",disabled:ve===0||!i.value.billing_preference_ids.includes((mt=Jt.value[ve-1])==null?void 0:mt.group_id),title:l(s)("keys.linkSubscriptionMoveUp"),onClick:_t=>Cs(_.group_id)}," â ",8,nn),e("button",{type:"button",class:"rounded p-1 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-dark-700 dark:hover:text-white",disabled:i.value.billing_preference_ids.indexOf(_.group_id)===i.value.billing_preference_ids.length-1,title:l(s)("keys.linkSubscriptionMoveDown"),onClick:_t=>Ms(_.group_id)}," â ",8,rn)],64)):b("",!0)])}),128))]),i.value.billing_preference_ids.length===0?(d(),c("p",dn,n(l(s)("keys.billingPreferenceDefaultOrderHint")),1)):b("",!0)])):b("",!0),U.value&&!Tt.value?(d(),c("div",un,[e("div",cn,[e("label",pn,n(l(s)("keys.linkSubscriptionTitle")),1),e("button",{type:"button",role:"switch","aria-checked":i.value.link_monthly_subscription_group,disabled:!ke.value,class:I(["relative inline-flex h-5 w-9 flex-shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none",ke.value?"cursor-pointer":"cursor-not-allowed opacity-50",i.value.link_monthly_subscription_group?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"]),title:ke.value?l(s)("keys.linkSubscriptionHint"):l(s)("keys.linkSubscriptionNoLinkable"),onClick:ws},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",i.value.link_monthly_subscription_group?"translate-x-4":"translate-x-0"])},null,2)],10,mn)]),ke.value?b("",!0):(d(),c("p",_n,n(l(s)("keys.linkSubscriptionNoLinkable")),1)),i.value.link_monthly_subscription_group&&ke.value?(d(),c("div",gn,[e("p",kn,n(l(s)("keys.linkSubscriptionHint")),1),e("ul",yn,[(d(!0),c(ee,null,me(Wt.value,(_,ve)=>{var mt;return d(),c("li",{key:_.group_id,class:"flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 dark:border-dark-600 dark:bg-dark-800"},[e("input",{type:"checkbox",checked:i.value.selected_linked_ids.includes(_.group_id),class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:_t=>fs(_.group_id)},null,40,vn),e("div",hn,[e("div",bn,n(_.group_name),1),e("div",xn,n(l(s)("keys.linkSubscriptionBalance",{remaining:_.remaining_usd.toFixed(2),total:_.monthly_limit_usd.toFixed(2)}))+" · "+n(l(s)("keys.linkSubscriptionExpiresAt",{date:Yt(_.expires_at)})),1)]),i.value.selected_linked_ids.includes(_.group_id)?(d(),c(ee,{key:0},[e("button",{type:"button",class:"rounded p-1 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-dark-700 dark:hover:text-white",disabled:ve===0||!i.value.selected_linked_ids.includes((mt=Wt.value[ve-1])==null?void 0:mt.group_id),title:l(s)("keys.linkSubscriptionMoveUp"),onClick:_t=>bs(_.group_id)}," â ",8,fn),e("button",{type:"button",class:"rounded p-1 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-dark-700 dark:hover:text-white",disabled:i.value.selected_linked_ids.indexOf(_.group_id)===i.value.selected_linked_ids.length-1,title:l(s)("keys.linkSubscriptionMoveDown"),onClick:_t=>xs(_.group_id)}," â ",8,wn)],64)):b("",!0)])}),128))]),i.value.selected_linked_ids.length===0?(d(),c("p",$n,n(l(s)("keys.linkSubscriptionAutoOrderHint")),1)):b("",!0)])):b("",!0)])):b("",!0),H.value?b("",!0):(d(),c("div",Cn,[e("div",Mn,[e("label",Sn,n(l(s)("keys.customKeyLabel")),1),e("button",{type:"button",onClick:a[6]||(a[6]=_=>i.value.use_custom_key=!i.value.use_custom_key),class:I(["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",i.value.use_custom_key?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",i.value.use_custom_key?"translate-x-4":"translate-x-0"])},null,2)],2)]),i.value.use_custom_key?(d(),c("div",En,[Q(e("input",{"onUpdate:modelValue":a[7]||(a[7]=_=>i.value.custom_key=_),type:"text",class:I(["input font-mono",{"border-red-500 dark:border-red-500":O.value}]),placeholder:l(s)("keys.customKeyPlaceholder")},null,10,In),[[he,i.value.custom_key]]),O.value?(d(),c("p",An,n(O.value),1)):(d(),c("p",Tn,n(l(s)("keys.customKeyHint")),1))])):b("",!0)])),H.value?(d(),c("div",Ln,[e("label",Kn,n(l(s)("keys.statusLabel")),1),R(it,{modelValue:i.value.status,"onUpdate:modelValue":a[8]||(a[8]=_=>i.value.status=_),options:X.value,placeholder:l(s)("keys.selectStatus")},null,8,["modelValue","options","placeholder"])])):b("",!0),e("div",Pn,[e("div",Gn,[e("label",On,n(l(s)("keys.ipRestriction")),1),e("button",{type:"button",onClick:a[9]||(a[9]=_=>i.value.enable_ip_restriction=!i.value.enable_ip_restriction),class:I(["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",i.value.enable_ip_restriction?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",i.value.enable_ip_restriction?"translate-x-4":"translate-x-0"])},null,2)],2)]),i.value.enable_ip_restriction?(d(),c("div",Dn,[e("div",null,[e("label",Rn,n(l(s)("keys.ipWhitelist")),1),Q(e("textarea",{"onUpdate:modelValue":a[10]||(a[10]=_=>i.value.ip_whitelist=_),rows:"3",class:"input font-mono text-sm",placeholder:l(s)("keys.ipWhitelistPlaceholder")},null,8,Un),[[he,i.value.ip_whitelist]]),e("p",Nn,n(l(s)("keys.ipWhitelistHint")),1)]),e("div",null,[e("label",Bn,n(l(s)("keys.ipBlacklist")),1),Q(e("textarea",{"onUpdate:modelValue":a[11]||(a[11]=_=>i.value.ip_blacklist=_),rows:"3",class:"input font-mono text-sm",placeholder:l(s)("keys.ipBlacklistPlaceholder")},null,8,Fn),[[he,i.value.ip_blacklist]]),e("p",Hn,n(l(s)("keys.ipBlacklistHint")),1)])])):b("",!0)]),e("div",jn,[e("label",qn,n(l(s)("keys.quotaLimit")),1),e("div",Vn,[e("div",null,[e("div",zn,[a[33]||(a[33]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),Q(e("input",{"onUpdate:modelValue":a[12]||(a[12]=_=>i.value.quota=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:l(s)("keys.quotaAmountPlaceholder")},null,8,Wn),[[he,i.value.quota,void 0,{number:!0}]])]),e("p",Yn,n(l(s)("keys.quotaAmountHint")),1)]),H.value&&v.value&&v.value.quota>
2320?(d(),c("div",Xn,[e("label",Jn,n(l(s)("keys.quotaUsed")),1),e("div",Qn,[e("div",Zn,[e("span",er," $"+n(((o=v.value.quota_used)==null?void 0:o.toFixed(4))||"0.0000"),1),a[34]||(a[34]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",tr," $"+n(((S=v.value.quota)==null?void 0:S.toFixed(2))||"0.00"),1)]),e("button",{type:"button",onClick:Ns,class:"btn btn-secondary text-sm",title:l(s)("keys.resetQuotaUsed")},n(l(s)("keys.reset")),9,sr)])])):b("",!0)])]),e("div",ar,[e("div",or,[e("label",lr,n(l(s)("keys.rateLimitSection")),1),e("button",{type:"button",onClick:a[13]||(a[13]=_=>i.value.enable_rate_limit=!i.value.enable_rate_limit),class:I(["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",i.value.enable_rate_limit?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",i.value.enable_rate_limit?"translate-x-4":"translate-x-0"])},null,2)],2)]),i.value.enable_rate_limit?(d(),c("div",ir,[e("p",nr,n(l(s)("keys.rateLimitHint")),1),e("div",null,[e("label",rr,n(l(s)("keys.rateLimit5h")),1),e("div",dr,[a[35]||(a[35]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),Q(e("input",{"onUpdate:modelValue":a[14]||(a[14]=_=>i.value.rate_limit_5h=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[he,i.value.rate_limit_5h,void 0,{number:!0}]])]),H.value&&v.value&&v.value.rate_limit_5h>0?(d(),c("div",ur,[e("div",cr,[e("div",pr,[e("span",{class:I(["font-medium",v.value.usage_5h>=v.value.rate_limit_5h?"text-red-500":v.value.usage_5h>=v.value.rate_limit_5h*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((j=v.value.usage_5h)==null?void 0:j.toFixed(4))||"0.0000"),3),a[36]||(a[36]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",mr," $"+n(((oe=v.value.rate_limit_5h)==null?void 0:oe.toFixed(2))||"0.00"),1)])]),e("div",_r,[e("div",{class:I(["h-full rounded-full transition-all",v.value.usage_5h>=v.value.rate_limit_5h?"bg-red-500":v.value.usage_5h>=v.value.rate_limit_5h*.8?"bg-yellow-500":"bg-green-500"]),style:He({width:Math.min(v.value.usage_5h/v.value.rate_limit_5h*100,100)+"%"})},null,6)])])):b("",!0)]),e("div",null,[e("label",gr,n(l(s)("keys.rateLimit1d")),1),e("div",kr,[a[37]||(a[37]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),Q(e("input",{"onUpdate:modelValue":a[15]||(a[15]=_=>i.value.rate_limit_1d=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[he,i.value.rate_limit_1d,void 0,{number:!0}]])]),H.value&&v.value&&v.value.rate_limit_1d>0?(d(),c("div",yr,[e("div",vr,[e("div",hr,[e("span",{class:I(["font-medium",v.value.usage_1d>=v.value.rate_limit_1d?"text-red-500":v.value.usage_1d>=v.value.rate_limit_1d*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((fe=v.value.usage_1d)==null?void 0:fe.toFixed(4))||"0.0000"),3),a[38]||(a[38]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",br," $"+n(((ot=v.value.rate_limit_1d)==null?void 0:ot.toFixed(2))||"0.00"),1)])]),e("div",xr,[e("div",{class:I(["h-full rounded-full transition-all",v.value.usage_1d>=v.value.rate_limit_1d?"bg-red-500":v.value.usage_1d>=v.value.rate_limit_1d*.8?"bg-yellow-500":"bg-green-500"]),style:He({width:Math.min(v.value.usage_1d/v.value.rate_limit_1d*100,100)+"%"})},null,6)])])):b("",!0)]),e("div",null,[e("label",fr,n(l(s)("keys.rateLimit7d")),1),e("div",wr,[a[39]||(a[39]=e("span",{class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"},"$",-1)),Q(e("input",{"onUpdate:modelValue":a[16]||(a[16]=_=>i.value.rate_limit_7d=_),type:"number",step:"0.01",min:"0",class:"input pl-7",placeholder:"0"},null,512),[[he,i.value.rate_limit_7d,void 0,{number:!0}]])]),H.value&&v.value&&v.value.rate_limit_7d>0?(d(),c("div",$r,[e("div",Cr,[e("div",Mr,[e("span",{class:I(["font-medium",v.value.usage_7d>=v.value.rate_limit_7d?"text-red-500":v.value.usage_7d>=v.value.rate_limit_7d*.8?"text-yellow-500":"text-gray-900 dark:text-white"])}," $"+n(((pt=v.value.usage_7d)==null?void 0:pt.toFixed(4))||"0.0000"),3),a[40]||(a[40]=e("span",{class:"mx-2 text-gray-400"},"/",-1)),e("span",Sr," $"+n(((Pt=v.value.rate_limit_7d)==null?void 0:Pt.toFixed(2))||"0.00"),1)])]),e("div",Er,[e("div",{class:I(["h-full rounded-full transition-all",v.value.usage_7d>=v.value.rate_limit_7d?"bg-red-500":v.value.usage_7d>=v.value.rate_limit_7d*.8?"bg-yellow-500":"bg-green-500"]),style:He({width:Math.min(v.value.usage_7d/v.value.rate_limit_7d*100,100)+"%"})},null,6)])])):b("",!0)]),H.value&&v.value&&(v.value.rate_limit_5h>0||v.value.rate_limit_1d>0||v.value.rate_limit_7d>0)?(d(),c("div",Ir,[e("button",{type:"button",onClick:Hs,class:"btn btn-secondary text-sm"},n(l(s)("keys.resetRateLimitUsage")),1)])):b("",!0)])):b("",!0)]),e("div",Ar,[e("div",Tr,[e("label",Lr,n(l(s)("keys.expiration")),1),e("button",{type:"button",onClick:a[17]||(a[17]=_=>i.value.enable_expiration=!i.value.enable_expiration),class:I(["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",i.value.enable_expiration?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"])},[e("span",{class:I(["pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out",i.value.enable_expiration?"translate-x-4":"translate-x-0"])},null,2)],2)]),i.value.enable_expiration?(d(),c("div",Kr,[e("div",Pr,[(d(),c(ee,null,me(["7","30","90"],_=>e("button",{key:_,type:"button",onClick:ve=>Bs(parseInt(_)),class:I(["rounded-lg px-3 py-1.5 text-sm transition-colors",i.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(H.value?l(s)("keys.extendDays",{days:_}):l(s)("keys.expiresInDays",{days:_})),11,Gr)),64)),e("button",{type:"button",onClick:a[18]||(a[18]=_=>i.value.expiration_preset="custom"),class:I(["rounded-lg px-3 py-1.5 text-sm transition-colors",i.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(l(s)("keys.customDate")),3)]),e("div",null,[e("label",Or,n(l(s)("keys.expirationDate")),1),Q(e("input",{"onUpdate:modelValue":a[19]||(a[19]=_=>i.value.expiration_date=_),type:"datetime-local",class:"input"},null,512),[[he,i.value.expiration_date]]),e("p",Dr,n(l(s)("keys.expirationDateHint")),1)]),H.value&&((as=v.value)!=null&&as.expires_at)?(d(),c("div",Rr,[e("span",Ur,n(l(s)("keys.currentExpiration"))+": ",1),e("span",Nr,n(l(gt)(v.value.expires_at)),1)])):b("",!0)])):b("",!0)])],32)]}),_:1},8,["show","title"]),R(Wa,{show:Ee.value,"selected-keys":Oe.value,groups:Ie.value,onClose:a[20]||(a[20]=o=>Ee.value=!1),onUpdated:je},null,8,["show","selected-keys","groups"]),R(Gt,{show:ze.value,title:l(s)("keys.deleteKey"),message:l(s)("keys.deleteConfirmMessage",{name:(m=v.value)==null?void 0:m.name}),"confirm-text":l(s)("common.delete"),"cancel-text":l(s)("common.cancel"),danger:!0,onConfirm:Us,onCancel:a[21]||(a[21]=o=>ze.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),R(Gt,{show:et.value,title:l(s)("keys.resetQuotaTitle"),message:l(s)("keys.resetQuotaConfirmMessage",{name:(G=v.value)==null?void 0:G.name,used:(V=(A=v.value)==null?void 0:A.quota_used)==null?void 0:V.toFixed(4)}),"confirm-text":l(s)("keys.reset"),"cancel-text":l(s)("common.cancel"),danger:!0,onConfirm:Fs,onCancel:a[22]||(a[22]=o=>et.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),R(Gt,{show:we.value,title:l(s)("keys.resetRateLimitTitle"),message:l(s)("keys.resetRateLimitConfirmMessage",{name:(Me=v.value)==null?void 0:Me.name}),"confirm-text":l(s)("keys.reset"),"cancel-text":l(s)("common.cancel"),danger:!0,onConfirm:qs,onCancel:a[23]||(a[23]=o=>we.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),R(Xo,{show:ge.value,"api-key":((xe=v.value)==null?void 0:xe.key)||"","base-url":bt.value,platform:((Be=(Ge=v.value)==null?void 0:Ge.group)==null?void 0:Be.platform)||null,"allow-messages-dispatch":((at=(ct=v.value)==null?void 0:ct.group)==null?void 0:at.allow_messages_dispatch)||!1,onClose:Es},null,8,["show","api-key","base-url","platform","allow-messages-dispatch"]),R(Et,{show:ue.value,title:l(s)("keys.ccsClientSelect.title"),width:"narrow",onClose:ss},{footer:N(()=>[e("div",Jr,[e("button",{onClick:ss,class:"btn btn-secondary"},n(l(s)("common.cancel")),1)])]),default:N(()=>[e("div",jr,[e("p",qr,n(l(s)("keys.ccsClientSelect.description")),1),e("div",Vr,[e("button",{onClick:a[24]||(a[24]=o=>ts("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"},[R(J,{name:"terminal",size:"xl",class:"text-gray-600 dark:text-gray-400"}),e("span",zr,n(l(s)("keys.ccsClientSelect.claudeCode")),1),e("span",Wr,n(l(s)("keys.ccsClientSelect.claudeCodeDesc")),1
232)]),e("button",{onClick:a[25]||(a[25]=o=>ts("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"},[R(J,{name:"sparkles",size:"xl",class:"text-gray-600 dark:text-gray-400"}),e("span",Yr,n(l(s)("keys.ccsClientSelect.geminiCli")),1),e("span",Xr,n(l(s)("keys.ccsClientSelect.geminiCliDesc")),1)])])])]),_:1},8,["show","title"]),(d(),Y(Xs,{to:"body"},[re.value!==null&&pe.value?(d(),c("div",{key:0,ref_key:"dropdownRef",ref:rt,class:"animate-in fade-in slide-in-from-top-2 fixed z-[100000020] w-max max-w-[calc(100vw-16px)] overflow-hidden rounded-xl bg-white shadow-lg ring-1 ring-black/5 duration-200 sm:min-w-[380px] dark:bg-dark-800 dark:ring-white/10",style:He([{"pointer-events":"auto !important"},{top:pe.value.top!==void 0?pe.value.top+"px":void 0,bottom:pe.value.bottom!==void 0?pe.value.bottom+"px":void 0,left:pe.value.left+"px"}])},[e("div",Qr,[e("div",Zr,[a[42]||(a[42]=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)),Q(e("input",{"onUpdate:modelValue":a[26]||(a[26]=o=>ft.value=o),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:l(s)("keys.searchGroup"),onClick:a[27]||(a[27]=nt(()=>{},["stop"]))},null,8,ed),[[he,ft.value]])])]),e("div",td,[(d(!0),c(ee,null,me(Vt.value,o=>{var S,j,oe,fe;return d(),c(ee,{key:o.value??"null"},[l(Ct)(o)?(d(),c("div",sd,[R(Dt,{series:o.series,billing:o.billing,count:o.count},null,8,["series","billing","count"])])):(d(),c("button",{key:1,onClick:ot=>Gs(C.value,o.value),class:I(["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",((S=C.value)==null?void 0:S.group_id)===o.value||!((j=C.value)!=null&&j.group_id)&&o.value===null?"bg-primary-50 dark:bg-primary-900/20":"hover:bg-gray-100 dark:hover:bg-dark-700"]),title:o.description||void 0},[R(rs,{name:o.label,platform:o.platform,"subscription-type":o.subscriptionType,"rate-multiplier":o.rate,"user-rate-multiplier":o.userRate,"peak-rate-enabled":o.peakRateEnabled,"peak-start":o.peakStart,"peak-end":o.peakEnd,"peak-rate-multiplier":o.peakRateMultiplier,description:o.description,selected:((oe=C.value)==null?void 0:oe.group_id)===o.value||!((fe=C.value)!=null&&fe.group_id)&&o.value===null},null,8,["name","platform","subscription-type","rate-multiplier","user-rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier","description","selected"])],10,ad))],64)}),128)),Vt.value.length===0?(d(),c("div",od,n(l(s)("keys.noGroupFound")),1)):b("",!0)])],4)):b("",!0)]))]}),_:1}))}});export{Rd 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.