1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6808],{5214:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=s(17828)},6808:(e,t,s)=>{s.r(t),s.d(t,{default:()=>D});var r=s(95155),l=s(12115),a=s(73321),n=s(88105),o=s(56061),d=s(84588),i=s(14051),c=s.n(i);let u=e=>new Intl.NumberFormat().format(e||0),m=e=>`$${(e||0).toFixed(2)}`;function x({stats:e}){return(0,r.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-3 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5 sm:gap-4",children:[(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col items-center text-center gap-1 px-3 py-3 sm:px-4",children:[(0,r.jsx)("span",{className:"text-text-muted text-xs uppercase font-semibold sm:text-sm",children:"Total Requests"}),(0,r.jsx)("span",{className:"w-full truncate text-lg font-bold xl:text-xl",title:u(e.totalRequests),children:u(e.totalRequests)})]}),(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col items-center text-center gap-1 px-3 py-3 sm:px-4",children:[(0,r.jsx)("span",{className:"text-text-muted text-xs uppercase font-semibold sm:text-sm",children:"Total Input Tokens"}),(0,r.jsx)("span",{className:"w-full truncate text-lg font-bold text-primary xl:text-xl",title:u(e.totalPromptTokens),children:u(e.totalPromptTokens)})]}),(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col items-center text-center gap-1 px-3 py-3 sm:px-4",children:[(0,r.jsx)("span",{className:"text-text-muted text-xs uppercase font-semibold sm:text-sm",children:"Cached Tokens"}),(0,r.jsx)("span",{className:"w-full truncate text-lg font-bold text-info xl:text-xl",title:u(e.totalCachedTokens),children:u(e.totalCachedTokens)})]}),(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col items-center text-center gap-1 px-3 py-3 sm:px-4",children:[(0,r.jsx)("span",{className:"text-text-muted text-xs uppercase font-semibold sm:text-sm",children:"Output Tokens"}),(0,r.jsx)("span",{className:"w-full truncate text-lg font-bold text-success xl:text-xl",title:u(e.totalCompletionTokens),children:u(e.totalCompletionTokens)})]}),(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col items-center text-center gap-1 px-3 py-3 sm:px-4",children:[(0,r.jsx)("span",{className:"text-text-muted text-xs uppercase font-semibold sm:text-sm",children:"Est. Cost"}),(0,r.jsxs)("span",{className:"w-full truncate text-lg font-bold text-warning xl:text-xl",title:`~${m(e.totalCost)}`,children:["~",m(e.totalCost)]}),(0,r.jsx)("span",{className:"text-[10px] text-text-muted",children:"Estimated, not actual billing"})]})]})}x.propTypes={stats:c().object.isRequired};let p=e=>new Intl.NumberFormat().format(e||0),h=e=>`$${(e||0).toFixed(2)}`;function g(e){if(!e)return"Never";let t=Math.floor((Date.now()-new Date(e))/6e4);return t<1?"Just now":t<60?`${t}m ago`:t<1440?`${Math.floor(t/60)}h ago`:new Date(e).toLocaleDateString()}function f({field:e,currentSort:t,currentOrder:s}){return t!==e?(0,r.jsx)("span",{className:"ml-1 opacity-20",children:"â"}):(0,r.jsx)("span",{className:"ml-1",children:"asc"===s?"â":"â"})}
1function y({item:e,viewMode:t,isSummary:s=!1}){return"tokens"===t?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.promptTokens?"â":p(e.promptTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:e.cachedTokens?p(e.cachedTokens):"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.completionTokens?"â":p(e.completionTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium",children:p(e.totalTokens)})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.inputCost?"â":h(e.inputCost)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:e.cachedCost?h(e.cachedCost):"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.outputCost?"â":h(e.outputCost)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium text-warning",children:h(e.totalCost||e.cost)})]})}function b({title:e,columns:t,groupedData:s,tableType:a,sortBy:n,sortOrder:o,onToggleSort:i,viewMode:c,storageKey:u,renderDetailCells:m,renderSummaryCells:x,emptyMessage:p}){let[h,g]=(0,l.useState)(new Set);(0,l.useEffect)(()=>{try{let e=localStorage.getItem(u);e&&g(new Set(JSON.parse(e)))}catch(e){console.error(`Failed to load ${u}:`,e)}},[u]),(0,l.useEffect)(()=>{try{localStorage.setItem(u,JSON.stringify([...h]))}catch(e){console.error(`Failed to save ${u}:`,e)}},[h,u]);let j=(0,l.useCallback)(e=>{g(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),N=(0,l.useMemo)(()=>"tokens"===c?[{field:"promptTokens",label:"Input Tokens"},{field:"cachedTokens",label:"Cached"},{field:"completionTokens",label:"Output Tokens"},{field:"totalTokens",label:"Total Tokens"}]:[{field:"promptTokens",label:"Input Cost"},{field:"cachedCost",label:"Cached Cost"},{field:"completionTokens",label:"Output Cost"},{field:"cost",label:"Total Cost"}],[c]),v=t.length+N.length;return(0,r.jsxs)(d.default,{className:"overflow-hidden",children:[(0,r.jsx)("div",{className:"p-4 border-b border-border bg-bg-subtle/50",children:(0,r.jsx)("h3",{className:"font-semibold",children:e})}),(0,r.jsx)("div",{className:"overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,r.jsx)("thead",{className:"bg-bg-subtle/30 text-text-muted uppercase text-xs",children:(0,r.jsxs)("tr",{children:[t.map(e=>(0,r.jsxs)("th",{className:`px-6 py-3 cursor-pointer hover:bg-bg-subtle/50 ${"right"===e.align?"text-right":""}`,onClick:()=>i(a,e.field),children:[e.label," ",(0,r.jsx)(f,{field:e.field,currentSort:n,currentOrder:o})]},e.field)),N.map(e=>(0,r.jsxs)("th",{className:"px-6 py-3 text-right cursor-pointer hover:bg-bg-subtle/50",onClick:()=>i(a,e.field),children:[e.label," ",(0,r.jsx)(f,{field:e.field,currentSort:n,currentOrder:o})]},e.field))]})}),(0,r.jsxs)("tbody",{className:"divide-y divide-border",children:[s.map(e=>(0,r.jsxs)(l.Fragment,{children:[(0,r.jsxs)("tr",{className:"group-summary cursor-pointer hover:bg-bg-subtle/50 transition-colors",onClick:()=>j(e.groupKey),children:[(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted transition-transform ${h.has(e.groupKey)?"rotate-90":""}`,children:"chevron_right"}),(0,r.jsx)("span",{className:`font-medium transition-colors ${e.summary.pending>0?"text-primary":""}`,children:e.groupKey})]})}),x(e),(0,r.jsx)(y,{item:e.summary,viewMode:c,isSummary:!0})]}),h.has(e.groupKey)&&e.items.map(e=>(0,r.jsxs)("tr",{className:"group-detail hover:bg-bg-subtle/20 transition-colors",children:[m(e),(0,r.jsx)(y,{item:e,viewM
1ode:c})]},`detail-${e.key}`))]},e.groupKey)),0===s.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:v,className:"px-6 py-8 text-center text-text-muted",children:p})})]})]})})]})}f.propTypes={field:c().string.isRequired,currentSort:c().string.isRequired,currentOrder:c().string.isRequired},y.propTypes={item:c().object.isRequired,viewMode:c().string.isRequired,isSummary:c().bool},b.propTypes={title:c().string.isRequired,columns:c().arrayOf(c().shape({field:c().string.isRequired,label:c().string.isRequired,align:c().string})).isRequired,groupedData:c().array.isRequired,tableType:c().string.isRequired,sortBy:c().string.isRequired,sortOrder:c().string.isRequired,onToggleSort:c().func.isRequired,viewMode:c().string.isRequired,storageKey:c().string.isRequired,renderDetailCells:c().func.isRequired,renderSummaryCells:c().func.isRequired,emptyMessage:c().string.isRequired};var j=s(37206);function N(e){let t=n.Q2[e];return!t?.serviceKinds||t.serviceKinds.includes("llm")}let v=(0,j.default)(()=>Promise.all([s.e(2574),s.e(3862),s.e(3842),s.e(6357),s.e(3521)]).then(s.bind(s,63521)),{loadableGenerated:{webpack:()=>[63521]},ssr:!1}),w=(0,j.default)(()=>Promise.all([s.e(3842),s.e(5815),s.e(1649),s.e(124)]).then(s.bind(s,10124)),{loadableGenerated:{webpack:()=>[10124]},ssr:!1}),k=(0,j.default)(()=>Promise.all([s.e(3842),s.e(5815),s.e(8569),s.e(2435)]).then(s.bind(s,82435)),{loadableGenerated:{webpack:()=>[82435]},ssr:!1}),C=(0,j.default)(()=>Promise.all([s.e(3842),s.e(5815),s.e(8569),s.e(5462)]).then(s.bind(s,65462)),{loadableGenerated:{webpack:()=>[65462]},ssr:!1});function T({timestamp:e}){let t,[,s]=(0,l.useState)(0);return(0,l.useEffect)(()=>{let e=setInterval(()=>s(e=>e+1),1e3);return()=>clearInterval(e)},[]),(0,r.jsx)(r.Fragment,{children:(t=Math.floor((Date.now()-new Date(e))/1e3))<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`})}function M({requests:e=[]}){return(0,r.jsxs)(d.default,{className:"flex min-w-0 flex-col overflow-hidden",padding:"sm",style:{height:480},children:[(0,r.jsx)("div",{className:"px-1 py-2 border-b border-border shrink-0",children:(0,r.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide",children:"Recent Requests"})}),e.length?(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,r.jsxs)("table",{className:"w-full min-w-[300px] border-collapse text-xs",children:[(0,r.jsx)("thead",{className:"sticky top-0 bg-bg z-10",children:(0,r.jsxs)("tr",{className:"border-b border-border",children:[(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted w-2"}),(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted",children:"Model"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted whitespace-nowrap",children:"In / Out"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted",children:"When"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.map((e,t)=>{let s=!e.status||"ok"===e.status||"success"===e.status;return(0,r.jsxs)("tr",{className:"hover:bg-bg-subtle transition-colors",children:[(0,r.jsx)("td",{className:"py-1.5",children:(0,r.jsx)("span",{className:`block w-1.5 h-1.5 rounded-full ${s?"bg-success":"bg-error"}`})}),(0,r.jsx)("td",{className:"py-1.5 font-mono truncate max-w-[120px]",title:e.model,children:e.model}),(0,r.jsxs)("td",{className:"py-1.5 text-right whitespace-nowrap",children:[(0,r.jsxs)("span",{className:"text-primary",children:[p(e.promptTokens),"â"]})," ",(0,r.jsxs)("span",{className:"text-success",children:[p(e.completionTokens),"â"]})]}),(0,r.jsx)("td",{className:"py-1.5 text-right text-text-muted whitespace-nowrap",children:(0,r.jsx)(T,{timestamp:e.timestamp})})]},t)})})]})}):(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-text-muted text-sm",children:"No requests yet."})]})}function S(e,t={},s,r){return Object.entries(e||{}).map(([e,s])=>{let r=(s.promptTokens||0)+(s.completionTokens||0),l=s.cost||0,a=s.cachedTokens||0,n=Math.max(0,(s.promptTokens||0)-a),o=r>0?(s.completionTokens||0)*(l/r):0;return{...s,key:e,totalTokens:r,totalCost:l,inputCost:r>0?l/r*n:0,cachedCost:r>0?l/r*a:0,outputCost:o,pending:t[e]||0}}).sort((e,t)=>
1{let l=e[s],a=t[s];return("string"==typeof l&&(l=l.toLowerCase()),"string"==typeof a&&(a=a.toLowerCase()),l<a)?"asc"===r?-1:1:l>a?"asc"===r?1:-1:0})}function q(e,t){if(!Array.isArray(e))return[];let s={};return e.forEach(e=>{let r=function(e,t){switch(t){case"rawModel":return e.rawModel||"Unknown Model";case"accountName":return e.accountName||`Account ${e.connectionId?.slice(0,8)}...`||"Unknown Account";case"keyName":return e.keyName||"Unknown Key";case"endpoint":return e.endpoint||"Unknown Endpoint";default:return e[t]||"Unknown"}}(e,t);s[r]||(s[r]={groupKey:r,summary:{requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,totalTokens:0,cost:0,inputCost:0,cachedCost:0,outputCost:0,lastUsed:null,pending:0},items:[]});let l=s[r].summary;l.requests+=e.requests||0,l.promptTokens+=e.promptTokens||0,l.completionTokens+=e.completionTokens||0,l.cachedTokens+=e.cachedTokens||0,l.totalTokens+=e.totalTokens||0,l.cost+=e.cost||0,l.inputCost+=e.inputCost||0,l.cachedCost+=e.cachedCost||0,l.outputCost+=e.outputCost||0,l.pending+=e.pending||0,e.lastUsed&&(!l.lastUsed||new Date(e.lastUsed)>new Date(l.lastUsed))&&(l.lastUsed=e.lastUsed),s[r].items.push(e)}),Object.values(s)}let R=[{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],P=[{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"accountName",label:"Account"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}
1],O=[{field:"keyName",label:"API Key Name"},{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],U=[{field:"endpoint",label:"Endpoint"},{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],_=[{value:"model",label:"Usage by Model"},{value:"account",label:"Usage by Account"},{value:"apiKey",label:"Usage by API Key"},{value:"endpoint",label:"Usage by Endpoint"}],$=[{value:"today",label:"Today"},{value:"24h",label:"24h"},{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"60d",label:"60D"},{value:"all",label:"All"}];function D({period:e,setPeriod:t,hidePeriodSelector:s=!1}={}){let d=(0,a.useRouter)(),i=(0,a.useSearchParams)(),c=i.get("sortBy")||"rawModel",u=i.get("sortOrder")||"asc",[m,h]=(0,l.useState)(null),[f,y]=(0,l.useState)(!0),[j,T]=(0,l.useState)(!1),[A,E]=(0,l.useState)("model"),[F,I]=(0,l.useState)("costs"),[K,L]=(0,l.useState)([]),[B,z]=(0,l.useState)("today"),G=(0,l.useRef)(!0),J=(0,l.useRef)(!1),Q=e??B,W=t??z;(0,l.useEffect)(()=>{Promise.all([fetch("/api/providers").then(e=>e.ok?e.json():null),fetch("/api/provider-nodes").then(e=>e.ok?e.json():null)]).then(([e,t])=>{let s={};for(let e of t?.nodes||[])s[e.id]=e.name;let r=new Set;L([...(e?.connections||[]).filter(e=>!(!1===e.isActive||!N(e.provider)||n.Q2[e.provider]?.hidden||r.has(e.provider))&&(r.add(e.provider),!0)).map(e=>({...e,nodeName:s[e.provider]||null})),...Object.values(n.IS).filter(e=>e.noAuth&&!e.hidden&&!r.has(e.id)&&N(e.id)).map(e=>({provider:e.id,name:e.name}))])}).catch(()=>{})},[]),(0,l.useEffect)(()=>{G.current?(G.current=!1,y(!0)):T(!0),fetch(`/api/usage/stats?period=${Q}`).then(e=>e.ok?e.json():null).then(e=>{e&&(J.current=!0,h(t=>({...t,...e})))}).catch(()=>{}).finally(()=>{y(!1),T(!1)})},[Q]),(0,l.useEffect)(()=>{let e=new EventSource("/api/usage/stream");return e.onmessage=e=>{try{let t=JSON.parse(e.data);h(e=>e?{...e,activeRequests:t.activeRequests,recentRequests:t.recentRequests,errorProvider:t.errorProvider,pending:t.pending}:e),J.current&&y(!1)}catch(e){console.error("[SSE CLIENT] parse error:",e)}},e.onerror=()=>y(!1),()=>e.close()},[]);let X=(0,l.useCallback)((e,t)=>{let s=new URLSearchParams(i.toString());s.get("sortBy")===t?s.set("sortOrder","asc"===s.get("sortOrder")?"desc":"asc"):(s.set("sortBy",t),s.set("sortOrder","asc")),d.replace(`?${s.toString()}`,{scroll:!1})},[i,d]),H=(0,l.useMemo)(()=>{if(!m)return null;switch(A){case"model":{let e=m.pending?.byModel||{};return{columns:R,groupedData:q(S(m.byModel,e,c,u),"rawModel"),storageKey:"usage-stats:expanded-models",emptyMessage:"No usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(o.default,{variant:e.pending>0?"primary":"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.lastUsed)})]})}}case"account":{let e={};return m?.pending?.byAccount&&Object.entries(m.byAccount||{}).forEach(([t,s])=>{let r=m.pending.byAccount[s.connectionId];if(r){let l=s.provider?`${s.rawModel} (${s.provider})`:s.rawModel;e[t]=r[l]||0}}
1),{columns:P,groupedData:q(S(m.byAccount,e,c,u),"accountName"),storageKey:"usage-stats:expanded-accounts",emptyMessage:"No account-specific usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.accountName||`Account ${e.connectionId?.slice(0,8)}...`}),(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(o.default,{variant:e.pending>0?"primary":"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.lastUsed)})]})}}case"apiKey":return{columns:O,groupedData:q(S(m.byApiKey,{},c,u),"keyName"),storageKey:"usage-stats:expanded-apikeys",emptyMessage:"No API key usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 font-medium",children:e.keyName}),(0,r.jsx)("td",{className:"px-6 py-3",children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(o.default,{variant:"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.lastUsed)})]})};default:return{columns:U,groupedData:q(S(m.byEndpoint,{},c,u),"endpoint"),storageKey:"usage-stats:expanded-endpoints",emptyMessage:"No endpoint usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"â"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 font-medium font-mono text-sm",children:e.endpoint}),(0,r.jsx)("td",{className:"px-6 py-3",children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(o.default,{variant:"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:p(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:g(e.lastUsed)})]})}}},[m,A,c,u]);if(!m&&!f)return(0,r.jsx)("div",{className:"text-text-muted",children:"Failed to load usage statistics."});let V=(0,r.jsx)("div",{className:"flex items-center justify-center py-12 text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[32px] animate-spin",children:"progress_activity"})});return(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-6",children:[!s&&(0,r.jsxs)("div",{className:"flex w-full items-center gap-2 sm:w-auto sm:self-end",children:[(0,r.jsx)("div",{className:"grid flex-1 grid-cols-6 items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1 sm:flex sm:flex-none",children:$.map(e=>(0,r.jsx)("button",{onClick:()=>W(e.value),disabled:j,className:`rounded-md px-3 py-1 text-sm font-medium transition-colors ${Q===e.value?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-bg-hover hover:text-text"}`,children:e.label},e.value))}),j&&(0,r.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted animate-spin",children:"progress_activity"})]}),f?V:(0,r.jsx)(x,{stats:m}),f?V:(0,r.jsxs)("div",{className:"grid min-w-0 grid-cols-1 items-stretch gap-2 lg:grid-cols-[minmax(0,2fr)_minmax(280px,1fr)]",children:[(0,r.jsx)(v,{providers:K,activeRequests:m.activeRequests||[],lastProvider:m.recentRequests?.[0]?.provider||"",errorProvider:m.errorProvider||""}),(0,r.jsx)(M,{requests:m.recentRequests||[]})]}),f?V:(0,r.jsx)(w,{period:Q}
1),!f&&(m.byProvider||m.byModel)&&(0,r.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-2 lg:grid-cols-2",children:[(0,r.jsx)(k,{byProvider:m.byProvider}),(0,r.jsx)(C,{byModel:m.byModel})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsx)("select",{value:A,onChange:e=>E(e.target.value),className:"w-full rounded-lg border border-border bg-surface px-3 py-1.5 text-sm font-medium text-text-main focus:outline-none focus:ring-2 focus:ring-primary/50 sm:w-auto",style:{colorScheme:"auto"},children:_.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,r.jsxs)("div",{className:"grid grid-cols-2 items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1 sm:flex",children:[(0,r.jsx)("button",{onClick:()=>I("costs"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"costs"===F?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Costs"}),(0,r.jsx)("button",{onClick:()=>I("tokens"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"tokens"===F?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Tokens"})]})]}),f?V:H&&(0,r.jsx)(b,{title:"",columns:H.columns,groupedData:H.groupedData,tableType:A,sortBy:c,sortOrder:u,onToggleSort:X,viewMode:F,storageKey:H.storageKey,renderSummaryCells:H.renderSummaryCells,renderDetailCells:H.renderDetailCells,emptyMessage:H.emptyMessage})]})]})}},17828:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,s(64054).createAsyncLocalStorage)()},21957:(e,t,s)=>{function r({moduleIds:e}){return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),s(95155),s(47650),s(5214),s(2451),s(53887)},37206:(e,t,s)=>{s.d(t,{default:()=>l.a});var r=s(75707),l=s.n(r)},41112:(e,t,s)=>{function r({reason:e,children:t}){return t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),s(1980)},64054:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var s={bindSnapshot:function(){return d},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return i}};for(var r in s)Object.defineProperty(t,r,{enumerable:!0,get:s[r]});let l=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class a{disable(){throw l}getStore(){}run(){throw l}exit(){throw l}enterWith(){throw l}static bind(e){return e}}let n="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return n?new n:new a}function d(e){return n?n.bind(e):a.bind(e)}function i(){return n?n.snapshot():function(e,...t){return e(...t)}}},68635:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let r=s(95155),l=s(12115),a=s(41112);function n(e){return{default:e&&"default"in e?e.default:e}}s(21957);let o={loader:()=>Promise.resolve(n(()=>null)),loading:null,ssr:!0},d=function(e){let t={...o,...e},s=(0,l.lazy)(()=>t.loader().then(n)),d=t.loading;function i(e){let n=d?(0,r.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,i=o?l.Suspense:l.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:[null,(0,r.jsx)(s,{...e})]}):(0,r.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(s,{...e})});return(0,r.jsx)(i,{...o?{fallback:n}:{},children:c})}return i.displayName="LoadableComponent",i}},75707:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l}});let r=s(73623)._(s(68635));function l(e,t){let s={};"function"==typeof e&&(s.loader=e);let l={...s,...t};return(0,r.default)({...l,modules:l.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esMo
1dule",{value:!0}),Object.assign(t.default,t),e.exports=t.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.