omniroute 3.0.3 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_06515a8a._.js +1 -1
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_6f1b3c3f._.js +1 -1
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/_ffda39da._.js +1 -1
- package/app/.next/server/chunks/open-sse_services_826884e1._.js +2 -2
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/src_a82a42f9._.js +1 -1
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_936a9ee0._.js +1 -1
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{ebab37f6ad33bd4e.js → 25a3e05da8e1a7ec.js} +1 -1
- package/app/.next/static/chunks/3f18998354dd49b9.js +1 -0
- package/app/.next/static/chunks/b7c366e286771d50.js +1 -0
- package/app/.next/static/chunks/{5651f455237ec3f2.js → e3b6aa5804426dc9.js} +1 -1
- package/app/CHANGELOG.md +19 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/services/combo.ts +24 -10
- package/app/open-sse/services/usage.ts +1 -1
- package/app/package-lock.json +2 -2
- package/app/package.json +1 -1
- package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +3 -4
- package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +4 -0
- package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +16 -3
- package/package.json +1 -1
- package/app/.next/static/chunks/7df0b3c357097db5.js +0 -1
- package/app/.next/static/chunks/d188e358e1ec0a7d.js +0 -1
- /package/app/.next/static/{ZWCtX2yltDveGFFw3HCFk → _Ub91T2wbB96WfkKKwhDH}/_buildManifest.js +0 -0
- /package/app/.next/static/{ZWCtX2yltDveGFFw3HCFk → _Ub91T2wbB96WfkKKwhDH}/_clientMiddlewareManifest.json +0 -0
- /package/app/.next/static/{ZWCtX2yltDveGFFw3HCFk → _Ub91T2wbB96WfkKKwhDH}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[604593,a=>{"use strict";var b=a.i(911655),c=a.i(745718);function d(a,b){return b&&0!==b?!a||a<0?100:a>=b?0:Math.round((b-a)/b*100):0}function e(a,b={},d={}){let f=Number(b?.used||0),g=Number(b?.total||0),h=b?.resetAt||null,i=function(a){if(!a)return!1;let b="number"==typeof a?a:"string"==typeof a?Date.parse(a):NaN;return!!Number.isFinite(b)&&Date.now()>=b}(h),j=i?0:f,k=Number.isFinite(g)?g:0,l=(0,c.safePercentage)(b?.remainingPercentage),m=i&&k>0?100:void 0!==l?l:void 0;return{name:a,used:Number.isFinite(j)?j:0,total:k,resetAt:h,staleAfterReset:i,...void 0!==m?{remainingPercentage:m}:{},...d}}function f(a,c){if(!c||"object"!=typeof c)return[];let d=[];try{switch(a.toLowerCase()){case"github":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{(!b?.unlimited||b?.total&&!(b.total<=0))&&d.push(e(a,b))});break;case"antigravity":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(b.displayName||a,b,{modelKey:a}))});break;case"codex":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"kiro":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"claude":c.message?d.push({name:"error",used:0,total:0,resetAt:null,message:c.message}):c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;default:c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))})}}catch(b){return console.error(`Error parsing quota data for ${a}:`,b),[]}let f=(0,b.getModelsByProviderId)(a);if(f.length>0){let a=new Map(f.map((a,b)=>[a.id,b]));d.sort((b,c)=>{let d=b.modelKey||b.name,e=c.modelKey||c.name;return(a.get(d)??999)-(a.get(e)??999)})}return d}function g(a){let b="string"==typeof a?a.trim():"";if(!b)return{key:"unknown",label:"Unknown",variant:"default",rank:0,raw:null};let c=b.toUpperCase();return"CLAUDE CODE"===c||"KIMI CODING"===c||"KIRO"===c?{key:"unknown",label:b,variant:"default",rank:0,raw:b}:c.includes("PRO+")||c.includes("PRO PLUS")||c.includes("PROPLUS")?{key:"plus",label:"Pro+",variant:"secondary",rank:4,raw:b}:c.includes("ENTERPRISE")||c.includes("CORP")||c.includes("ORG")?{key:"enterprise",label:"Enterprise",variant:"info",rank:7,raw:b}:c.includes("TEAM")||c.includes("CHATGPTTEAM")?{key:"team",label:"Team",variant:"info",rank:6,raw:b}:c.includes("BUSINESS")||c.includes("STANDARD")||c.includes("BIZ")?{key:"business",label:"Business",variant:"warning",rank:5,raw:b}:c.includes("STUDENT")?{key:"pro",label:"Student",variant:"primary",rank:3,raw:b}:c.includes("ULTRA")?{key:"ultra",label:"Ultra",variant:"success",rank:4,raw:b}:c.includes("PRO")||c.includes("PREMIUM")?{key:"pro",label:"Pro",variant:"primary",rank:3,raw:b}:c.includes("PLUS")||c.includes("PAID")?{key:"plus",label:"Plus",variant:"secondary",rank:2,raw:b}:c.includes("FREE")||c.includes("BASIC")||c.includes("TRIAL")||c.includes("LEGACY")?{key:"free",label:"Free",variant:"default",rank:1,raw:b}:{key:"unknown",label:b.toLowerCase().split(/[\s_-]+/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"Unknown",variant:"default",rank:0,raw:b}}a.s(["calculatePercentage",()=>d,"normalizePlanTier",()=>g,"parseQuotaData",()=>f])},280382,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(571987),h=a.i(604593),i=a.i(436595),j=a.i(497160),k=a.i(831097),l=a.i(662073),m=b([l]);[l]=m.then?(await m)():m;let o="omniroute:limits:expandedGroups",p={antigravity:{label:"Antigravity",color:"#F59E0B"},github:{label:"GitHub Copilot",color:"#333"},kiro:{label:"Kiro AI",color:"#FF6B35"},codex:{label:"OpenAI Codex",color:"#10A37F"},claude:{label:"Claude Code",color:"#D97757"},glm:{label:"GLM (Z.AI)",color:"#4A90D9"},"kimi-coding":{label:"Kimi Coding",color:"#1E3A8A"}},q=[{key:"all",labelKey:"tierAll"},{key:"enterprise",labelKey:"tierEnterprise"},{key:"team",labelKey:"tierTeam"},{key:"business",labelKey:"tierBusiness"},{key:"ultra",labelKey:"tierUltra"},{key:"pro",labelKey:"tierPro"},{key:"plus",labelKey:"tierPlus"},{key:"free",labelKey:"tierFree"},{key:"unknown",labelKey:"tierUnknown"}];function n(){let a,b=(0,e.useTranslations)("usage"),[c,m]=(0,f.useState)([]),[n,r]=(0,f.useState)({}),[s,t]=(0,f.useState)({}),[u,v]=(0,f.useState)({}),[w,x]=(0,f.useState)(()=>!1),[y,z]=(0,f.useState)(null),[A,B]=(0,f.useState)(!1),[C,D]=(0,f.useState)(120),[E,F]=(0,f.useState)(!0),[G,H]=(0,f.useState)("all"),[I,J]=(0,f.useState)(()=>"none"),[K,L]=(0,f.useState)(()=>new Set),M=(0,f.useRef)(null),N=(0,f.useRef)(null),O=(0,f.useRef)({}),P=(0,f.useRef)({}),Q=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/providers/client");if(!a.ok)throw Error("Failed");let b=(await a.json()).connections||[];return m(b),b}catch{return m([]),[]}},[]),R=(0,f.useCallback)(async(a,b,c={})=>{let d=c?.force===!0,e=Date.now(),f=O.current[a]||0;if(d||!(e-f<3e4)){O.current[a]=e,t(b=>({...b,[a]:!0})),v(b=>({...b,[a]:null}));try{let c=await fetch(`/api/usage/${a}`);if(!c.ok){let b=(await c.json().catch(()=>({}))).error||c.statusText;if(404===c.status)return;if(401===c.status)return void r(c=>({...c,[a]:{quotas:[],message:b}}));throw Error(`HTTP ${c.status}: ${b}`)}let d=await c.json(),e=(0,h.parseQuotaData)(b,d);if(e.some(a=>a?.staleAfterReset===!0)){let c=P.current[a]||0;Date.now()-c>=3e4&&(P.current[a]=Date.now(),setTimeout(()=>{R(a,b,{force:!0}).catch(()=>{})},5e3))}r(b=>({...b,[a]:{quotas:e,plan:d.plan||null,message:d.message||null,raw:d}}))}catch(b){v(c=>({...c,[a]:b.message||"Failed to fetch quota"}))}finally{t(b=>({...b,[a]:!1}))}}},[]),S=(0,f.useCallback)(async(a,b)=>{await R(a,b),z(new Date)},[R]),T=(0,f.useCallback)(async()=>{if(!A){B(!0),D(120);try{let a=(await Q()).filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType));await Promise.all(a.map(a=>R(a.id,a.provider))),z(new Date)}catch(a){console.error("Error refreshing all:",a)}finally{B(!1)}}},[A,Q,R]);(0,f.useEffect)(()=>{(async()=>{F(!0),await T(),F(!1)})()},[]),(0,f.useEffect)(()=>{if(!w){M.current&&clearInterval(M.current),N.current&&clearInterval(N.current);return}return M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3),()=>{M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)}},[w,T]),(0,f.useEffect)(()=>{let a=()=>{document.hidden?(M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)):w&&(M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3))};return document.addEventListener("visibilitychange",a),()=>document.removeEventListener("visibilitychange",a)},[w,T]);let U=(0,f.useMemo)(()=>c.filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType)),[c]),V=(0,f.useMemo)(()=>{let a={antigravity:1,github:2,codex:3,claude:4,kiro:5,glm:6,"kimi-coding":7};return[...U].sort((b,c)=>(a[b.provider]||9)-(a[c.provider]||9))},[U]),W=(0,f.useMemo)(()=>{let a={};for(let b of V)a[b.id]=(0,h.normalizePlanTier)(n[b.id]?.plan);return a},[V,n]),X=(0,f.useMemo)(()=>{let a={all:V.length,enterprise:0,team:0,business:0,ultra:0,pro:0,free:0,unknown:0};for(let b of V){let c=W[b.id]?.key||"unknown";a[c]=(a[c]||0)+1}return a},[V,W]),Y=(0,f.useMemo)(()=>"all"===G?V:V.filter(a=>(W[a.id]?.key||"unknown")===G),[V,W,G]),Z=(0,f.useMemo)(()=>{if("environment"!==I)return null;let a=new Map;for(let c of Y){let d=c.group||b("ungrouped");a.has(d)||a.set(d,[]),a.get(d).push(c)}return a},[I,Y,b]),$=a=>{J(a),localStorage.setItem("omniroute:limits:groupBy",a)};return((0,f.useEffect)(()=>{},[c]),(0,f.useEffect)(()=>{if("environment"===I&&Z&&0===K.size){let a=new Set([...Z.keys()]);L(a),localStorage.setItem(o,JSON.stringify([...a]))}},[I,Z]),E)?(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(k.CardSkeleton,{}),(0,d.jsx)(k.CardSkeleton,{})]}):0===V.length?(0,d.jsx)(i.default,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[64px] opacity-15",children:"cloud_off"}),(0,d.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-main",children:b("noProviders")}),(0,d.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-[400px] mx-auto",children:b("connectProvidersForQuota")})]})}):(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main m-0",children:b("providerLimits")}),(0,d.jsxs)("span",{className:"text-[13px] text-text-muted",children:[b("accountsCount",{count:Y.length}),Y.length!==V.length&&` ${b("filteredFromCount",{count:V.length})}`]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex rounded-lg border border-border overflow-hidden",children:[(0,d.jsx)("button",{onClick:()=>$("none"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"none"===I?"var(--color-bg-subtle)":"transparent",color:"none"===I?"var(--color-text-main)":"var(--color-text-muted)"},children:b("viewFlat")}),(0,d.jsx)("button",{onClick:()=>$("environment"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"environment"===I?"var(--color-bg-subtle)":"transparent",color:"environment"===I?"var(--color-text-main)":"var(--color-text-muted)",borderLeft:"1px solid var(--color-border)"},children:b("viewByEnvironment")})]}),(0,d.jsxs)("button",{onClick:()=>{let a=!w;x(a),localStorage.setItem("omniroute:limits:autoRefresh",String(a))},className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-transparent cursor-pointer text-text-main text-[13px]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:w?"#22c55e":"var(--text-muted)"},children:w?"toggle_on":"toggle_off"}),b("autoRefresh"),w&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",C,"s)"]})]}),(0,d.jsxs)("button",{onClick:T,disabled:A,className:"flex items-center gap-1.5 px-3.5 py-1.5 rounded-lg bg-bg-subtle border border-border text-text-main text-[13px] disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${A?"animate-spin":""}`,children:"refresh"}),b("refreshAll")]})]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:q.map(a=>{if("all"!==a.key&&!X[a.key])return null;let c=G===a.key;return(0,d.jsxs)("button",{onClick:()=>H(a.key),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold cursor-pointer",style:{border:c?"1px solid var(--color-primary, #E54D5E)":"1px solid var(--color-border)",background:c?"rgba(229,77,94,0.1)":"transparent",color:c?"var(--color-primary, #E54D5E)":"var(--color-text-muted)"},children:[(0,d.jsx)("span",{children:b(a.labelKey)}),(0,d.jsx)("span",{className:"opacity-85",children:X[a.key]||0})]},a.key)})}),(0,d.jsxs)("div",{className:"rounded-xl border border-border overflow-hidden bg-bg-subtle",children:[(0,d.jsxs)("div",{className:"items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px"},children:[(0,d.jsx)("div",{children:b("account")}),(0,d.jsx)("div",{children:b("modelQuotas")}),(0,d.jsx)("div",{className:"text-center",children:b("lastUsed")}),(0,d.jsx)("div",{className:"text-center",children:b("actions")})]}),(a=(a,c)=>{let e=n[a.id],f=s[a.id],i=u[a.id],k=p[a.provider]||{label:a.provider,color:"#666"},l=W[a.id]||(0,h.normalizePlanTier)(null);return(0,d.jsxs)("div",{className:"items-center px-4 py-3.5 transition-[background] duration-150 hover:bg-black/[0.03] dark:hover:bg-white/[0.02]",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px",borderBottom:c?"none":"1px solid var(--color-border)"},children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0",children:[(0,d.jsx)("div",{className:"w-8 h-8 rounded-lg flex items-center justify-center overflow-hidden shrink-0",children:(0,d.jsx)(g.default,{src:`/providers/${a.provider}.png`,alt:a.provider,width:32,height:32,className:"object-contain",sizes:"32px"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-[13px] font-semibold text-text-main truncate",children:a.name||k.label}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,d.jsx)("span",{title:e?.plan?b("rawPlanWithValue",{plan:e.plan}):b("noPlanFromProvider"),children:(0,d.jsx)(j.default,{variant:l.variant,size:"sm",dot:!0,children:l.label})}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted",children:k.label})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1.5 pr-3",children:f?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-text-muted text-xs",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-[14px]",children:"progress_activity"}),b("loadingQuotas")]}):i?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-red-500",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap max-w-[300px]",children:i})]}):e?.message&&(!e.quotas||0===e.quotas.length)?(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:e.message}):e?.quotas?.length>0?e.quotas.map((a,b)=>{var c;let e=void 0!==a.remainingPercentage?Math.round(a.remainingPercentage):(0,h.calculatePercentage)(a.used,a.total),f=e>70?{bar:"#22c55e",text:"#22c55e",bg:"rgba(34,197,94,0.12)"}:e>=30?{bar:"#eab308",text:"#eab308",bg:"rgba(234,179,8,0.12)"}:{bar:"#ef4444",text:"#ef4444",bg:"rgba(239,68,68,0.12)"},g=function(a){if(!a)return null;try{let b=new Date(a)-new Date;if(b<=0)return null;let c=Math.floor(b/36e5),d=Math.floor(b%36e5/6e4);if(c>=24){let a=Math.floor(c/24);return`${a}d ${c%24}h`}return`${c}h ${d}m`}catch{return null}}(a.resetAt),i={"gemini-3-pro-high":"G3 Pro","gemini-3-pro-low":"G3 Pro Low","gemini-3-flash":"G3 Flash","gemini-2.5-flash":"G2.5 Flash","claude-opus-4-6-thinking":"Opus 4.6 Tk","claude-opus-4-5-thinking":"Opus 4.5 Tk","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-thinking":"Sonnet 4.5 Tk","claude-sonnet-4-5":"Sonnet 4.5",chat:"Chat",completions:"Completions",premium_interactions:"Premium",session:"Session",weekly:"Weekly",agentic_request:"Agentic",agentic_request_freetrial:"Agentic (Trial)"}[c=a.name]||c,j=!0===a.staleAfterReset;return(0,d.jsxs)("div",{className:"flex items-center gap-1.5 min-w-[200px] shrink-0",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold py-0.5 px-2 rounded whitespace-nowrap min-w-[60px] text-center",style:{background:f.bg,color:f.text},children:i}),j?(0,d.jsx)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:"⟳ Refreshing..."}):g?(0,d.jsxs)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:["⏱ ",g]}):null,(0,d.jsx)("div",{className:"flex-1 h-1.5 rounded-sm bg-black/[0.06] dark:bg-white/[0.06] min-w-[60px] overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-sm transition-[width] duration-300 ease-out",style:{width:`${Math.min(e,100)}%`,background:f.bar}})}),(0,d.jsxs)("span",{className:"text-[11px] font-semibold min-w-[32px] text-right",style:{color:f.text},children:[e,"%"]})]},b)}):(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:b("noQuotaData")})}),(0,d.jsx)("div",{className:"text-center text-[11px] text-text-muted",children:y?(0,d.jsx)("span",{children:y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}):"-"}),(0,d.jsx)("div",{className:"flex justify-center gap-0.5",children:(0,d.jsx)("button",{onClick:()=>S(a.id,a.provider),disabled:f,title:b("refreshQuota"),className:"p-1 rounded-md border-none bg-transparent cursor-pointer disabled:cursor-not-allowed disabled:opacity-30 opacity-60 hover:opacity-100 flex items-center justify-center transition-opacity duration-150",children:(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] text-text-muted ${f?"animate-spin":""}`,children:"refresh"})})})]},a.id)},Z?[...Z.entries()].map(([b,c])=>(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden mb-2",children:[(0,d.jsxs)("button",{onClick:()=>{L(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),localStorage.setItem(o,JSON.stringify([...c])),c})},className:"w-full flex items-center gap-2 px-4 py-2.5 bg-bg-subtle hover:bg-black/[0.04] dark:hover:bg-white/[0.05] transition-colors text-left border-none cursor-pointer",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:K.has(b)?"expand_less":"expand_more"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"folder"}),(0,d.jsx)("span",{className:"text-[12px] font-semibold text-text-main uppercase tracking-wider flex-1",children:b}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted bg-black/[0.04] dark:bg-white/[0.06] px-2 py-0.5 rounded-full",children:c.length})]}),K.has(b)&&(0,d.jsx)("div",{children:c.map((b,d)=>a(b,d===c.length-1))})]},b)):Y.map((b,c)=>a(b,c===Y.length-1))),0===Y.length&&(0,d.jsxs)("div",{className:"py-6 px-4 text-center text-text-muted text-[13px]",children:[b("noAccountsForTierFilter")," ",(0,d.jsx)("strong",{children:b(q.find(a=>a.key===G)?.labelKey||"tierUnknown")}),"."]})]})]})}a.s(["default",()=>n]),c()}catch(a){c(a)}},!1),250870,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),b=(0,e.useTranslations)("common"),[c,g]=(0,f.useState)({lockouts:[],cacheStats:null}),[i,j]=(0,f.useState)(!0),k=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/rate-limits");a.ok&&g(await a.json())}catch{}finally{j(!1)}},[]);return(0,f.useEffect)(()=>{k();let a=setInterval(k,1e4);return()=>clearInterval(a)},[k]),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-orange-500/10 text-orange-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"lock_clock"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("modelLockouts")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("lockoutsAutoRefreshHint")})]}),c.lockouts.length>0&&(0,d.jsx)("span",{className:"px-2.5 py-1 rounded-full text-xs font-semibold bg-orange-500/10 text-orange-400 border border-orange-500/20",children:a("lockedCount",{count:c.lockouts.length})})]}),0===c.lockouts.length?(0,d.jsxs)("div",{className:"text-center py-6 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] mb-2 block opacity-40","aria-hidden":"true",children:"lock_open"}),(0,d.jsx)("p",{className:"text-sm",children:a("noLockouts")})]}):(0,d.jsx)("div",{className:"flex flex-col gap-2",children:c.lockouts.map((c,e)=>{var f;return(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/15",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-orange-400","aria-hidden":"true",children:"lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:c.model}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a("account"),":"," ",(0,d.jsx)("span",{className:"font-mono",children:c.accountId?.slice(0,12)||b("none")}),c.reason&&(0,d.jsxs)(d.Fragment,{children:[a("reasonSeparator"),c.reason]})]})]})]}),(0,d.jsx)("span",{className:"text-xs font-mono tabular-nums text-orange-400",children:a("timeLeft",{time:(f=c.remainingMs)<1e3?a("durationMillisecondsShort",{value:f}):f<6e4?a("durationSecondsShort",{value:Math.ceil(f/1e3)}):a("durationMinutesShort",{value:Math.ceil(f/6e4)})})})]},e)})})]})})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),265368,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),[b,c]=(0,f.useState)({count:0,sessions:[]}),[g,i]=(0,f.useState)(!0),j=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/sessions");a.ok&&c(await a.json())}catch{}finally{i(!1)}},[]);return(0,f.useEffect)(()=>{j();let a=setInterval(j,5e3);return()=>clearInterval(a)},[j]),(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-cyan-500/10 text-cyan-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("activeSessions")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("sessionsTrackedHint")})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-cyan-500/10 border border-cyan-500/20",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-full bg-cyan-500 animate-pulse"}),(0,d.jsx)("span",{className:"text-sm font-semibold tabular-nums text-cyan-400",children:b.count})]})})]}),0===b.sessions.length?(0,d.jsxs)("div",{className:"text-center py-8 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[40px] mb-2 block opacity-40","aria-hidden":"true",children:"fingerprint"}),(0,d.jsx)("p",{className:"text-sm",children:a("noSessions")}),(0,d.jsx)("p",{className:"text-xs mt-1",children:a("sessionsHint")})]}):(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{className:"border-b border-border/30",children:[(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("session")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("age")}),(0,d.jsx)("th",{className:"text-right py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("requests")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("connection")})]})}),(0,d.jsx)("tbody",{children:b.sessions.map(b=>{var c;return(0,d.jsxs)("tr",{className:"border-b border-border/10 hover:bg-surface/20 transition-colors",children:[(0,d.jsx)("td",{className:"py-2.5 px-3",children:(0,d.jsxs)("span",{className:"font-mono text-xs px-2 py-1 rounded bg-surface/40 text-text-muted",children:[b.sessionId.slice(0,12),"…"]})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-text-muted tabular-nums",children:(c=b.ageMs)<6e4?a("durationSecondsShort",{value:Math.floor(c/1e3)}):c<36e5?a("durationMinutesShort",{value:Math.floor(c/6e4)}):a("durationHoursShort",{value:Math.floor(c/36e5)})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-right",children:(0,d.jsx)("span",{className:"font-semibold tabular-nums",children:b.requestCount})}),(0,d.jsx)("td",{className:"py-2.5 px-3",children:b.connectionId?(0,d.jsx)("span",{className:"text-xs font-mono text-cyan-400",children:b.connectionId.slice(0,10)}):(0,d.jsx)("span",{className:"text-text-muted/40",children:a("notAvailableSymbol")})})]},b.sessionId)})})]})})]})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),876251,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(831097),h=a.i(280382),i=a.i(250870),j=a.i(265368),k=b([f,h,i,j]);function l(){return(0,d.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(g.CardSkeleton,{}),children:(0,d.jsx)(h.default,{})}),(0,d.jsx)(j.default,{}),(0,d.jsx)(i.default,{})]})}[f,h,i,j]=k.then?(await k)():k,a.s(["default",()=>l]),c()}catch(a){c(a)}},!1)];
|
|
1
|
+
module.exports=[604593,a=>{"use strict";var b=a.i(911655),c=a.i(745718);function d(a,b){return b&&0!==b?!a||a<0?100:a>=b?0:Math.round((b-a)/b*100):0}function e(a,b={},d={}){let f=Number(b?.used||0),g=Number(b?.total||0),h=b?.resetAt||null,i=function(a){if(!a)return!1;let b="number"==typeof a?a:"string"==typeof a?Date.parse(a):NaN;return!!Number.isFinite(b)&&Date.now()>=b}(h),j=i?0:f,k=Number.isFinite(g)?g:0,l=(0,c.safePercentage)(b?.remainingPercentage),m=i&&k>0?100:void 0!==l?l:void 0;return{name:a,used:Number.isFinite(j)?j:0,total:k,resetAt:h,staleAfterReset:i,...void 0!==m?{remainingPercentage:m}:{},...d}}function f(a,c){if(!c||"object"!=typeof c)return[];let d=[];try{switch(a.toLowerCase()){case"github":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{(!b?.unlimited||b?.total&&!(b.total<=0))&&d.push(e(a,b))});break;case"antigravity":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(b.displayName||a,b,{modelKey:a}))});break;case"codex":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"kiro":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"claude":c.message?d.push({name:"error",used:0,total:0,resetAt:null,message:c.message}):c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;default:c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))})}}catch(b){return console.error(`Error parsing quota data for ${a}:`,b),[]}let f=(0,b.getModelsByProviderId)(a);if(f.length>0){let a=new Map(f.map((a,b)=>[a.id,b]));d.sort((b,c)=>{let d=b.modelKey||b.name,e=c.modelKey||c.name;return(a.get(d)??999)-(a.get(e)??999)})}return d}function g(a){let b="string"==typeof a?a.trim():"";if(!b)return{key:"unknown",label:"Unknown",variant:"default",rank:0,raw:null};let c=b.toUpperCase();return"CLAUDE CODE"===c||"KIMI CODING"===c||"KIRO"===c?{key:"unknown",label:b,variant:"default",rank:0,raw:b}:c.includes("PRO+")||c.includes("PRO PLUS")||c.includes("PROPLUS")?{key:"plus",label:"Pro+",variant:"secondary",rank:4,raw:b}:c.includes("ENTERPRISE")||c.includes("CORP")||c.includes("ORG")?{key:"enterprise",label:"Enterprise",variant:"info",rank:7,raw:b}:c.includes("TEAM")||c.includes("CHATGPTTEAM")?{key:"team",label:"Team",variant:"info",rank:6,raw:b}:c.includes("BUSINESS")||c.includes("STANDARD")||c.includes("BIZ")?{key:"business",label:"Business",variant:"warning",rank:5,raw:b}:c.includes("STUDENT")?{key:"pro",label:"Student",variant:"primary",rank:3,raw:b}:c.includes("ULTRA")?{key:"ultra",label:"Ultra",variant:"success",rank:4,raw:b}:c.includes("PRO")||c.includes("PREMIUM")?{key:"pro",label:"Pro",variant:"primary",rank:3,raw:b}:c.includes("PLUS")||c.includes("PAID")?{key:"plus",label:"Plus",variant:"secondary",rank:2,raw:b}:c.includes("FREE")||c.includes("BASIC")||c.includes("TRIAL")||c.includes("LEGACY")?{key:"free",label:"Free",variant:"default",rank:1,raw:b}:{key:"unknown",label:b.toLowerCase().split(/[\s_-]+/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"Unknown",variant:"default",rank:0,raw:b}}a.s(["calculatePercentage",()=>d,"normalizePlanTier",()=>g,"parseQuotaData",()=>f])},280382,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(571987),h=a.i(604593),i=a.i(436595),j=a.i(497160),k=a.i(831097),l=a.i(662073),m=b([l]);[l]=m.then?(await m)():m;let o="omniroute:limits:expandedGroups",p={antigravity:{label:"Antigravity",color:"#F59E0B"},github:{label:"GitHub Copilot",color:"#333"},kiro:{label:"Kiro AI",color:"#FF6B35"},codex:{label:"OpenAI Codex",color:"#10A37F"},claude:{label:"Claude Code",color:"#D97757"},glm:{label:"GLM (Z.AI)",color:"#4A90D9"},"kimi-coding":{label:"Kimi Coding",color:"#1E3A8A"}},q=[{key:"all",labelKey:"tierAll"},{key:"enterprise",labelKey:"tierEnterprise"},{key:"team",labelKey:"tierTeam"},{key:"business",labelKey:"tierBusiness"},{key:"ultra",labelKey:"tierUltra"},{key:"pro",labelKey:"tierPro"},{key:"plus",labelKey:"tierPlus"},{key:"free",labelKey:"tierFree"},{key:"unknown",labelKey:"tierUnknown"}];function n(){let a,b=(0,e.useTranslations)("usage"),[c,m]=(0,f.useState)([]),[n,r]=(0,f.useState)({}),[s,t]=(0,f.useState)({}),[u,v]=(0,f.useState)({}),[w,x]=(0,f.useState)(()=>!1),[y,z]=(0,f.useState)(null),[A,B]=(0,f.useState)(!1),[C,D]=(0,f.useState)(120),[E,F]=(0,f.useState)(!0),[G,H]=(0,f.useState)("all"),[I,J]=(0,f.useState)(()=>"none"),[K,L]=(0,f.useState)(()=>new Set),M=(0,f.useRef)(null),N=(0,f.useRef)(null),O=(0,f.useRef)({}),P=(0,f.useRef)({}),Q=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/providers/client");if(!a.ok)throw Error("Failed");let b=(await a.json()).connections||[];return m(b),b}catch{return m([]),[]}},[]),R=(0,f.useCallback)(async(a,b,c={})=>{let d=c?.force===!0,e=Date.now(),f=O.current[a]||0;if(d||!(e-f<3e4)){O.current[a]=e,t(b=>({...b,[a]:!0})),v(b=>({...b,[a]:null}));try{let c=await fetch(`/api/usage/${a}`);if(!c.ok){let b=(await c.json().catch(()=>({}))).error||c.statusText;if(404===c.status)return;if(401===c.status)return void r(c=>({...c,[a]:{quotas:[],message:b}}));throw Error(`HTTP ${c.status}: ${b}`)}let d=await c.json(),e=(0,h.parseQuotaData)(b,d);if(e.some(a=>a?.staleAfterReset===!0)){let c=P.current[a]||0;Date.now()-c>=3e4&&(P.current[a]=Date.now(),setTimeout(()=>{R(a,b,{force:!0}).catch(()=>{})},5e3))}r(b=>({...b,[a]:{quotas:e,plan:d.plan||null,message:d.message||null,raw:d}}))}catch(b){v(c=>({...c,[a]:b.message||"Failed to fetch quota"}))}finally{t(b=>({...b,[a]:!1}))}}},[]),S=(0,f.useCallback)(async(a,b)=>{await R(a,b),z(new Date)},[R]),T=(0,f.useCallback)(async()=>{if(!A){B(!0),D(120);try{let a=(await Q()).filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType));await Promise.all(a.map(a=>R(a.id,a.provider))),z(new Date)}catch(a){console.error("Error refreshing all:",a)}finally{B(!1)}}},[A,Q,R]);(0,f.useEffect)(()=>{(async()=>{F(!0),await T(),F(!1)})()},[]),(0,f.useEffect)(()=>{if(!w){M.current&&clearInterval(M.current),N.current&&clearInterval(N.current);return}return M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3),()=>{M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)}},[w,T]),(0,f.useEffect)(()=>{let a=()=>{document.hidden?(M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)):w&&(M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3))};return document.addEventListener("visibilitychange",a),()=>document.removeEventListener("visibilitychange",a)},[w,T]);let U=(0,f.useMemo)(()=>c.filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType)),[c]),V=(0,f.useMemo)(()=>{let a={antigravity:1,github:2,codex:3,claude:4,kiro:5,glm:6,"kimi-coding":7};return[...U].sort((b,c)=>(a[b.provider]||9)-(a[c.provider]||9))},[U]),W=(0,f.useMemo)(()=>{let a={};for(let b of V)a[b.id]=(0,h.normalizePlanTier)(n[b.id]?.plan);return a},[V,n]),X=(0,f.useMemo)(()=>{let a={all:V.length,enterprise:0,team:0,business:0,ultra:0,pro:0,free:0,unknown:0};for(let b of V){let c=W[b.id]?.key||"unknown";a[c]=(a[c]||0)+1}return a},[V,W]),Y=(0,f.useMemo)(()=>"all"===G?V:V.filter(a=>(W[a.id]?.key||"unknown")===G),[V,W,G]),Z=(0,f.useMemo)(()=>{if("environment"!==I)return null;let a=new Map;for(let c of Y){let d=c.providerSpecificData?.tag?.trim()||b("ungrouped");a.has(d)||a.set(d,[]),a.get(d).push(c)}return new Map([...a.entries()].sort(([a],[c])=>a===b("ungrouped")?1:c===b("ungrouped")?-1:a.localeCompare(c)))},[I,Y,b]),$=a=>{J(a),localStorage.setItem("omniroute:limits:groupBy",a)};return((0,f.useEffect)(()=>{},[c]),(0,f.useEffect)(()=>{if("environment"===I&&Z&&0===K.size){let a=new Set([...Z.keys()]);L(a),localStorage.setItem(o,JSON.stringify([...a]))}},[I,Z]),E)?(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(k.CardSkeleton,{}),(0,d.jsx)(k.CardSkeleton,{})]}):0===V.length?(0,d.jsx)(i.default,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[64px] opacity-15",children:"cloud_off"}),(0,d.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-main",children:b("noProviders")}),(0,d.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-[400px] mx-auto",children:b("connectProvidersForQuota")})]})}):(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main m-0",children:b("providerLimits")}),(0,d.jsxs)("span",{className:"text-[13px] text-text-muted",children:[b("accountsCount",{count:Y.length}),Y.length!==V.length&&` ${b("filteredFromCount",{count:V.length})}`]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex rounded-lg border border-border overflow-hidden",children:[(0,d.jsx)("button",{onClick:()=>$("none"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"none"===I?"var(--color-bg-subtle)":"transparent",color:"none"===I?"var(--color-text-main)":"var(--color-text-muted)"},children:b("viewFlat")}),(0,d.jsx)("button",{onClick:()=>$("environment"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"environment"===I?"var(--color-bg-subtle)":"transparent",color:"environment"===I?"var(--color-text-main)":"var(--color-text-muted)",borderLeft:"1px solid var(--color-border)"},children:b("viewByEnvironment")})]}),(0,d.jsxs)("button",{onClick:()=>{let a=!w;x(a),localStorage.setItem("omniroute:limits:autoRefresh",String(a))},className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-transparent cursor-pointer text-text-main text-[13px]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:w?"#22c55e":"var(--text-muted)"},children:w?"toggle_on":"toggle_off"}),b("autoRefresh"),w&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",C,"s)"]})]}),(0,d.jsxs)("button",{onClick:T,disabled:A,className:"flex items-center gap-1.5 px-3.5 py-1.5 rounded-lg bg-bg-subtle border border-border text-text-main text-[13px] disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${A?"animate-spin":""}`,children:"refresh"}),b("refreshAll")]})]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:q.map(a=>{if("all"!==a.key&&!X[a.key])return null;let c=G===a.key;return(0,d.jsxs)("button",{onClick:()=>H(a.key),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold cursor-pointer",style:{border:c?"1px solid var(--color-primary, #E54D5E)":"1px solid var(--color-border)",background:c?"rgba(229,77,94,0.1)":"transparent",color:c?"var(--color-primary, #E54D5E)":"var(--color-text-muted)"},children:[(0,d.jsx)("span",{children:b(a.labelKey)}),(0,d.jsx)("span",{className:"opacity-85",children:X[a.key]||0})]},a.key)})}),(0,d.jsxs)("div",{className:"rounded-xl border border-border overflow-hidden bg-bg-subtle",children:[(0,d.jsxs)("div",{className:"items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px"},children:[(0,d.jsx)("div",{children:b("account")}),(0,d.jsx)("div",{children:b("modelQuotas")}),(0,d.jsx)("div",{className:"text-center",children:b("lastUsed")}),(0,d.jsx)("div",{className:"text-center",children:b("actions")})]}),(a=(a,c)=>{let e=n[a.id],f=s[a.id],i=u[a.id],k=p[a.provider]||{label:a.provider,color:"#666"},l=W[a.id]||(0,h.normalizePlanTier)(null);return(0,d.jsxs)("div",{className:"items-center px-4 py-3.5 transition-[background] duration-150 hover:bg-black/[0.03] dark:hover:bg-white/[0.02]",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px",borderBottom:c?"none":"1px solid var(--color-border)"},children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0",children:[(0,d.jsx)("div",{className:"w-8 h-8 rounded-lg flex items-center justify-center overflow-hidden shrink-0",children:(0,d.jsx)(g.default,{src:`/providers/${a.provider}.png`,alt:a.provider,width:32,height:32,className:"object-contain",sizes:"32px"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-[13px] font-semibold text-text-main truncate",children:a.name||k.label}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,d.jsx)("span",{title:e?.plan?b("rawPlanWithValue",{plan:e.plan}):b("noPlanFromProvider"),children:(0,d.jsx)(j.default,{variant:l.variant,size:"sm",dot:!0,children:l.label})}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted",children:k.label})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1.5 pr-3",children:f?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-text-muted text-xs",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-[14px]",children:"progress_activity"}),b("loadingQuotas")]}):i?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-red-500",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap max-w-[300px]",children:i})]}):e?.message&&(!e.quotas||0===e.quotas.length)?(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:e.message}):e?.quotas?.length>0?e.quotas.map((a,b)=>{var c;let e=void 0!==a.remainingPercentage?Math.round(a.remainingPercentage):(0,h.calculatePercentage)(a.used,a.total),f=e>70?{bar:"#22c55e",text:"#22c55e",bg:"rgba(34,197,94,0.12)"}:e>=30?{bar:"#eab308",text:"#eab308",bg:"rgba(234,179,8,0.12)"}:{bar:"#ef4444",text:"#ef4444",bg:"rgba(239,68,68,0.12)"},g=function(a){if(!a)return null;try{let b=new Date(a)-new Date;if(b<=0)return null;let c=Math.floor(b/36e5),d=Math.floor(b%36e5/6e4);if(c>=24){let a=Math.floor(c/24);return`${a}d ${c%24}h`}return`${c}h ${d}m`}catch{return null}}(a.resetAt),i={"gemini-3-pro-high":"G3 Pro","gemini-3-pro-low":"G3 Pro Low","gemini-3-flash":"G3 Flash","gemini-2.5-flash":"G2.5 Flash","claude-opus-4-6-thinking":"Opus 4.6 Tk","claude-opus-4-5-thinking":"Opus 4.5 Tk","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-thinking":"Sonnet 4.5 Tk","claude-sonnet-4-5":"Sonnet 4.5",chat:"Chat",completions:"Completions",premium_interactions:"Premium",session:"Session",weekly:"Weekly",agentic_request:"Agentic",agentic_request_freetrial:"Agentic (Trial)"}[c=a.name]||c,j=!0===a.staleAfterReset;return(0,d.jsxs)("div",{className:"flex items-center gap-1.5 min-w-[200px] shrink-0",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold py-0.5 px-2 rounded whitespace-nowrap min-w-[60px] text-center",style:{background:f.bg,color:f.text},children:i}),j?(0,d.jsx)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:"⟳ Refreshing..."}):g?(0,d.jsxs)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:["⏱ ",g]}):null,(0,d.jsx)("div",{className:"flex-1 h-1.5 rounded-sm bg-black/[0.06] dark:bg-white/[0.06] min-w-[60px] overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-sm transition-[width] duration-300 ease-out",style:{width:`${Math.min(e,100)}%`,background:f.bar}})}),(0,d.jsxs)("span",{className:"text-[11px] font-semibold min-w-[32px] text-right",style:{color:f.text},children:[e,"%"]})]},b)}):(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:b("noQuotaData")})}),(0,d.jsx)("div",{className:"text-center text-[11px] text-text-muted",children:y?(0,d.jsx)("span",{children:y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}):"-"}),(0,d.jsx)("div",{className:"flex justify-center gap-0.5",children:(0,d.jsx)("button",{onClick:()=>S(a.id,a.provider),disabled:f,title:b("refreshQuota"),className:"p-1 rounded-md border-none bg-transparent cursor-pointer disabled:cursor-not-allowed disabled:opacity-30 opacity-60 hover:opacity-100 flex items-center justify-center transition-opacity duration-150",children:(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] text-text-muted ${f?"animate-spin":""}`,children:"refresh"})})})]},a.id)},Z?[...Z.entries()].map(([b,c])=>(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden mb-2",children:[(0,d.jsxs)("button",{onClick:()=>{L(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),localStorage.setItem(o,JSON.stringify([...c])),c})},className:"w-full flex items-center gap-2 px-4 py-2.5 bg-bg-subtle hover:bg-black/[0.04] dark:hover:bg-white/[0.05] transition-colors text-left border-none cursor-pointer",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:K.has(b)?"expand_less":"expand_more"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"folder"}),(0,d.jsx)("span",{className:"text-[12px] font-semibold text-text-main uppercase tracking-wider flex-1",children:b}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted bg-black/[0.04] dark:bg-white/[0.06] px-2 py-0.5 rounded-full",children:c.length})]}),K.has(b)&&(0,d.jsx)("div",{children:c.map((b,d)=>a(b,d===c.length-1))})]},b)):Y.map((b,c)=>a(b,c===Y.length-1))),0===Y.length&&(0,d.jsxs)("div",{className:"py-6 px-4 text-center text-text-muted text-[13px]",children:[b("noAccountsForTierFilter")," ",(0,d.jsx)("strong",{children:b(q.find(a=>a.key===G)?.labelKey||"tierUnknown")}),"."]})]})]})}a.s(["default",()=>n]),c()}catch(a){c(a)}},!1),250870,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),b=(0,e.useTranslations)("common"),[c,g]=(0,f.useState)({lockouts:[],cacheStats:null}),[i,j]=(0,f.useState)(!0),k=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/rate-limits");a.ok&&g(await a.json())}catch{}finally{j(!1)}},[]);return(0,f.useEffect)(()=>{k();let a=setInterval(k,1e4);return()=>clearInterval(a)},[k]),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-orange-500/10 text-orange-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"lock_clock"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("modelLockouts")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("lockoutsAutoRefreshHint")})]}),c.lockouts.length>0&&(0,d.jsx)("span",{className:"px-2.5 py-1 rounded-full text-xs font-semibold bg-orange-500/10 text-orange-400 border border-orange-500/20",children:a("lockedCount",{count:c.lockouts.length})})]}),0===c.lockouts.length?(0,d.jsxs)("div",{className:"text-center py-6 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] mb-2 block opacity-40","aria-hidden":"true",children:"lock_open"}),(0,d.jsx)("p",{className:"text-sm",children:a("noLockouts")})]}):(0,d.jsx)("div",{className:"flex flex-col gap-2",children:c.lockouts.map((c,e)=>{var f;return(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/15",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-orange-400","aria-hidden":"true",children:"lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:c.model}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a("account"),":"," ",(0,d.jsx)("span",{className:"font-mono",children:c.accountId?.slice(0,12)||b("none")}),c.reason&&(0,d.jsxs)(d.Fragment,{children:[a("reasonSeparator"),c.reason]})]})]})]}),(0,d.jsx)("span",{className:"text-xs font-mono tabular-nums text-orange-400",children:a("timeLeft",{time:(f=c.remainingMs)<1e3?a("durationMillisecondsShort",{value:f}):f<6e4?a("durationSecondsShort",{value:Math.ceil(f/1e3)}):a("durationMinutesShort",{value:Math.ceil(f/6e4)})})})]},e)})})]})})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),265368,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),[b,c]=(0,f.useState)({count:0,sessions:[]}),[g,i]=(0,f.useState)(!0),j=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/sessions");a.ok&&c(await a.json())}catch{}finally{i(!1)}},[]);return(0,f.useEffect)(()=>{j();let a=setInterval(j,5e3);return()=>clearInterval(a)},[j]),(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-cyan-500/10 text-cyan-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("activeSessions")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("sessionsTrackedHint")})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-cyan-500/10 border border-cyan-500/20",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-full bg-cyan-500 animate-pulse"}),(0,d.jsx)("span",{className:"text-sm font-semibold tabular-nums text-cyan-400",children:b.count})]})})]}),0===b.sessions.length?(0,d.jsxs)("div",{className:"text-center py-8 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[40px] mb-2 block opacity-40","aria-hidden":"true",children:"fingerprint"}),(0,d.jsx)("p",{className:"text-sm",children:a("noSessions")}),(0,d.jsx)("p",{className:"text-xs mt-1",children:a("sessionsHint")})]}):(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{className:"border-b border-border/30",children:[(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("session")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("age")}),(0,d.jsx)("th",{className:"text-right py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("requests")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("connection")})]})}),(0,d.jsx)("tbody",{children:b.sessions.map(b=>{var c;return(0,d.jsxs)("tr",{className:"border-b border-border/10 hover:bg-surface/20 transition-colors",children:[(0,d.jsx)("td",{className:"py-2.5 px-3",children:(0,d.jsxs)("span",{className:"font-mono text-xs px-2 py-1 rounded bg-surface/40 text-text-muted",children:[b.sessionId.slice(0,12),"…"]})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-text-muted tabular-nums",children:(c=b.ageMs)<6e4?a("durationSecondsShort",{value:Math.floor(c/1e3)}):c<36e5?a("durationMinutesShort",{value:Math.floor(c/6e4)}):a("durationHoursShort",{value:Math.floor(c/36e5)})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-right",children:(0,d.jsx)("span",{className:"font-semibold tabular-nums",children:b.requestCount})}),(0,d.jsx)("td",{className:"py-2.5 px-3",children:b.connectionId?(0,d.jsx)("span",{className:"text-xs font-mono text-cyan-400",children:b.connectionId.slice(0,10)}):(0,d.jsx)("span",{className:"text-text-muted/40",children:a("notAvailableSymbol")})})]},b.sessionId)})})]})})]})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),876251,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(831097),h=a.i(280382),i=a.i(250870),j=a.i(265368),k=b([f,h,i,j]);function l(){return(0,d.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(g.CardSkeleton,{}),children:(0,d.jsx)(h.default,{})}),(0,d.jsx)(j.default,{}),(0,d.jsx)(i.default,{})]})}[f,h,i,j]=k.then?(await k)():k,a.s(["default",()=>l]),c()}catch(a){c(a)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28dashboard%29_dashboard_936a9ee0._.js.map
|