import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Ei as t,Gt as n,Jt as r,Yt as i,er as a,kn as o,mn as s,rn as c,un as l}from"./control-ui-foundation-CeFMP1Ly.js";import{Ga as u,S as d,Wa as f,Zn as p,ei as m,fl as h,fs as g,g as _,h as v,ml as y,ms as b,ni as x,ti as S,u as C,vr as w,w as T,y as E,yr as D}from"./control-ui-core-pH6nakZ-.js";import{G as O,I as ee,J as k,R as A,W as j,X as M,Z as N,at as P,rt as F}from"./lit-runtime-BEtFSUCp.js";import{Cn as I,ln as L,m as R,p as te}from"./control-ui-core-DGVkFhVB.js";import{Ft as z,Ht as B,N as V,Q as H,Z as ne,qt as U}from"./control-ui-core-Br5DB0Zj.js";import{F as W,I as re,In as ie,L as ae,Ln as oe,z as se}from"./control-ui-boot-wpHCbPL9.js";import{Ld as ce,as as le,es as ue,is as de,mn as fe,ns as pe,on as me,rs as he,ts as ge,vn as G}from"./control-ui-boot-Cdpgu1Gm.js";import{n as _e,t as ve}from"./settings-workspace-Bo4nqRhI.js";import{n as ye,t as be}from"./gateway-page-controller-bzyUg03c.js";import{n as xe,t as Se}from"./agent-scope-control-C6P46hJO.js";import{a as Ce,i as we,o as Te,r as Ee}from"./usage-ClT4QiBm.js";import{a as De,i as Oe,n as ke,o as Ae,r as je,s as Me}from"./usage-D9bQwLsK.js";import{n as Ne,r as Pe,t as Fe}from"./request-usage-snapshot-B1FzQATD.js";function Ie(e,t){return[e,t].some(e=>e&&e.status!==`fresh`)}function Le(){let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Re(e){return g(e,`request failed`)}function ze(e,t,n,r,i){if(r&&e.length>0)for(let r of e.slice(-1)){let i=n.indexOf(r),a=n.indexOf(t);if(i!==-1&&a!==-1){let[t,r]=ie!==t):i?[...e,t]:[t]}function Be(e,t,n,r){if(r&&e.length>0){let r=n.indexOf(e.at(-1)??``),i=n.indexOf(t);if(r!==-1&&i!==-1){let[t,a]=rt[1]-e[1]),a=i.reduce((e,[,t])=>e+t,0);return{tools:i,summary:i.length>0?`Tools: ${i.map(([e,t])=>`${e}×${t}`).join(`, `)} (${a} calls)`:``,cleanContent:r.join(` `).trim()}}var He,Ue,We,K,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt;function q(){return(q=e((()=>{b(),He=e=>t(e),Ue=e=>{let t=e.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`).replace(/\?/g,`.`);return RegExp(`^${t}$`,`i`)},We=e=>{let n=t(e);if(!n)return null;n.startsWith(`$`)&&(n=n.slice(1));let r=1;if(n.endsWith(`k`)?(r=1e3,n=n.slice(0,-1)):n.endsWith(`m`)&&(r=1e6,n=n.slice(0,-1)),!/^\d+(?:\.\d+)?$/.test(n))return null;let i=Number(n)*r;return!Number.isFinite(i)||!Number.isSafeInteger(Math.round(i))?null:i},K=e=>(e.match(/(?:[^\s"]|"[^"]*")+/g)??[]).map(e=>{let t=e.replace(/^"(.*)"$/u,`$1`),n=t.indexOf(`:`);return n>0?{key:t.slice(0,n),value:t.slice(n+1).replace(/^"(.*)"$/u,`$1`),raw:t}:{value:t,raw:e}}),Ge=e=>[e.label,e.key,e.sessionId].filter(e=>!!e).map(e=>t(e)),Ke=e=>{let n=new Set;e.modelProvider&&n.add(t(e.modelProvider)),e.providerOverride&&n.add(t(e.providerOverride)),e.origin?.provider&&n.add(t(e.origin.provider));for(let r of e.usage?.modelUsage??[])r.provider&&n.add(t(r.provider));return Array.from(n)},qe=e=>{let n=new Set;e.model&&n.add(t(e.model));for(let r of e.usage?.modelUsage??[])r.model&&n.add(t(r.model));return Array.from(n)},Je=e=>(e.usage?.toolUsage?.tools??[]).map(e=>t(e.name)),Ye={tools:e=>(e.usage?.toolUsage?.totalCalls??0)>0,errors:e=>(e.usage?.messageCounts?.errors??0)>0,context:e=>e.hasContextWeight===!0,usage:e=>!!e.usage,model:e=>qe(e).length>0,provider:e=>Ke(e).length>0},Xe=(e,t)=>e>=t,Ze=(e,t)=>e<=t,Qe={mintokens:[e=>e.usage?.totalTokens??0,Xe],maxtokens:[e=>e.usage?.totalTokens??0,Ze],mincost:[e=>e.usage?.totalCost??0,Xe],maxcost:[e=>e.usage?.totalCost??0,Ze],minmessages:[e=>e.usage?.messageCounts?.total??0,Xe],maxmessages:[e=>e.usage?.messageCounts?.total??0,Ze]},$e=new Set([`agent`,`channel`,`chat`,`provider`,`model`,`tool`,`label`,`key`,`session`,`id`,`has`,...Object.keys(Qe)]),et=new Set([`channel`,`provider`,`model`,`tool`]),tt=(e,n)=>{let r=He(n.value??``);if(!r)return!0;if(!n.key)return Ge(e).some(e=>e.includes(r));let i=He(n.key);switch(i){case`agent`:return t(e.agentId).includes(r);case`channel`:return t(e.channel).includes(r);case`chat`:return t(e.chatType).includes(r);case`provider`:return Ke(e).some(e=>e.includes(r));case`model`:return qe(e).some(e=>e.includes(r));case`tool`:return Je(e).some(e=>e.includes(r));case`label`:return t(e.label).includes(r);case`key`:case`session`:case`id`:if(r.includes(`*`)||r.includes(`?`)){let t=Ue(r);return t.test(e.key)||(e.sessionId?t.test(e.sessionId):!1)}return t(e.key).includes(r)||t(e.sessionId).includes(r);case`has`:return(Object.hasOwn(Ye,r)?Ye[r]:void 0)?.(e)??!0}let a=Object.hasOwn(Qe,i)?Qe[i]:void 0;if(!a)return!0;let o=We(r),[s,c]=a;return o===null||c(s(e),o)},nt=(e,t)=>{let n=K(t);if(n.length===0)return{sessions:e,warnings:[]};let r=[],i=new Map;for(let e of n){if(!e.key)continue;let t=He(e.key);if(!$e.has(t)){r.push(`Unknown filter: ${e.key}`);continue}if(e.value&&et.has(t)){let n=i.get(t)??[];n.push(e),i.set(t,n)}e.value===``&&r.push(`Missing value for ${e.key}`),t===`has`&&e.value&&!Object.hasOwn(Ye,He(e.value))&&r.push(`Unknown has:${e.value}`),Object.hasOwn(Qe,t)&&e.value&&We(e.value)===null&&r.push(`Invalid number for ${e.key}`)}return{sessions:e.filter(e=>n.every(t=>{let n=t.key?i.get(He(t.key)):void 0;return n?n.some(t=>tt(e,t)):tt(e,t)})),warnings:r}}})))()}function rt(e,t){return x(t)?{clearData:!0,status:he(pe(),m(`usage details`))}:{clearData:!1,status:he(e,Re(t))}}function it(){return(it=e((()=>{de(),S(),q()})))()}function at(e,t,n,r){let i=null,a=pe(),o=new re(e,{autoRun:!1,args:()=>[null,``],task:async([e,t],{signal:r})=>e&&t?{sessionKey:t,data:await n(e,t,r)}:ae,onComplete:e=>{i=e,a=ge()},onError:e=>{let t=rt(a,e);t.clearData&&(i=null),a=t.status}}),s=()=>{o.run([null,``])};return{get data(){return i?.data??null},get status(){return a},get loading(){return o.status===se.PENDING},load(e){let n=t.client;if(!n||!t.connected)return Promise.resolve();let c=r?.(e)!==!1;return(i?.sessionKey!==e||!c)&&(i=null,a=pe()),c?(a=ue(a),o.run([n,e])):(s(),Promise.resolve())},cancel:s,clear(){i=null,a=pe(),s()}}}var ot;function st(){return(st=e((()=>{W(),de(),it(),ot=class{constructor(e,t,n,r){this.timeSeries=at(e,t,Te),this.sessionLogs=at(e,t,async(e,t)=>{let n=await Ce(e,t);return Array.isArray(n.logs)?n.logs:null}),this.contextWeight=at(e,t,(e,t,i)=>{let a=n(),o=r().find(e=>e.key===t)?.agentId??a.agentId;return we(e,{...a,agentId:o},t,i)},e=>r().some(t=>t.key===e&&t.hasContextWeight))}load(e){this.timeSeries.load(e),this.sessionLogs.load(e),this.contextWeight.load(e)}cancel(){this.timeSeries.cancel(),this.sessionLogs.cancel(),this.contextWeight.cancel()}clear(){this.timeSeries.clear(),this.sessionLogs.clear(),this.contextWeight.clear()}}})))()}function ct(e,t,n=`text/plain`){let r=new Blob([t],{type:`${n};charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}function lt(e){return/^[ \t\r\n]*[=+\-@\uFF0B\uFF0D\uFF1D\uFF20]/u.test(e)?`'${e}`:e}function ut(e,t=!0){let n=t?lt(e):e;return/[",\r\n]/.test(n)?`"${n.replaceAll(`"`,`""`)}"`:n}function dt(e){return e.map(e=>e==null?``:ut(String(e),typeof e==`string`)).join(`,`)}var ft,pt,mt,ht,J,gt,_t,vt;function yt(){return(yt=e((()=>{l(),i(),q(),ft=e=>{let t=[dt([`key`,`label`,`agentId`,`channel`,`provider`,`model`,`updatedAt`,`durationMs`,`messages`,`errors`,`toolCalls`,`inputTokens`,`outputTokens`,`cacheReadTokens`,`cacheWriteTokens`,`totalTokens`,`totalCost`])];for(let n of e){let e=n.usage;t.push(dt([n.key,n.label??``,n.agentId??``,n.channel??``,n.modelProvider??n.providerOverride??``,n.model??n.modelOverride??``,s(n.updatedAt)??``,e?.durationMs??``,e?.messageCounts?.total??``,e?.messageCounts?.errors??``,e?.messageCounts?.toolCalls??``,e?.input??``,e?.output??``,e?.cacheRead??``,e?.cacheWrite??``,e?.totalTokens??``,e?.totalCost??``]))}return t.join(` `)},pt=e=>{let t=[dt([`date`,`inputTokens`,`outputTokens`,`cacheReadTokens`,`cacheWriteTokens`,`totalTokens`,`inputCost`,`outputCost`,`cacheReadCost`,`cacheWriteCost`,`totalCost`])];for(let n of e)t.push(dt([n.date,n.input,n.output,n.cacheRead,n.cacheWrite,n.totalTokens,n.inputCost??``,n.outputCost??``,n.cacheReadCost??``,n.cacheWriteCost??``,n.totalCost]));return t.join(` `)},mt=(e,n,r)=>{let i=e.trim();if(!i)return[];let a=K(i).map(e=>e.raw).at(-1)??``,[o,s]=a.includes(`:`)?[a.slice(0,a.indexOf(`:`)),a.slice(a.indexOf(`:`)+1)]:[``,``],l=t(o),u=t(s),d=e=>c(e.filter(e=>!!e)),f=d(n.map(e=>e.agentId)).slice(0,6),p=d(n.map(e=>e.channel)).slice(0,6),m=d([...n.map(e=>e.modelProvider),...n.map(e=>e.providerOverride),...r?.byProvider.map(e=>e.provider)??[]]).slice(0,6),h=d([...n.map(e=>e.model),...r?.byModel.map(e=>e.model)??[]]).slice(0,6),g=d(r?.tools.tools.map(e=>e.name)??[]).slice(0,6);if(!l)return[{label:`agent:`,value:`agent:`},{label:`channel:`,value:`channel:`},{label:`provider:`,value:`provider:`},{label:`model:`,value:`model:`},{label:`tool:`,value:`tool:`},{label:`has:errors`,value:`has:errors`},{label:`has:tools`,value:`has:tools`},{label:`minTokens:`,value:`minTokens:`},{label:`maxCost:`,value:`maxCost:`}];let _=[],v=(e,n)=>{for(let r of n)(!u||t(r).includes(u))&&_.push({label:`${e}:${r}`,value:`${e}:${r}`})};switch(l){case`agent`:v(`agent`,f);break;case`channel`:v(`channel`,p);break;case`provider`:v(`provider`,m);break;case`model`:v(`model`,h);break;case`tool`:v(`tool`,g);break;case`has`:[`errors`,`tools`,`context`,`usage`,`model`,`provider`].forEach(e=>{(!u||e.includes(u))&&_.push({label:`has:${e}`,value:`has:${e}`})})}return _},ht=(e,t)=>{let n=e.trim();if(!n)return`${t} `;let r=K(n).map(e=>e.raw);return r[r.length-1]=t,`${r.join(` `)} `},J=e=>t(e),gt=(e,t)=>{let n=e.trim();if(!n)return`${t} `;let r=K(n).map(e=>e.raw),i=r[r.length-1]??``,a=t.includes(`:`)?t.split(`:`)[0]:null,o=i.includes(`:`)?i.split(`:`)[0]:null;return i.endsWith(`:`)&&a&&o===a?(r[r.length-1]=t,`${r.join(` `)} `):r.includes(t)?`${r.join(` `)} `:`${r.join(` `)} ${t} `},_t=(e,t)=>{let n=K(e).map(e=>e.raw).filter(e=>e!==t);return n.length?`${n.join(` `)} `:``},vt=(e,t,n)=>{let r=J(t),i=[...K(e).filter(e=>J(e.key??``)!==r).map(e=>e.raw),...n.map(e=>`${t}:${e}`)];return i.length?`${i.join(` `)} `:``}})))()}function bt({agentId:e,key:t}){return JSON.stringify([e,t])}function xt(e,t,n){return new re(e,{autoRun:!1,args:()=>[null],task:async([e],{signal:r})=>{if(!e)return ae;let i=t.capture();if(!i)throw Error(U(`common.offline`));let a=`openclaw-usage-${Le()}.json`,o=new Map;if(e.sessions.some(e=>e.hasContextWeight)){let t=await Ee(i.client,n(),{includeContextWeight:!0,signal:r});if(o=new Map(t.sessions.map(e=>[bt(e),e.contextWeight])),e.sessions.some(e=>e.hasContextWeight&&!o.get(bt(e))))throw Error(U(`usage.export.changed`))}return{connection:i,filename:a,data:{...e,sessions:e.sessions.map(e=>({...e,contextWeight:o.get(bt(e))??null}))}}},onComplete:({connection:e,filename:n,data:r})=>{t.isCurrent(e)&&ct(n,JSON.stringify(r,null,2),`application/json`)},onError:e=>{u({message:`${U(`usage.export.label`)}: ${Re(e)}`})}})}function St(){return(St=e((()=>{W(),B(),f(),q(),yt()})))()}function Ct(e,t,n){let r=t?.sessions.map(e=>e.agentId).filter(e=>!!e?.trim())??[];return k`
${I(`usage`)}
${xe({agents:e.agents.state.agentsList?.agents??[],additionalAgentIds:r,selection:e.agentSelection})}
${_e(n)} `}function wt(){return(wt=e((()=>{j(),L(),Se(),ve()})))()}var Tt;function Et(){return(Et=e((()=>{Tt=[`channel`,`agent`,`provider`,`model`,`messages`,`tools`,`errors`,`duration`]})))()}function Dt(){return{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,totalCost:0,inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,missingCostEntries:0}}function Ot(e,t){if(e.input+=t.input,e.output+=t.output,e.cacheRead+=t.cacheRead,e.cacheWrite+=t.cacheWrite,e.totalTokens+=t.totalTokens,e.totalCost+=t.totalCost,e.inputCost+=t.inputCost,e.outputCost+=t.outputCost,e.cacheReadCost+=t.cacheReadCost,e.cacheWriteCost+=t.cacheWriteCost,e.missingCostEntries+=t.missingCostEntries,t.missingCostByModel){e.missingCostByModel??={};for(let[n,r]of Object.entries(t.missingCostByModel))e.missingCostByModel[n]=(e.missingCostByModel[n]??0)+r}}function kt(e,t){return JSON.stringify([e??`unknown`,t??`unknown`])}function At(e,t,n){return JSON.stringify([e,t??`unknown`,n??`unknown`])}function jt(){return{count:0,sum:0,min:1/0,max:0,p95Max:0}}function Mt(e,t){e.count+=t.count,e.sum+=t.avgMs*t.count,e.min=Math.min(e.min,t.minMs),e.max=Math.max(e.max,t.maxMs),e.p95Max=Math.max(e.p95Max,t.p95Ms)}function Nt(e){return{count:e.count,avgMs:e.count?e.sum/e.count:0,minMs:e.min===1/0?0:e.min,maxMs:e.max,p95Ms:e.p95Max}}function Pt(e,t,n){let r=e.get(t)??{provider:n.provider,model:n.model,count:0,totals:Dt()};r.count+=n.count,Ot(r.totals,n.totals),e.set(t,r)}function Ft(e,t,n){if(!t)return;let r=e.get(t)??Dt();Ot(r,n),e.set(t,r)}function It(e,t){return t.totals.totalCost-e.totals.totalCost||t.totals.totalTokens-e.totals.totalTokens}function Lt(){let e=Dt(),t={total:0,user:0,assistant:0,toolCalls:0,toolResults:0,errors:0},n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=jt(),d=0,f=0;function p(e){let t=s.get(e);return t||(t={date:e,tokens:0,cost:0,messages:0,toolCalls:0,errors:0},s.set(e,t)),t}function m({usage:s,agentId:m,channel:h}){if(s){Ot(e,s),f=Math.max(f,s.durationMs??0),(s.firstActivity!==void 0||(s.messageCounts?.total??0)>0)&&(d+=1),s.messageCounts&&(t.total+=s.messageCounts.total,t.user+=s.messageCounts.user,t.assistant+=s.messageCounts.assistant,t.toolCalls+=s.messageCounts.toolCalls,t.toolResults+=s.messageCounts.toolResults,t.errors+=s.messageCounts.errors);for(let e of s.toolUsage?.tools??[])n.set(e.name,(n.get(e.name)??0)+e.count);for(let e of s.modelUsage??[])Pt(r,kt(e.provider,e.model),e),Pt(i,e.provider??`unknown`,{...e,model:void 0});Ft(a,m,s),Ft(o,h,s),s.latency&&s.latency.count>0&&Mt(u,s.latency);for(let e of s.dailyLatency??[]){let t=c.get(e.date)??jt();Mt(t,e),c.set(e.date,t)}for(let e of s.dailyBreakdown??[]){let t=p(e.date);t.tokens+=e.tokens,t.cost+=e.cost}for(let e of s.dailyMessageCounts??[]){let t=p(e.date);t.messages+=e.total,t.toolCalls+=e.toolCalls,t.errors+=e.errors}for(let e of s.dailyModelUsage??[]){let t=At(e.date,e.provider,e.model),n=l.get(t)??{date:e.date,provider:e.provider,model:e.model,tokens:0,cost:0,count:0};n.tokens+=e.tokens,n.cost+=e.cost,n.count+=e.count,l.set(t,n)}}}function h(){let e=Array.from(n,([e,t])=>({name:e,count:t})).toSorted((e,t)=>t.count-e.count);return{sessionCount:d,...f>0?{longestSessionDurationMs:f}:{},messages:t,tools:{totalCalls:e.reduce((e,{count:t})=>e+t,0),uniqueTools:n.size,tools:e},byModel:Array.from(r.values()).toSorted(It),byProvider:Array.from(i.values()).toSorted(It),byAgent:Array.from(a,([e,t])=>({agentId:e,totals:t})).toSorted((e,t)=>t.totals.totalCost-e.totals.totalCost),byChannel:Array.from(o,([e,t])=>({channel:e,totals:t})).toSorted((e,t)=>t.totals.totalCost-e.totals.totalCost),latency:u.count>0?Nt(u):void 0,dailyLatency:Array.from(c,([e,t])=>({date:e,...Nt(t)})).toSorted((e,t)=>e.date.localeCompare(t.date)),modelDaily:Array.from(l.values()).toSorted((e,t)=>e.date.localeCompare(t.date)||t.cost-e.cost),daily:Array.from(s.values()).toSorted((e,t)=>e.date.localeCompare(t.date))}}return{totals:e,add:m,finish:h}}function Rt(){return(Rt=e((()=>{})))()}function zt(e){return Math.round(e/ln)}function Y(e){return C(e,{thousandsSuffix:`K`,trimTrailingZero:!1})}function Bt(e,t=2){return`$${e.toFixed(t)}`}function Vt(e){let t=new Date;return t.setHours(e,0,0,0),t.toLocaleTimeString(void 0,{hour:`numeric`})}function Ht(e,t,n){let r=e.usage;if(!r)return!1;let i=r.firstActivity??e.updatedAt,a=r.lastActivity??e.updatedAt;if(!i||!a)return!1;let o=Math.min(i,a),s=Math.max(i,a);if(o===s){let e=new Date(o);return n({usage:r,hour:Wt(e,t),weekday:Gt(e,t),share:1}),!0}let c=(s-o)/6e4,l=o;for(;l0),i=Array.from({length:24},()=>0);for(let t of e){let e=t.usage;if(!e?.messageCounts||e.messageCounts.total===0)continue;let a=e.messageCounts;if(e.utcQuarterHourMessageCounts&&e.utcQuarterHourMessageCounts.length>0){for(let t of e.utcQuarterHourMessageCounts){let e=qt(t.date,t.quarterIndex,n);e&&(r[e.hour]=(r[e.hour]??0)+t.errors,i[e.hour]=(i[e.hour]??0)+t.total)}continue}Ht(t,n,({hour:e,share:t})=>{r[e]=(r[e]??0)+(a.errors??0)*t,i[e]=(i[e]??0)+a.total*t})}return i.map((e,t)=>{let n=r[t]??0;return{hour:t,rate:e>0?n/e:0,errors:n,msgs:e}}).filter(e=>e.msgs>0&&e.errors>0).toSorted((e,t)=>t.rate-e.rate).slice(0,5).map(e=>({label:Vt(e.hour),value:`${(e.rate*100).toFixed(2)}%`,sub:`${Math.round(e.errors)} ${t(U(`usage.overview.errors`))} · ${Math.round(e.msgs)} ${U(`usage.overview.messagesAbbrev`)}`}))}function Wt(e,t){return t===`utc`?e.getUTCHours():e.getHours()}function Gt(e,t){return t===`utc`?e.getUTCDay():e.getDay()}function Kt(e,t){let n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!n||!Number.isInteger(t)||t<0||t>95)return null;let[,r,i,a]=n,o=Number(r),s=Number(i),c=Number(a),l=new Date(Date.UTC(o,s-1,c,0,t*15));return Number.isNaN(l.valueOf())||l.getUTCFullYear()!==o||l.getUTCMonth()!==s-1||l.getUTCDate()!==c?null:l}function qt(e,t,n){let r=Kt(e,t);return r?{hour:Wt(r,n),weekday:Gt(r,n)}:null}function Jt(e,t){let n=new Date(e);return t===`utc`?n.setUTCMinutes(59,59,999):n.setMinutes(59,59,999),n}function Yt(e,t,n){let r=e.usage?.utcQuarterHourTokenUsage;if(!r||r.length===0)return!1;let i=!1;for(let e of r){if(e.totalTokens<=0)continue;let r=qt(e.date,e.quarterIndex,t);r&&(i=!0,n({hour:r.hour,weekday:r.weekday,tokens:e.totalTokens}))}return i}function Xt(e,t,n){let r=e.usage,i=r?.firstActivity??e.updatedAt,a=r?.lastActivity??e.updatedAt;if(!i||!a)return!1;let o=Math.min(i,a),s=Math.max(i,a),c=o;for(;c<=s;){let e=new Date(c),r=Wt(e,n);if(t.includes(r))return!0;let i=Jt(e,n);c=Math.min(i.getTime(),s)+1}return!1}function Zt(e,t,n){if(t.length===0)return!0;let r=!1;return Yt(e,n,({hour:e})=>{t.includes(e)&&(r=!0)})?r:Xt(e,t,n)}function Qt(e,t){let n=Array.from({length:24},()=>0),r=Array.from({length:7},()=>0),i=0,a=!1;for(let o of e){let e=o.usage;if(!(!e||!e.totalTokens||e.totalTokens<=0)){if(i+=e.totalTokens,Yt(o,t,({hour:e,weekday:t,tokens:i})=>{n[e]=(n[e]??0)+i,r[t]=(r[t]??0)+i})){a=!0;continue}Ht(o,t,({usage:e,hour:t,weekday:i,share:a})=>{n[t]=(n[t]??0)+e.totalTokens*a,r[i]=(r[i]??0)+e.totalTokens*a})&&(a=!0)}}let o=[U(`usage.mosaic.sun`),U(`usage.mosaic.mon`),U(`usage.mosaic.tue`),U(`usage.mosaic.wed`),U(`usage.mosaic.thu`),U(`usage.mosaic.fri`),U(`usage.mosaic.sat`)].map((e,t)=>({label:e,tokens:r[t]??0}));return{hasData:a,totalTokens:i,hourTotals:n,weekdayTotals:o}}function $t(e,n,r,i){let a=Qt(e,n);if(!a.hasData)return G({title:U(`usage.mosaic.title`),description:U(`usage.mosaic.subtitleEmpty`),actions:k`
${Y(0)} ${t(U(`usage.metrics.tokens`))}
`},k`
${U(`usage.mosaic.noTimelineData`)}
`);let o=Math.max(...a.hourTotals,1),s=Math.max(...a.weekdayTotals.map(e=>e.tokens),1);return G({title:U(`usage.mosaic.title`),description:U(`usage.mosaic.subtitle`,{zone:U(n===`utc`?`usage.filters.timeZoneUtc`:`usage.filters.timeZoneLocal`)}),actions:k`
${Y(a.totalTokens)} ${t(U(`usage.metrics.tokens`))}
`},k`
${U(`usage.mosaic.dayOfWeek`)}
${a.weekdayTotals.map(e=>{let t=Math.min(e.tokens/s,1),n=e.tokens>0?`color-mix(in srgb, var(--accent) ${(12+t*60).toFixed(1)}%, transparent)`:`transparent`;return k`
${e.label}
${Y(e.tokens)}
`})}
${U(`usage.filters.hours`)} 0 → 23
${a.hourTotals.map((e,n)=>{let a=Math.min(e/o,1),s=e>0?`color-mix(in srgb, var(--accent) ${(8+a*70).toFixed(1)}%, transparent)`:`transparent`,c=`${n}:00 · ${Y(e)} ${t(U(`usage.metrics.tokens`))}`,l=a>.7?`color-mix(in srgb, var(--accent) 60%, transparent)`:`color-mix(in srgb, var(--accent) 24%, transparent)`,u=r.includes(n);return k` `})}
${U(`usage.mosaic.midnight`)} ${U(`usage.mosaic.fourAm`)} ${U(`usage.mosaic.eightAm`)} ${U(`usage.mosaic.noon`)} ${U(`usage.mosaic.fourPm`)} ${U(`usage.mosaic.eightPm`)}
${U(`usage.mosaic.legend`)}
`)}function en(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function tn(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let[,n,r,i]=t,a=Number(n),o=Number(r)-1,s=Number(i),c=new Date(a,o,s);return Number.isNaN(c.valueOf())||c.getFullYear()!==a||c.getMonth()!==o||c.getDate()!==s?null:c}function nn(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=Date.UTC(n,r-1,i),o=new Date(a);return o.getUTCFullYear()!==n||o.getUTCMonth()!==r-1||o.getUTCDate()!==i?null:a/un}function rn(e){return new Date(e*un).toISOString().slice(0,10)}function an(e){let t=tn(e);return t?t.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):e}function on(e){let t=tn(e);return t?t.toLocaleDateString(void 0,{month:`long`,day:`numeric`,year:`numeric`}):e}function sn(e,t,n){let r=nn(t),i=nn(n);if(r===null||i===null||r>i)return null;let a=Dt();for(let t of e){let e=nn(t.date);e!==null&&e>=r&&e<=i&&Ot(a,t)}return{days:i-r+1,startDate:t,endDate:n,totals:a}}function cn(e,t,n,r=[1,7,30,90]){let i=nn(t),a=nn(n);if(i===null||a===null||i>a)return[];let o=a-i+1;return Array.from(new Set(r.map(e=>Math.max(1,Math.trunc(e))))).filter(e=>ee-t).map(t=>sn(e,rn(a-t+1),n)).filter(e=>e!==null)}var ln,un,dn,fn;function pn(){return(pn=e((()=>{j(),Rt(),me(),B(),T(),ln=4,un=864e5,dn=(e,t)=>{if(e.length===0)return t??{messages:{total:0,user:0,assistant:0,toolCalls:0,toolResults:0,errors:0},tools:{totalCalls:0,uniqueTools:0,tools:[]},byModel:[],byProvider:[],byAgent:[],byChannel:[],daily:[]};let n=Lt();for(let t of e)n.add(t);return n.finish()},fn=(e,t,n)=>{let r=0,i=0;for(let t of e){let e=t.usage?.durationMs??0;e>0&&(r+=e,i+=1)}let a=i?r/i:0,o=t&&r>0?t.totalTokens/(r/6e4):void 0,s=t&&r>0?t.totalCost/(r/6e4):void 0,c=n.messages.total?n.messages.errors/n.messages.total:0,l;for(let e of n.daily){if(e.messages<=0||e.errors<=0)continue;let t={date:e.date,errors:e.errors,messages:e.messages,rate:e.errors/e.messages};(!l||t.rate>l.rate||t.rate===l.rate&&t.errors>l.errors)&&(l=t)}return{durationSumMs:r,durationCount:i,avgDurationMs:a,throughputTokensPerMin:o,throughputCostPerMin:s,errorRate:c,peakErrorDay:l}}})))()}function mn(e,t,n){return{key:e,className:e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),labelKey:`usage.breakdown.${e}`,hintKey:t,short:n}}function hn(e,t){return t===0?0:e/t*100}function X(e){let t=Math.abs(e);return Bt(e,t===0||t>=.01?2:t>=1e-4?4:6)}function gn(e,t,n){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n(t,e.shiftKey))}function _n(e,t,n,r=`chart-toggle small`){return k`
${n.map(({value:n,labelKey:r})=>k` `)}
`}function vn(e,t,n,i,a,o,s,c){if(!(e.length>0||t.length>0||n.length>0))return O;let l=n.at(0)??``,u=n.length===1?i.find(e=>e.key===l):null,d=u?r(u.label||u.key,20)+((u.label||u.key).length>20?`…`:``):n.length===1?r(l,8)+`…`:U(`usage.filters.sessionsCount`,{count:String(n.length)}),f=u?u.label||u.key:n.length===1?l:n.join(`, `),p=e.length===1?e[0]:U(`usage.filters.daysCount`,{count:String(e.length)}),m=t.length===1?`${t[0]}:00`:U(`usage.filters.hoursCount`,{count:String(t.length)}),h=[{active:e.length>0,labelKey:`usage.filters.days`,value:p,removeKey:`usage.filters.removeDays`,onClear:a},{active:t.length>0,labelKey:`usage.filters.hours`,value:m,removeKey:`usage.filters.removeHours`,onClear:o},{active:n.length>0,labelKey:`usage.filters.session`,value:d,removeKey:`usage.filters.removeSession`,onClear:s,title:f}];return k`
${h.filter(({active:e})=>e).map(({labelKey:e,value:t,removeKey:n,onClear:r,title:i})=>k`
${U(e)}: ${t}
`)} ${(e.length>0||t.length>0)&&n.length>0?k` `:O}
`}function yn(e,t,n){let r=sn(e,t,n);if(!r||e.length===0)return O;let i=cn(e,t,n),a=en(new Date),o=(e,t)=>e===1?t===a?U(`usage.presets.today`):an(t):U(`usage.costWindows.lastDays`,{count:String(e)}),s=[{label:U(`usage.costWindows.selectedRange`),summary:r,range:!0},...i.map(e=>({label:o(e.days,e.endDate),summary:e,range:!1}))];return k`
${U(`usage.costWindows.title`)}
${U(`usage.costWindows.subtitle`,{date:on(n)})}
${an(t)} – ${an(n)}
${s.map(({label:e,summary:t,range:n})=>{let r=t.totals.totalCost/t.days;return k`
${e}
${X(t.totals.totalCost)}
${Y(t.totals.totalTokens)} ${U(`usage.metrics.tokens`)} · ${X(r)} ${U(`usage.costWindows.perDay`)}
`})}
`}function bn(e,n,r,i,a,s){if(!e.length)return k`
${U(`usage.daily.title`)}
${U(`usage.empty.noData`)}
`;let c=r===`tokens`,l=e.map(e=>c?e.totalTokens:e.totalCost),u=Math.max(...l,0),d=u>0?u:c?1:1e-4,f=l.filter(e=>e>0),p=d/(f.length>0?Math.min(...f):d)>50,m=l.map(e=>{if(e<=0)return 0;let t=p?Math.sqrt(e/d):e/d;return Math.max(6,t*200)}),h=e.length>30?12:e.length>20?18:e.length>14?24:32,g=e.length<=14,_=new Set(n);return k`
${_n(i,a,[{value:`total`,labelKey:`usage.daily.total`},{value:`by-type`,labelKey:`usage.daily.byType`}],`chart-toggle small sessions-toggle`)}
${U(c?`usage.daily.tokensTitle`:`usage.daily.costTitle`)} ${p?k``:O}
${e.map((n,r)=>{let a=o(m[r],`daily usage bar height`),l=_.has(n.date),u=an(n.date),d=e.length>20?String(Number.parseInt(n.date.slice(8),10)):u,f=e.length>20?`daily-bar-label daily-bar-label--compact`:`daily-bar-label`,p=i===`by-type`?Q.map(({key:e,className:t,labelKey:r})=>({value:c?n[e]:n[`${e}Cost`]??0,className:t,labelKey:r})):[],h=p.map(({value:e,labelKey:t})=>`${U(t)} ${c?Y(e):X(e)}`),v=c?Y(n.totalTokens):X(n.totalCost),y=on(n.date),b=`${Y(n.totalTokens)} ${t(U(`usage.metrics.tokens`))}`.trim(),x=X(n.totalCost),S=p.reduce((e,t)=>e+t.value,0)||1;return k`
gn(e,n.date,s)} @click=${e=>s(n.date,e.shiftKey)} > ${i===`by-type`?k`
${p.map(({className:e,value:t})=>k`
`)}
`:k`
`} ${g?k`
${v}
`:k``}
${d}
`})}
`}function xn(e,t){let n=t===`tokens`,r=n?e.totalTokens||1:e.totalCost||0,i=Q.map(({key:t,className:i,labelKey:a})=>{let o=n?e[t]:e[`${t}Cost`]||0;return{className:i,labelKey:a,percentage:hn(o,r),formatted:n?Y(o):X(o)}});return k`
${U(n?`usage.breakdown.tokensByType`:`usage.breakdown.costByType`)}
${i.map(({className:e,labelKey:t,percentage:n,formatted:r})=>k`
`)}
${i.map(({className:e,labelKey:t,formatted:n})=>k` ${U(t)} ${n} `)}
${U(`usage.breakdown.total`)}: ${n?Y(e.totalTokens):X(e.totalCost)}
`}function Sn(e,t,n,r){let i=[`usage-insight-card`,r?.className].filter(Boolean).join(` `),a=[r?.error?`usage-error-list`:`usage-list`,r?.listClassName].filter(Boolean).join(` `);return k`
${e}
${t.length===0?k`
${n}
`:k`
${t.map(e=>r?.error?k`
${e.label}
${e.value}
${e.sub?k`
${e.sub}
`:O}
`:k`
${e.label} ${e.value} ${e.sub?k`${e.sub}`:O}
`)}
`}
`}function Cn(e){let t=e.currentTarget;t instanceof HTMLElement&&t.focus()}function Z(e){let t=`usage-summary-hint-${e.hintId}`,n=[`stat`,`usage-summary-card`,e.className,e.tone?`usage-summary-card--${e.tone}`:``].filter(Boolean).join(` `),r=[`stat-value`,`usage-summary-value`,e.tone??``,e.compactValue?`usage-summary-value--compact`:``].filter(Boolean).join(` `);return k`
${e.title} ${e.hint}
${e.value}
${e.sub}
`}function wn(e,n,r,i,a,o,s,c){if(!e)return O;let l=n.messages.total?Math.round(e.totalTokens/n.messages.total):0,u=n.messages.total?e.totalCost/n.messages.total:0,d=e.input+e.cacheRead+e.cacheWrite,f=d>0?e.cacheRead/d:0,p=d>0?`${(f*100).toFixed(1)}%`:U(`usage.common.emptyValue`),m=r.errorRate*100,h=r.throughputTokensPerMin===void 0?U(`usage.common.emptyValue`):`${Y(Math.round(r.throughputTokensPerMin))} ${U(`usage.overview.tokensPerMinute`)}`,g=r.throughputCostPerMin===void 0?U(`usage.common.emptyValue`):`${X(r.throughputCostPerMin)} ${U(`usage.overview.perMinute`)}`,v=r.durationCount>0?_(r.avgDurationMs)??U(`usage.common.emptyValue`):U(`usage.common.emptyValue`),y=n.daily.filter(e=>e.messages>0&&e.errors>0).map(e=>{let n=e.errors/e.messages;return{label:an(e.date),value:`${(n*100).toFixed(2)}%`,sub:`${e.errors} ${t(U(`usage.overview.errors`))} · ${e.messages} ${U(`usage.overview.messagesAbbrev`)} · ${Y(e.tokens)}`,rate:n}}).toSorted((e,t)=>t.rate-e.rate).slice(0,5).map(({rate:e,...t})=>t),b=t=>a&&e.totalCost>0?U(`usage.overview.costShare`,{percent:(t/e.totalCost*100).toFixed(1)}):null,x=(e,t,n)=>[b(e),Y(t),n===void 0?null:`${n} ${U(`usage.overview.messagesAbbrev`)}`].filter(e=>e!==null).join(` · `),S=n.byModel.slice(0,5).map(e=>({label:e.model??U(`usage.common.unknown`),value:X(e.totals.totalCost),sub:x(e.totals.totalCost,e.totals.totalTokens,e.count)})),C=n.byProvider.slice(0,5).map(e=>({label:e.provider??U(`usage.common.unknown`),value:X(e.totals.totalCost),sub:x(e.totals.totalCost,e.totals.totalTokens,e.count)})),w=n.tools.tools.slice(0,6).map(e=>({label:e.name,value:`${e.count}`,sub:U(`usage.overview.calls`)})),T=n.byAgent.slice(0,5).map(e=>({label:e.agentId,value:X(e.totals.totalCost),sub:x(e.totals.totalCost,e.totals.totalTokens)})),E=n.byChannel.slice(0,5).map(e=>({label:e.channel,value:X(e.totals.totalCost),sub:x(e.totals.totalCost,e.totals.totalTokens)})),D=[[`usage.overview.topModels`,S,`usage.overview.noModelData`],[`usage.overview.topProviders`,C,`usage.overview.noProviderData`],[`usage.overview.topTools`,w,`usage.overview.noToolCalls`],[`usage.overview.topAgents`,T,`usage.overview.noAgentData`],[`usage.overview.topChannels`,E,`usage.overview.noChannelData`]];return G({title:U(`usage.overview.title`)},k`
${Z({hintId:`messages`,title:U(`usage.overview.messages`),hint:U(`usage.overview.messagesHint`),value:n.messages.total,sub:`${n.messages.user} ${t(U(`usage.overview.user`))} · ${n.messages.assistant} ${t(U(`usage.overview.assistant`))}`,className:`usage-summary-card--hero`})} ${Z({hintId:`throughput`,title:U(`usage.overview.throughput`),hint:U(`usage.overview.throughputHint`),value:h,sub:g,className:`usage-summary-card--hero usage-summary-card--throughput`,compactValue:!0})} ${Z({hintId:`tool-calls`,title:U(`usage.overview.toolCalls`),hint:U(`usage.overview.toolCallsHint`),value:n.tools.totalCalls,sub:`${n.tools.uniqueTools} ${U(`usage.overview.toolsUsed`)}`,className:`usage-summary-card--half`})} ${Z({hintId:`average-tokens`,title:U(`usage.overview.avgTokens`),hint:U(`usage.overview.avgTokensHint`),value:Y(l),sub:U(`usage.overview.acrossMessages`,{count:String(n.messages.total||0)}),className:`usage-summary-card--half`})} ${Z({hintId:`cache-hit-rate`,title:U(`usage.overview.cacheHitRate`),hint:U(`usage.overview.cacheHint`),value:p,sub:`${Y(e.cacheRead)} ${U(`usage.overview.cached`)} · ${Y(d)} ${U(`usage.overview.prompt`)}`,tone:f>.6?`good`:f>.3?`warn`:`bad`,className:`usage-summary-card--medium`})} ${Z({hintId:`error-rate`,title:U(`usage.overview.errorRate`),hint:U(`usage.overview.errorHint`),value:`${m.toFixed(2)}%`,sub:`${n.messages.errors} ${t(U(`usage.overview.errors`))} · ${v} ${U(`usage.overview.avgSession`)}`,tone:m>5?`bad`:m>1?`warn`:`good`,className:`usage-summary-card--medium`})} ${Z({hintId:`average-cost`,title:U(`usage.overview.avgCost`),hint:U(i?`usage.overview.avgCostHintMissing`:`usage.overview.avgCostHint`),value:X(u),sub:`${X(e.totalCost)} ${t(U(`usage.breakdown.total`))}`,className:`usage-summary-card--compact`})} ${Z({hintId:`sessions`,title:U(`usage.overview.sessions`),hint:U(`usage.overview.sessionsHint`),value:s,sub:U(`usage.overview.sessionsInRange`,{count:String(c)}),className:`usage-summary-card--compact`})} ${Z({hintId:`errors`,title:U(`usage.overview.errors`),hint:U(`usage.overview.errorsHint`),value:n.messages.errors,sub:`${n.messages.toolResults} ${U(`usage.overview.toolResults`)}`,className:`usage-summary-card--compact`})}
${D.map(([e,t,n])=>Sn(U(e),t,U(n)))} ${Sn(U(`usage.overview.peakErrorDays`),y,U(`usage.overview.noErrorData`),{error:!0})} ${Sn(U(`usage.overview.peakErrorHours`),o,U(`usage.overview.noErrorData`),{error:!0,className:`usage-insight-card--wide`,listClassName:`usage-error-list--hours`})}
`)}function Tn(e,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=e=>p.includes(e),v=e=>{let t=e.label||e.key;return t.startsWith(`agent:`)&&t.includes(`?token=`)?t.slice(0,t.indexOf(`?token=`)):t},y=e=>[g(`channel`)&&e.channel&&`channel:${e.channel}`,g(`agent`)&&e.agentId&&`agent:${e.agentId}`,g(`provider`)&&(e.modelProvider||e.providerOverride)&&`provider:${e.modelProvider??e.providerOverride}`,g(`model`)&&e.model&&`model:${e.model}`,g(`messages`)&&e.usage?.messageCounts&&`msgs:${e.usage.messageCounts.total}`,g(`tools`)&&e.usage?.toolUsage&&`tools:${e.usage.toolUsage.totalCalls}`,g(`errors`)&&e.usage?.messageCounts&&`errors:${e.usage.messageCounts.errors}`,g(`duration`)&&e.usage?.durationMs&&`dur:${_(e.usage.durationMs)??`—`}`].filter(e=>typeof e==`string`&&e.length>0),b=new Set(r),x=(e,t)=>{let n=e.usage;return n?b.size>0&&n.dailyBreakdown&&n.dailyBreakdown.length>0?n.dailyBreakdown.reduce((e,n)=>b.has(n.date)?e+(t===`tokens`?n.tokens:n.cost):e,0):t===`tokens`?n.totalTokens??0:n.totalCost??0:0},S=e=>x(e,i?`tokens`:`cost`),C=e=>{switch(a){case`recent`:return e.updatedAt??0;case`messages`:return e.usage?.messageCounts?.total??0;case`errors`:return e.usage?.messageCounts?.errors??0;case`cost`:return x(e,`cost`);case`tokens`:return x(e,`tokens`)}return a},w=[...e].toSorted((e,t)=>{let n=C(t)-C(e);if(n!==0)return n;let r=(t.updatedAt??0)-(e.updatedAt??0);return r===0?v(e).localeCompare(v(t)):r}),T=o===`asc`?w.toReversed():w,E=T.reduce((e,t)=>e+S(t),0),D=T.length?E/T.length:0,ee=T.reduce((e,t)=>e+(t.usage?.messageCounts?.errors??0),0),A=(e,t,n)=>{let r=S(e),a=v(e),o=y(e);return k`
{t.target?.closest(`button`)||l(e.key,t.shiftKey,n)}} title="${e.key}" >
${i?Y(r):X(r)}
`},j=new Set(n),M=T.filter(e=>j.has(e.key)),N=M.length,P=new Map(T.map(e=>[e.key,e])),F=s.map(e=>P.get(e)).filter(e=>!!e),I=e=>{let t=e.map(e=>e.key);return e.map(e=>A(e,j.has(e.key),t))};return G({title:U(`usage.sessions.title`)},k`
${U(`usage.sessions.shown`,{count:String(e.length)})} ${m===e.length?``:` · ${U(`usage.sessions.total`,{count:String(m)})}`}
${i?Y(D):X(D)} ${U(`usage.sessions.avg`)} ${ee} ${t(U(`usage.overview.errors`))}
${_n(c,f,[{value:`all`,labelKey:`usage.sessions.all`},{value:`recent`,labelKey:`usage.sessions.recent`}])} ${N>0?k` `:O}
${c===`recent`?F.length===0?k`
${U(`usage.sessions.noRecent`)}
`:k`
${I(F)}
`:e.length===0?k`
${U(`usage.sessions.noneInRange`)}
`:k`
${I(T.slice(0,50))} ${e.length>50?k`
${U(`usage.sessions.more`,{count:String(e.length-50)})}
`:O}
`} ${N>1?k`
${U(`usage.sessions.selected`,{count:String(N)})}
${I(M)}
`:O}
`)}var Q;function En(){return(En=e((()=>{n(),j(),ee(),H(),me(),B(),z(),T(),pn(),Q=[mn(`output`,`usage.details.assistantOutputTokens`,`Out`),mn(`input`,`usage.details.userToolInputTokens`,`In`),mn(`cacheWrite`,`usage.details.tokensWrittenToCache`,`CW`),mn(`cacheRead`,`usage.details.tokensReadFromCache`,`CR`)]})))()}function Dn(e,t){return t>0?e/t*100:0}function On(e){return e<0xe8d4a51000?e*1e3:e}function kn(e,t,n){let r=Number(e.slice(0,4)),i=Number(e.slice(5,7))-1,a=Number(e.slice(8,10))+n;return t===`utc`?Date.UTC(r,i,a):new Date(r,i,a).getTime()}function An(e,t){let n=new Date(e),r=t===`utc`?n.getUTCFullYear():n.getFullYear(),i=(t===`utc`?n.getUTCMonth():n.getMonth())+1,a=t===`utc`?n.getUTCDate():n.getDate();return`${r}-${String(i).padStart(2,`0`)}-${String(a).padStart(2,`0`)}`}function jn(e,t,n){let r=Math.min(t,n),i=Math.max(t,n);return e.filter(e=>{if(e.timestamp<=0)return!0;let t=On(e.timestamp);return t>=r&&t<=i})}function Mn(e,n,r,i){return le({status:e,errorMessage:e.error?U(`usage.details.loadFailed`,{detail:t(U(r)),error:e.error}):void 0,onRetry:n,className:`usage-callout usage-detail-error--${i}`})}function Nn(e,n,r){let i=n||e.usage;if(!i)return k`
${U(`usage.details.noUsageData`)}
`;let a=e=>e?E(e):U(`usage.common.emptyValue`),o=[e.channel&&`channel:${e.channel}`,e.agentId&&`agent:${e.agentId}`,(e.modelProvider||e.providerOverride)&&`provider:${e.modelProvider??e.providerOverride}`,e.model&&`model:${e.model}`].filter(Boolean),s=i.toolUsage?.tools.slice(0,6)??[],c;if(r){c=new Map;for(let e of r){let{tools:t}=Ve(e.content);for(let[e]of t)c.set(e,(c.get(e)||0)+1)}}let l=s.map(e=>({label:e.name,value:`${c?c.get(e.name)??0:e.count}`,sub:U(`usage.overview.calls`)})),u=c?[...c.values()].reduce((e,t)=>e+t,0):i.toolUsage?.totalCalls??0,d=c?c.size:i.toolUsage?.uniqueTools??0,f=i.modelUsage?.slice(0,6).map(e=>({label:e.model??U(`usage.common.unknown`),value:Bt(e.totals.totalCost),sub:Y(e.totals.totalTokens)}))??[],p=[{labelKey:`usage.overview.messages`,value:i.messageCounts?.total??0,meta:k`${i.messageCounts?.user??0} ${t(U(`usage.overview.user`))} · ${i.messageCounts?.assistant??0} ${t(U(`usage.overview.assistant`))}`},{labelKey:`usage.overview.toolCalls`,value:u,meta:k`${d} ${U(`usage.overview.toolsUsed`)}`},{labelKey:`usage.overview.errors`,value:i.messageCounts?.errors??0,meta:k`${i.messageCounts?.toolResults??0} ${U(`usage.overview.toolResults`)}`},{labelKey:`usage.details.duration`,value:_(i.durationMs)??U(`usage.common.emptyValue`),meta:k`${a(i.firstActivity)} → ${a(i.lastActivity)}`}];return k` ${o.length>0?k`
${o.map(e=>k`${e}`)}
`:O}
${p.map(({labelKey:e,value:t,meta:n})=>k`
${U(e)}
${t}
${n}
`)}
${Sn(U(`usage.overview.topTools`),l,U(`usage.overview.noToolCalls`))} ${Sn(U(`usage.details.modelMix`),f,U(`usage.overview.noModelData`))}
`}function Pn(e,t,n,r){let i=Math.min(n,r),a=Math.max(n,r),s=t.filter(e=>e.timestamp>=i&&e.timestamp<=a);if(s.length===0)return;let c=0,l=0,u=0,d=0,f={output:0,input:0,cacheWrite:0,cacheRead:0};for(let e of s){c+=e.totalTokens||0,l+=e.cost||0;for(let{key:t}of Q)f[t]+=e[t]||0;d+=+(e.output>0),u+=+(e.input>0)}let p=o(s[0],`filtered usage first point`),m=o(s.at(-1),`filtered usage last point`);return{...e,...f,totalTokens:c,totalCost:l,durationMs:m.timestamp-p.timestamp,firstActivity:p.timestamp,lastActivity:m.timestamp,messageCounts:{total:s.length,user:u,assistant:d,toolCalls:0,toolResults:0,errors:0}}}function Fn(e,n,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,ee,A,j,M,N,P,F){let I=e.label||e.key,L=I.length>50?r(I,50)+`…`:I,R=e.usage,te=d!==null&&f!==null,z=d!==null&&f!==null&&n?.points&&R?Pn(R,n.points,d,f):void 0,B=z?{totalTokens:z.totalTokens,totalCost:z.totalCost}:{totalTokens:R?.totalTokens??0,totalCost:R?.totalCost??0},V=z?U(`usage.details.filtered`):``;return k`
${L} ${V?k`${V}`:O}
${R?k` ${Y(B.totalTokens)} ${t(U(`usage.metrics.tokens`))}${V} ${Bt(B.totalCost)}${V} `:O}
${e.scope===`family`&&e.includedSessionIds?.length?k`
${U(`usage.scope.familyIncluded`,{count:String(e.includedSessionIds.length)})}
`:O}
${Nn(e,z,d!=null&&f!=null&&v?jn(v,d,f):void 0)}
${In(n,i,a,o,s,c,l,u,m,h,g,_,d,f,p)}
${Rn(v,y,b,x,S,C,w,T,E,D,ee,A,te?d:null,te?f:null)} ${Ln(j,M,R,N,P)}
`}function In(e,n,r,i,a,s,c,l,u,f,p,m=`local`,h,g,_){if(n&&!r.hasLoaded)return k`
${U(`usage.loading.badge`)}
`;let y=Mn(r,i,`usage.details.usageOverTime`,`timeline`);if(r.error&&!r.hasLoaded)return k`
${U(`usage.details.usageOverTime`)}
${y}
`;if(!e||e.points.length<2)return k`
${y}
${U(`usage.details.noTimeline`)}
`;let b=e.points;if(u||f||p&&p.length>0){let t=u?kn(u,m,0):0,n=f?kn(f,m,1):1/0,r=p?.length?new Set(p):void 0;b=e.points.filter(e=>e.timestamp=n?!1:!r||r.has(An(e.timestamp,m)))}if(b.length<2)return k`
${y}
${U(`usage.details.noDataInRange`)}
`;let x=0,S=0;b=b.map(e=>(x+=e.totalTokens,S+=e.cost,{...e,cumulativeTokens:x,cumulativeCost:S}));let C=h!=null&&g!=null,w=C?Math.min(h,g):0,T=C?Math.max(h,g):1/0,E=0,D=b.length;if(C){E=b.findIndex(e=>e.timestamp>=w),E===-1&&(E=b.length);let e=b.findIndex(e=>e.timestamp>T);D=e===-1?b.length:e}let ee=C?b.slice(E,D):b,A={output:0,input:0,cacheRead:0,cacheWrite:0};for(let e of ee)for(let{key:t}of Q)A[t]+=e[t];let j={top:8,right:4,bottom:14,left:30},N=400-j.left-j.right,P=100-j.top-j.bottom,F=a===`cumulative`,I=a===`per-turn`&&c===`by-type`,L=m===`utc`?{timeZone:`UTC`}:{},R=Object.values(A).reduce((e,t)=>e+t,0),te=b.map(e=>F?e.cumulativeTokens:I?e.input+e.output+e.cacheRead+e.cacheWrite:e.totalTokens),z=Math.max(...te,1),B=N/b.length,V=Math.min(Bn,Math.max(1,B*zn)),H=B-V,ne=j.left+E*(V+H),W=D>=b.length?j.left+(b.length-1)*(V+H)+V:j.left+(D-1)*(V+H)+V;return k`
${U(`usage.details.usageOverTime`)}
${C?k`
`:O} ${_n(a,s,[{value:`per-turn`,labelKey:`usage.details.perTurn`},{value:`cumulative`,labelKey:`usage.details.cumulative`}])} ${F?O:_n(c,l,[{value:`total`,labelKey:`usage.daily.total`},{value:`by-type`,labelKey:`usage.daily.byType`}])}
${y}
${[{x1:j.left,y1:j.top,x2:j.left,y2:j.top+P},{x1:j.left,y1:j.top+P,x2:400-j.right,y2:j.top+P}].map(({x1:e,y1:t,x2:n,y2:r})=>M``)} ${[{y:j.top+5,text:Y(z)},{y:j.top+P,text:`0`}].map(({y:e,text:t})=>M`${t}`)} ${b.length>0?M` ${d(o(b[0],`time series first point`).timestamp,{hour:`2-digit`,minute:`2-digit`,...L},``)} ${d(o(b.at(-1),`time series last point`).timestamp,{hour:`2-digit`,minute:`2-digit`,...L},``)} `:O} ${b.map((e,n)=>{let r=o(te[n],`time series bar total`),i=j.left+n*(V+H),a=r/z*P,s=j.top+P-a,c=[v(e.timestamp,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,...L},``),`${Y(r)} ${t(U(`usage.metrics.tokens`))}`];I&&c.push(...Q.map(({key:t,short:n})=>`${n} ${Y(e[t])}`));let l=c.join(` · `),u=C&&(n=D);if(!I)return M``;let d=j.top+P,f=u?` dimmed`:``;return M` ${Q.map(({key:t,className:n})=>{let o=e[t];if(o<=0||r<=0)return O;let s=o/r*a;return d-=s,M``})} `})} ${M` `} ${[ne,W].map(e=>M` ${[-.7,Wn].map(t=>M``)} `)} ${(()=>{let e=e=>t=>{if(!_)return;t.preventDefault(),t.stopPropagation();let n=t.currentTarget.closest(`.timeseries-chart-wrapper`)?.querySelector(`svg`);if(!n)return;let r=n.getBoundingClientRect(),i=r.width,a=j.left/400*i,s=(400-j.right)/400*i-a,c=e=>{let t=Math.max(0,Math.min(1,(e-r.left-a)/s));return Math.min(Math.floor(t*b.length),b.length-1)},l=e===`left`?ne:W,u=r.left+l/400*i,d=t.clientX-u;document.body.style.cursor=`col-resize`;let f=t=>{let n=t.clientX-d,r=c(n),i=b[r];if(!i)return;let a=e===`left`,s=a?g??o(b.at(-1),`time series right cursor point`).timestamp:h??o(b[0],`time series left cursor point`).timestamp;_(a?Math.min(i.timestamp,s):s,a?s:Math.max(i.timestamp,s))},p=()=>{document.body.style.cursor=``,document.removeEventListener(`mousemove`,f),document.removeEventListener(`mouseup`,p)};document.addEventListener(`mousemove`,f),document.addEventListener(`mouseup`,p)};return k` ${[`left`,`right`].map(t=>k`
`)} `})()}
${C?k` ${U(`usage.details.turnRange`,{start:String(E+1),end:String(D),total:String(b.length)})} · ${d(w,{hour:`2-digit`,minute:`2-digit`,...L},``)}–${d(T,{hour:`2-digit`,minute:`2-digit`,...L},``)} · ${Y(R)} · ${Bt(ee.reduce((e,t)=>e+(t.cost||0),0))} `:k`${b.length} ${U(`usage.overview.messagesAbbrev`)} · ${Y(x)} · ${Bt(S)}`}
${I?k`
${U(`usage.breakdown.tokensByType`)}
${Q.map(({key:e,className:t})=>k`
`)}
${Q.map(({key:e,className:t,labelKey:n,hintKey:r})=>k`
${U(n)} ${Y(A[e])}
`)}
${U(`usage.breakdown.total`)}: ${Y(R)}
`:O}
`}function Ln({weight:e,loading:t,status:n},r,i,a,o){let s=Mn(n,r,`usage.details.systemPromptBreakdown`,`context`);if(!e)return k`
${s} ${n.error?O:k`
${U(t?`usage.loading.badge`:`usage.details.noContextData`)}
`}
`;let c=[{className:`skills`,labelKey:`usage.details.skills`,tokens:zt(e.skills.promptChars),entries:e.skills.entries.map(({name:e,blockChars:t})=>({name:e,chars:t}))},{className:`tools`,labelKey:`usage.details.tools`,tokens:zt(e.tools.listChars+e.tools.schemaChars),entries:e.tools.entries.map(({name:e,summaryChars:t,schemaChars:n})=>({name:e,chars:t+n}))},{className:`files`,labelKey:`usage.details.files`,tokens:zt(e.injectedWorkspaceFiles.reduce((e,t)=>t.injectionStatus===`native_unverified`?e:e+t.injectedChars,0)),entries:e.injectedWorkspaceFiles.map(({name:e,injectedChars:t})=>({name:e,chars:t}))}].map(({className:e,labelKey:t,tokens:n,entries:r})=>({className:e,labelKey:t,tokens:n,entries:r.toSorted((e,t)=>e.chars===null?t.chars===null?0:1:t.chars===null?-1:t.chars-e.chars)})),l=[{className:`system`,labelKey:`usage.details.system`,tokens:zt(e.systemPrompt.chars)},...c],u=l.reduce((e,{tokens:t})=>e+t,0),d=i&&i.totalTokens>0?i.input+i.cacheRead:0,f=d>0?`~${Math.min(u/d*100,100).toFixed(0)}% ${U(`usage.details.ofInput`)}`:U(`usage.details.baseContextPerMessage`),p=c.some(({entries:e})=>e.length>4);return k`
${s}
${U(`usage.details.systemPromptBreakdown`)}
${p?k``:O}

${f}

${l.map(({className:e,labelKey:t,tokens:n})=>k`
`)}
${l.map(({className:e,labelKey:t,tokens:n})=>k` ${U(e===`system`?`usage.details.systemShort`:t)} ~${Y(n)} `)}
${U(`usage.breakdown.total`)}: ~${Y(u)}
${c.filter(({entries:e})=>e.length>0).map(({labelKey:e,entries:t})=>{let n=a?t:t.slice(0,4),r=t.length-n.length;return k`
${U(e)} (${t.length})
${n.map(({name:e,chars:t})=>k`
${e} ${t===null?U(`usage.common.unknown`):`~${Y(zt(t))}`}
`)}
${r>0?k`
${U(`usage.sessions.more`,{count:String(r)})}
`:O}
`})}
`}function Rn(e,n,r,i,a,o,s,c,l,u,d,f,p,m){if(n&&!r.hasLoaded)return k`
${U(`usage.details.conversation`)}
${U(`usage.loading.badge`)}
`;let h=Mn(r,i,`usage.details.conversation`,`conversation`);if(r.error&&!r.hasLoaded)return k`
${U(`usage.details.conversation`)}
${h}
`;if(!e||e.length===0)return k`
${U(`usage.details.conversation`)}
${h}
${U(`usage.details.noMessages`)}
`;let g=t(s.query),_=e.map(e=>{let t=Ve(e.content);return{log:e,toolInfo:t,cleanContent:t.cleanContent||e.content}}),v=Array.from(new Set(_.flatMap(e=>e.toolInfo.tools.map(([e])=>e)))).toSorted((e,t)=>e.localeCompare(t)),y=p!=null&&m!=null,b=y?Math.min(p,m):0,x=y?Math.max(p,m):1/0,S=_.filter(e=>{if(y&&e.log.timestamp>0){let t=On(e.log.timestamp);if(tx)return!1}return(s.roles.length===0||s.roles.includes(e.log.role))&&(!s.hasTools||e.toolInfo.tools.length>0)&&(s.tools.length===0||e.toolInfo.tools.some(([e])=>s.tools.includes(e)))&&(!g||t(e.cleanContent).includes(g))}),C=s.roles.length>0||s.tools.length>0||s.hasTools||g||y?`${S.length} ${U(`usage.details.of`)} ${e.length}${y?` (${U(`usage.details.timelineFiltered`)})`:``}`:`${e.length}`,w=new Set(s.roles),T=new Set(s.tools);return k`
${U(`usage.details.conversation`)} (${C} ${t(U(`usage.overview.messages`))})
${h}
d(e.target.value)} />
${S.map(e=>{let{log:t,toolInfo:n,cleanContent:r}=e,i=t.role===`user`?`user`:`assistant`,o=t.role===`user`?U(`usage.details.you`):t.role===`assistant`?U(`usage.overview.assistant`):U(`usage.details.tool`);return k`
${o} ${E(t.timestamp)} ${t.tokens?k`${Y(t.tokens)}`:O}
${r}
${n.tools.length>0?k`
${n.summary}
${n.tools.map(([e,t])=>k` ${e} × ${t} `)}
`:O}
`})} ${S.length===0?k`
${U(`usage.details.noMessagesMatch`)}
`:O}
`}var zn,Bn,Vn,Hn,Un,Wn;function Gn(){return(Gn=e((()=>{n(),j(),de(),B(),z(),T(),q(),pn(),En(),zn=.75,Bn=8,Vn=.06,Hn=5,Un=12,Wn=.7})))()}function Kn(e){return new Date(`${e}T12:00:00Z`).getTime()}function qn(e){return new Date(e).toISOString().slice(0,10)}function Jn(e){let t=e.toSorted((e,t)=>e-t),n=e=>t[Math.min(t.length-1,Math.floor(t.length*e))]??0;return[n(.25),n(.5),n(.75)]}function Yn(e,t){return e<=0?0:e[e.date,e.totalTokens])),s=e.filter(e=>{let t=Kn(e.date);return e.totalTokens>0&&t>=a&&t<=i}).map(e=>e.totalTokens),c=s.length>0?Jn(s):[0,0,0],l=a-new Date(a).getUTCDay()*Zn,u=new Intl.DateTimeFormat(r,{month:`short`,timeZone:`UTC`}),d=[],f=[],p=-1;for(let e=l;e<=i;e+=7*Zn){let t=[];for(let n=0;n<7;n+=1){let r=e+n*Zn;if(ri){t.push(null);continue}let s=qn(r),l=o.get(s)??0;t.push({date:s,tokens:l,level:Yn(l,c)})}d.push({days:t});let r=Kn(t.find(e=>e!==null)?.date??n),s=new Date(r).getUTCMonth();f.push(s===p?``:u.format(new Date(r))),p=s}return{weeks:d,monthLabels:f}}var Zn;function Qn(){return(Qn=e((()=>{Zn=864e5})))()}function $n(e){let t=rr+e.weeks.length*nr,n=new Intl.NumberFormat(void 0,{maximumFractionDigits:0}),r=new Intl.DateTimeFormat(void 0,{weekday:`short`,timeZone:`UTC`});return k` ${e.monthLabels.map((e,t)=>e?M`${e}`:O)} ${ar.map(({row:e,utcDay:t})=>M`${r.format(new Date(t))}`)} ${e.weeks.map((e,t)=>e.days.map((e,r)=>{if(!e)return O;let i=`${on(e.date)} · ${U(`usage.heatmap.cellTokens`,{tokens:n.format(e.tokens)})}`;return M` `}))} `}function er(e,t,n){if(e.length===0)return O;let r=Xn(e,t,n),i=k` `;return G({title:U(`usage.heatmap.title`),description:U(`usage.heatmap.subtitle`),actions:i},k`
${$n(r)}
`)}var tr,nr,rr,ir,ar;function or(){return(or=e((()=>{j(),me(),B(),Qn(),pn(),tr=11,nr=14,rr=30,ir=18,ar=[{row:1,utcDay:Date.UTC(2024,0,1)},{row:3,utcDay:Date.UTC(2024,0,3)},{row:5,utcDay:Date.UTC(2024,0,5)}]})))()}function sr(e){return k` ${e} `}function cr(e){return G({title:U(`usage.loading.title`),actions:sr(U(`usage.loading.badge`))},k`
${U(`usage.filters.to`)}
`)}function lr(e){return k`
${U(`usage.empty.title`)}
${U(`usage.empty.subtitle`)}
${U(`usage.empty.featureOverview`)} ${U(`usage.empty.featureSessions`)} ${U(`usage.empty.featureTimeline`)}
`}function ur(e,t,n){let r=n?k`
${U(`usage.providerUsage.stalled`)}
`:t?k`
${U(`usage.providerUsage.unavailable`)}
`:O;return e.length===0?r:G({title:U(`usage.providerUsage.title`),count:e.length,description:U(`usage.providerUsage.subtitle`)},k` ${r}
${e.map(e=>k`
${e.displayName}
${e.provider}
${e.plan?k`${e.plan}`:O}
${je(e)}
`)}
`)}function dr(e){let{data:t,filters:n,display:r,detail:i,callbacks:a}=e,o=a.filters,s=a.display,c=a.details;if(t.loading&&!t.totals)return fe(k`
${cr(n)}
`,{wide:!0});let l=r.chartMode===`tokens`,u=n.query.trim().length>0,d=n.queryDraft.trim().length>0,f=new Set(n.selectedDays),p=new Set(n.selectedSessions),m=[...t.sessions].toSorted((e,t)=>{let n=l?e.usage?.totalTokens??0:e.usage?.totalCost??0;return(l?t.usage?.totalTokens??0:t.usage?.totalCost??0)-n}),h=n.agentId?m.filter(e=>J(e.agentId??``)===J(n.agentId??``)):m,g=f.size>0?h.filter(e=>e.usage?.activityDates?.length?e.usage.activityDates.some(e=>f.has(e)):e.updatedAt?f.has(An(e.updatedAt,n.timeZone)):!1):h,_=n.selectedHours.length>0?g.filter(e=>Zt(e,n.selectedHours,n.timeZone)):g,v=nt(_,n.query),y=v.sessions,b=v.warnings,x=mt(n.queryDraft,h,t.aggregates),S=K(n.query),C=e=>{let t=J(e);return S.filter(e=>J(e.key??``)===t).map(e=>e.value).filter(Boolean)},w=e=>{let t=new Set;for(let n of e)n&&t.add(n);return Array.from(t)},T=w(h.map(e=>e.channel)).slice(0,12),E=w([...h.map(e=>e.modelProvider),...h.map(e=>e.providerOverride),...t.aggregates?.byProvider.map(e=>e.provider)??[]]).slice(0,12),D=w([...h.map(e=>e.model),...t.aggregates?.byModel.map(e=>e.model)??[]]).slice(0,12),ee=w(t.aggregates?.tools.tools.map(e=>e.name)??[]).slice(0,12),A=n.selectedSessions.length===1?t.sessions.find(e=>e.key===n.selectedSessions[0])??y.find(e=>e.key===n.selectedSessions[0]):null,j=e=>{let t=Dt();for(let n of e)n.usage&&Ot(t,n.usage);return t},M=e=>{let n=Dt();for(let r of t.costDaily)e.has(r.date)&&Ot(n,r);return n},N,P,F=h.length;if(n.selectedSessions.length>0){let e=y.filter(e=>p.has(e.key));N=j(e),P=e.length}else n.selectedDays.length>0&&n.selectedHours.length===0?(N=M(f),P=y.length):n.selectedHours.length>0||u?(N=j(y),P=y.length):n.agentId?(N=j(h),P=F):(N=t.totals,P=F);let I=n.selectedSessions.length>0?y.filter(e=>p.has(e.key)):u||n.selectedHours.length>0?y:n.selectedDays.length>0?g:h,L=n.selectedSessions.length>0||u||n.selectedHours.length>0||n.selectedDays.length>0||!!n.agentId,R=L?dn(I):dn([],t.aggregates),te=t.sessionsLimitReached&&!L,z=te?j(I):N,B=te?dn(I):R,V=L?O:yn(t.costDaily,n.startDate,n.endDate),H=n.selectedSessions.length>0?(()=>{let e=y.filter(e=>p.has(e.key)),n=new Set;for(let t of e)for(let e of t.usage?.activityDates??[])n.add(e);return n.size>0?t.costDaily.filter(e=>n.has(e.date)):t.costDaily})():t.costDaily,ne=fn(I,z,B),W=!t.loading&&!t.error&&t.sessions.length===0&&(t.totals?.totalTokens??0)===0,re=(z?.missingCostEntries??0)>0||(z?z.totalTokens>0&&z.totalCost===0&&z.input+z.output+z.cacheRead+z.cacheWrite>0:!1),ie=[{label:U(`usage.presets.today`),days:1},{label:U(`usage.presets.last7d`),days:7},{label:U(`usage.presets.last30d`),days:30},{label:U(`usage.presets.last90d`),days:90},{label:U(`usage.presets.last1y`),days:365}],ae=e=>{let t=new Date,n=new Date;n.setDate(n.getDate()-(e-1)),o.onStartDateChange(en(n)),o.onEndDateChange(en(t))},oe=()=>{o.onStartDateChange(`1970-01-01`),o.onEndDateChange(en(new Date))},se=(e,t,r)=>{if(r.length===0)return O;let i=C(e),a=new Set(i.map(e=>J(e))),s=r.length>0&&r.every(e=>a.has(J(e))),c=i.length;return k` {t.preventDefault();let i=t.detail.item.value;if(i===`command:select-all`){o.onQueryDraftChange(vt(n.queryDraft,e,r));return}if(i===`command:clear`){o.onQueryDraftChange(vt(n.queryDraft,e,[]));return}if(i?.startsWith(`option:`)){let t=decodeURIComponent(i.slice(7)),r=`${e}:${t}`,s=a.has(J(t));o.onQueryDraftChange(s?_t(n.queryDraft,r):gt(n.queryDraft,r))}}} > ${U(`usage.filters.selectAll`)} ${U(`usage.filters.clear`)} ${r.map(e=>{let t=a.has(J(e));return k` ${e} `})} `},ce=en(new Date);return fe(k`

${U(`usage.filters.title`)}

${t.loading?sr(U(`usage.loading.badge`)):O} ${W?k`${U(`usage.empty.hint`)}`:O}
${N?k` ${Y(N.totalTokens)} ${U(`usage.metrics.tokens`)} ${Bt(N.totalCost)} ${U(`usage.metrics.cost`)} ${P} ${U(P===1?`usage.metrics.session`:`usage.metrics.sessions`)} `:O} {switch(e.detail.item.value){case`sessions-csv`:ct(`openclaw-usage-sessions-${ce}.csv`,ft(y),`text/csv`);break;case`daily-csv`:ct(`openclaw-usage-daily-${ce}.csv`,pt(H),`text/csv`);break;case`json`:s.onExportJson({totals:N,sessions:y,daily:H,aggregates:R});break;case void 0:}}} > ${U(`usage.export.sessionsCsv`)} ${U(`usage.export.dailyCsv`)} ${U(`usage.export.json`)}
${vn(n.selectedDays,n.selectedHours,n.selectedSessions,t.sessions,o.onClearDays,o.onClearHours,o.onClearSessions,o.onClearFilters)}
${ie.map(e=>k` `)}
o.onStartDateChange(e.target.value)} /> ${U(`usage.filters.to`)} o.onEndDateChange(e.target.value)} />
o.onQueryDraftChange(e.target.value)} @keydown=${e=>{e.key===`Enter`&&(e.preventDefault(),o.onApplyQuery())}} />
${d||u?k` `:O} ${u?U(`usage.query.matching`,{shown:String(y.length),total:String(F)}):U(`usage.query.inRange`,{total:String(F)})}
${se(`channel`,U(`usage.filters.channel`),T)} ${se(`provider`,U(`usage.filters.provider`),E)} ${se(`model`,U(`usage.filters.model`),D)} ${se(`tool`,U(`usage.filters.tool`),ee)} ${U(`usage.query.tip`)}
${S.length>0?k`
${S.map(e=>{let t=e.raw;return k` ${t} `})}
`:O} ${x.length>0?k`
${x.map(e=>k` `)}
`:O} ${b.length>0?k`
${b.join(` · `)}
`:O}
${t.error?k`
${t.error}
`:O} ${t.cacheRefresh===`complete`?O:k`
${U(t.cacheRefresh===`exhausted`?`usage.cacheStatus.paused`:`usage.cacheStatus.warning`)}
`} ${t.sessionsLimitReached?k`
${U(`usage.sessions.limitReached`)}
`:O}
${ur(t.providerUsage,t.providerUsageUnavailable,t.providerUsageStalled)} ${W?lr(o.onRefresh):k` ${wn(z,B,ne,re,n.selectedDays.length===0,Ut(I,n.timeZone),P,F)} ${er(H,n.startDate,n.endDate)} ${$t(I,n.timeZone,n.selectedHours,o.onSelectHour)}
${V} ${bn(H,n.selectedDays,r.chartMode,r.dailyChartMode,s.onDailyChartModeChange,o.onSelectDay)} ${N?xn(N,r.chartMode):O}
${Tn(y,n.selectedSessions,n.selectedDays,l,r.sessionSort,r.sessionSortDir,r.recentSessions,r.sessionsTab,c.onSelectSession,s.onSessionSortChange,s.onSessionSortDirChange,s.onSessionsTabChange,r.visibleColumns,F,o.onClearSessions)}
${A?k`
${Fn(A,i.timeSeries,i.timeSeriesLoading,i.timeSeriesStatus,c.onRetryTimeSeries,i.timeSeriesMode,c.onTimeSeriesModeChange,i.timeSeriesBreakdownMode,c.onTimeSeriesBreakdownChange,i.timeSeriesCursorStart,i.timeSeriesCursorEnd,c.onTimeSeriesCursorRangeChange,n.startDate,n.endDate,n.selectedDays,n.timeZone,i.sessionLogs,i.sessionLogsLoading,i.sessionLogsStatus,c.onRetrySessionLogs,i.sessionLogsExpanded,c.onToggleSessionLogsExpanded,i.logFilters,c.onLogFilterRolesChange,c.onLogFilterToolsChange,c.onLogFilterHasToolsChange,c.onLogFilterQueryChange,c.onLogFilterClear,i.context,c.onRetryContextWeight,r.contextExpanded,c.onToggleContextExpanded,o.onClearSessions)}
`:O}
`}
`,{wide:!0})}function fr(){return(fr=e((()=>{j(),ke(),me(),z(),V(),B(),q(),pn(),yt(),Gn(),or(),En()})))()}var $;function pr(){return(pr=e((()=>{oe(),W(),N(),R(),p(),S(),Ae(),ye(),y(),D(),st(),St(),q(),wt(),De(),Fe(),Et(),fr(),$=class extends h{constructor(...e){super(...e),this.usageResult=null,this.usageCostSummary=null,this.providerUsageSummary=null,this.providerUsageUnavailable=!1,this.providerUsageIncomplete=!1,this.usageError=null,this.usageStartDate=Le(),this.usageEndDate=Le(),this.usageLoadStartDate=this.usageStartDate,this.usageLoadEndDate=this.usageEndDate,this.usageScope=`family`,this.usageAgentId=null,this.usageSelectedSessions=[],this.usageSelectedDays=[],this.usageSelectedHours=[],this.usageChartMode=`tokens`,this.usageDailyChartMode=`by-type`,this.usageTimeSeriesMode=`per-turn`,this.usageTimeSeriesBreakdownMode=`by-type`,this.usageTimeSeriesCursorStart=null,this.usageTimeSeriesCursorEnd=null,this.usageSessionLogsExpanded=!1,this.usageQuery=``,this.usageQueryDraft=``,this.usageSessionSort=`recent`,this.usageSessionSortDir=`desc`,this.usageRecentSessions=[],this.usageTimeZone=`local`,this.usageContextExpanded=!1,this.usageHeaderPinned=!1,this.usageSessionsTab=`all`,this.usageVisibleColumns=[...Tt],this.usageLogFilterRoles=[],this.usageLogFilterTools=[],this.usageLogFilterHasTools=!1,this.usageLogFilterQuery=``,this.dateDebounceTimer=null,this.queryDebounceTimer=null,this.usageTaskActiveClient=null,this.connectionEpoch={},this.routeDataInitialized=!1,this.routeDataEnabled=!0,this.refreshPolicy=new Oe({isLoading:()=>this.usageLoading,reload:()=>(this.clearDateDebounce(),this.loadUsage()),onIncompleteUsageExhausted:()=>this.requestUpdate()}),this.gateway=new be(this,{getGateway:()=>this.context?.gateway,onIdentityChange:()=>this.resetForClientChange(),invalidateRequests:e=>{e.snapshot.phase!==`connected`&&(this.refreshPolicy.interrupt(),this.usageTaskActiveClient=null,this.usageTask.run(this.usageTaskArgs(null)),this.details.cancel(),this.usageExportTask.run([null]))},onSnapshot:e=>this.handleGatewaySnapshot(e),onPageActivation:()=>this.refreshPolicy.request(`focus`)}),this.observeAgentScope=ce(e=>{this.routeDataInitialized&&this.usageAgentId!==e&&(this.usageAgentId=e,this.clearSelectionsAndDetails(),this.resetProviderUsage(),this.refreshPolicy.request(`manual`)),this.requestUpdate()}),this.usageTask=new re(this,{autoRun:!1,args:()=>this.usageTaskArgs(),task:async([e,t,n,r,i,a],{signal:o})=>!e||this.routeDataEnabled?ae:(this.refreshPolicy.beginLoad(),{epoch:this.connectionEpoch,snapshot:await Pe(e,{startDate:t,endDate:n,agentId:a||void 0,scope:r,timeZone:i},o)}),onComplete:e=>{this.usageTaskActiveClient=null;let t=e.snapshot;if(t.ok){this.usageResult=t.value.result,this.usageCostSummary=t.value.costSummary,this.usageError=null;let e=this.usageSelectedSessions.length===1?this.usageSelectedSessions[0]:void 0;e&&this.details.contextWeight.load(e)}else this.applyUsageError(t.error.cause);this.applyUsageLoadState(Ne(t),e.epoch,t.ok?void 0:null),this.refreshPolicy.flushPending()},onError:e=>{this.usageTaskActiveClient=null,this.applyUsageError(e),this.applyUsageLoadState({state:`pending`},this.connectionEpoch,null),this.refreshPolicy.flushPending()}}),this.usageExportTask=xt(this,this.gateway,()=>({startDate:this.usageLoadStartDate,endDate:this.usageLoadEndDate,scope:this.usageScope,timeZone:this.usageTimeZone,agentId:this.usageAgentId??void 0})),this.details=new ot(this,this.gateway,()=>({startDate:this.usageStartDate,endDate:this.usageEndDate,scope:this.usageScope,timeZone:this.usageTimeZone,agentId:this.usageAgentId??void 0}),()=>this.usageResult?.sessions??[]),this.subscriptions=new w(this).effect(()=>this.context?.agentSelection,e=>this.observeAgentScope(e)).watch(()=>this.context?.agents,(e,t)=>e.subscribe(t))}usageTaskArgs(e=this.gateway.connected?this.gateway.client:null){return[e,this.usageLoadStartDate,this.usageLoadEndDate,this.usageScope,this.usageTimeZone,t(this.usageAgentId??``)||null]}willUpdate(e){e.has(`routeData`)&&(this.applyRouteData(),this.ensureInitialData())}disconnectedCallback(){this.subscriptions.clear(),this.clearDateDebounce(),this.clearQueryDebounce(),this.refreshPolicy.dispose(),this.usageTaskActiveClient=null,this.usageTask.run(this.usageTaskArgs(null)),this.details.cancel(),this.usageExportTask.run([null]),super.disconnectedCallback()}applyRouteData(){let e=this.routeData;if(!e||(this.routeDataInitialized=!0,!this.routeDataEnabled))return;if(!this.gateway.isRouteDataCurrent(e)){this.routeDataEnabled=!1;return}let t=this.context.agentSelection.state.scopeId;if(e.query.agentId!==t){this.usageAgentId=t,this.clearSelectionsAndDetails(),this.resetProviderUsage(),this.refreshPolicy.request(`manual`);return}this.usageStartDate=e.query.startDate,this.usageEndDate=e.query.endDate,this.usageLoadStartDate=e.query.startDate,this.usageLoadEndDate=e.query.endDate,this.usageScope=e.query.scope,this.usageTimeZone=e.query.timeZone,this.usageAgentId=e.query.agentId,this.usageResult=e.result,this.usageCostSummary=e.costSummary,this.applyUsageLoadState(e.providerUsage,this.connectionEpoch,e.loadedAtMs),this.usageError=e.error}ensureInitialData(){this.routeDataEnabled||!this.routeDataInitialized||!this.gateway.client||!this.gateway.connected||this.usageLoading||this.loadUsage()}resetForClientChange(){this.clearDateDebounce(),this.usageTaskActiveClient=null,this.usageTask.run(this.usageTaskArgs(null)),this.routeDataInitialized&&(this.routeDataEnabled=!1),this.usageResult=null,this.usageCostSummary=null,this.resetProviderUsage(),this.usageError=null,this.usageAgentId=this.context.agentSelection.state.scopeId,this.clearSelectionsAndDetails()}resetProviderUsage(){this.providerUsageSummary=null,this.providerUsageUnavailable=!1,this.providerUsageIncomplete=!1,this.refreshPolicy.resetPayload()}applyUsageLoadState(e,t,n=Date.now()){if(e.state===`settled`){let t=e.result;this.providerUsageUnavailable=!t.ok,this.providerUsageIncomplete=!t.ok||Me(t.value),t.ok&&!this.providerUsageIncomplete&&(this.providerUsageSummary=t.value)}let r=this.providerUsageIncomplete||this.usageCacheIncomplete;this.refreshPolicy.setLastLoadedAtMs(e.state===`pending`?null:n,{incomplete:r,connection:t})}get usageCacheIncomplete(){return Ie(this.usageResult?.cacheStatus,this.usageCostSummary?.cacheStatus)}get providerUsageStalled(){return this.providerUsageIncomplete&&this.refreshPolicy.incompleteUsageExhausted}applyUsageError(e){let t=x(e);this.usageError=t?m(`usage`):Re(e),t&&(this.usageResult=this.usageCostSummary=null)}get usageLoading(){return!this.routeDataInitialized||this.usageTaskActiveClient!==null}loadUsage(){let e=this.gateway.client;return!e||!this.gateway.connected?(this.refreshPolicy.markLoadDeferred(),Promise.resolve()):(this.routeDataEnabled=!1,this.usageLoadStartDate=this.usageStartDate,this.usageLoadEndDate=this.usageEndDate,this.usageError=null,this.usageTaskActiveClient=e,this.usageTask.run())}clearSelections(){this.usageSelectedDays=[],this.usageSelectedHours=[],this.usageSelectedSessions=[]}clearDetails(){this.details.clear(),this.usageTimeSeriesCursorStart=null,this.usageTimeSeriesCursorEnd=null}clearSelectionsAndDetails(){this.usageExportTask.run([null]),this.clearSelections(),this.clearDetails()}clearDateDebounce(){this.dateDebounceTimer!==null&&(window.clearTimeout(this.dateDebounceTimer),this.dateDebounceTimer=null)}scheduleUsageLoad(){this.clearDateDebounce(),this.refreshPolicy.resetPayload(),this.routeDataEnabled=!1,this.dateDebounceTimer=window.setTimeout(()=>{this.dateDebounceTimer=null,this.refreshPolicy.request(`manual`)},400)}handleGatewaySnapshot(e){if(!(!this.gateway.connected||!this.gateway.client)&&(this.context.agents.ensureList(),(e.identityChanged||e.becameConnected)&&(this.connectionEpoch={},this.routeDataInitialized))){this.refreshPolicy.request(`reconnect`);let e=this.usageSelectedSessions.length===1?this.usageSelectedSessions[0]:void 0;e&&!this.details.contextWeight.status.hasLoaded&&this.details.contextWeight.load(e)}}clearQueryDebounce(){this.queryDebounceTimer!==null&&(window.clearTimeout(this.queryDebounceTimer),this.queryDebounceTimer=null)}selectSession(e,t,n){if(this.clearDetails(),this.usageRecentSessions=[e,...this.usageRecentSessions.filter(t=>t!==e)].slice(0,8),this.usageSelectedSessions=Be(this.usageSelectedSessions,e,n,t),this.usageSelectedSessions.length===1){let e=this.usageSelectedSessions[0];e&&this.details.load(e)}}render(){let e={data:{loading:this.usageLoading,exporting:this.usageExportTask.status===se.PENDING,error:this.usageError,sessions:this.usageResult?.sessions??[],agents:this.context.agents.state.agentsList?.agents.map(e=>e.id).filter(Boolean)??[],sessionsLimitReached:(this.usageResult?.sessions.length??0)>=1e3,totals:this.usageResult?.totals??null,aggregates:this.usageResult?.aggregates??null,costDaily:this.usageCostSummary?.daily??[],cacheRefresh:this.usageCacheIncomplete?this.refreshPolicy.incompleteUsageExhausted?`exhausted`:`retrying`:`complete`,providerUsage:this.providerUsageSummary?.providers??[],providerUsageStalled:this.providerUsageStalled,providerUsageUnavailable:this.providerUsageUnavailable},filters:{startDate:this.usageStartDate,endDate:this.usageEndDate,scope:this.usageScope,selectedSessions:this.usageSelectedSessions,selectedDays:this.usageSelectedDays,selectedHours:this.usageSelectedHours,agentId:this.usageAgentId,query:this.usageQuery,queryDraft:this.usageQueryDraft,timeZone:this.usageTimeZone},display:{chartMode:this.usageChartMode,dailyChartMode:this.usageDailyChartMode,sessionSort:this.usageSessionSort,sessionSortDir:this.usageSessionSortDir,recentSessions:this.usageRecentSessions,sessionsTab:this.usageSessionsTab,visibleColumns:this.usageVisibleColumns,contextExpanded:this.usageContextExpanded,headerPinned:this.usageHeaderPinned},detail:{context:{weight:this.details.contextWeight.data,loading:this.details.contextWeight.loading,status:this.details.contextWeight.status},timeSeriesMode:this.usageTimeSeriesMode,timeSeriesBreakdownMode:this.usageTimeSeriesBreakdownMode,timeSeries:this.details.timeSeries.data,timeSeriesLoading:this.details.timeSeries.loading,timeSeriesStatus:this.details.timeSeries.status,timeSeriesCursorStart:this.usageTimeSeriesCursorStart,timeSeriesCursorEnd:this.usageTimeSeriesCursorEnd,sessionLogs:this.details.sessionLogs.data,sessionLogsLoading:this.details.sessionLogs.loading,sessionLogsStatus:this.details.sessionLogs.status,sessionLogsExpanded:this.usageSessionLogsExpanded,logFilters:{roles:this.usageLogFilterRoles,tools:this.usageLogFilterTools,hasTools:this.usageLogFilterHasTools,query:this.usageLogFilterQuery}},callbacks:{filters:{onStartDateChange:e=>{this.usageStartDate=e,this.clearSelectionsAndDetails(),this.scheduleUsageLoad()},onEndDateChange:e=>{this.usageEndDate=e,this.clearSelectionsAndDetails(),this.scheduleUsageLoad()},onScopeChange:e=>{this.usageScope=e,this.clearSelectionsAndDetails(),this.refreshPolicy.request(`manual`)},onAgentChange:e=>{this.context.agentSelection.setScope(e)},onRefresh:()=>this.refreshPolicy.request(`manual`),onTimeZoneChange:e=>{this.usageTimeZone=e,this.clearSelectionsAndDetails(),this.refreshPolicy.request(`manual`)},onToggleHeaderPinned:()=>this.usageHeaderPinned=!this.usageHeaderPinned,onSelectHour:(e,t)=>{this.usageSelectedHours=ze(this.usageSelectedHours,e,Array.from({length:24},(e,t)=>t),t,!0)},onQueryDraftChange:e=>{this.usageQueryDraft=e,this.clearQueryDebounce(),this.queryDebounceTimer=window.setTimeout(()=>{this.usageQuery=this.usageQueryDraft,this.queryDebounceTimer=null},250)},onApplyQuery:()=>{this.clearQueryDebounce(),this.usageQuery=this.usageQueryDraft},onClearQuery:()=>{this.clearQueryDebounce(),this.usageQueryDraft=``,this.usageQuery=``},onSelectDay:(e,t)=>{this.usageSelectedDays=ze(this.usageSelectedDays,e,(this.usageCostSummary?.daily??[]).map(e=>e.date),t,!1)},onClearDays:()=>this.usageSelectedDays=[],onClearHours:()=>this.usageSelectedHours=[],onClearSessions:()=>{this.usageSelectedSessions=[],this.clearDetails()},onClearFilters:()=>this.clearSelectionsAndDetails()},display:{onExportJson:e=>{this.usageExportTask.run([e])},onChartModeChange:e=>this.usageChartMode=e,onDailyChartModeChange:e=>this.usageDailyChartMode=e,onSessionSortChange:e=>this.usageSessionSort=e,onSessionSortDirChange:e=>this.usageSessionSortDir=e,onSessionsTabChange:e=>this.usageSessionsTab=e,onToggleColumn:e=>{this.usageVisibleColumns=this.usageVisibleColumns.includes(e)?this.usageVisibleColumns.filter(t=>t!==e):[...this.usageVisibleColumns,e]}},details:{onToggleContextExpanded:()=>this.usageContextExpanded=!this.usageContextExpanded,onToggleSessionLogsExpanded:()=>this.usageSessionLogsExpanded=!this.usageSessionLogsExpanded,onLogFilterRolesChange:e=>{this.usageLogFilterRoles=e},onLogFilterToolsChange:e=>{this.usageLogFilterTools=e},onLogFilterHasToolsChange:e=>{this.usageLogFilterHasTools=e},onLogFilterQueryChange:e=>{this.usageLogFilterQuery=e},onLogFilterClear:()=>{this.usageLogFilterRoles=[],this.usageLogFilterTools=[],this.usageLogFilterHasTools=!1,this.usageLogFilterQuery=``},onSelectSession:(e,t,n)=>this.selectSession(e,t,n),onTimeSeriesModeChange:e=>{this.usageTimeSeriesMode=e},onTimeSeriesBreakdownChange:e=>{this.usageTimeSeriesBreakdownMode=e},onTimeSeriesCursorRangeChange:(e,t)=>{this.usageTimeSeriesCursorStart=e,this.usageTimeSeriesCursorEnd=t},onRetryTimeSeries:()=>{let e=this.usageSelectedSessions[0];e&&this.details.timeSeries.load(e)},onRetrySessionLogs:()=>{let e=this.usageSelectedSessions[0];e&&this.details.sessionLogs.load(e)},onRetryContextWeight:()=>{let e=this.usageSelectedSessions[0];e&&this.details.contextWeight.load(e)}}}};return Ct(this.context,this.usageResult,dr(e))}},a([ie({context:te,subscribe:!0})],$.prototype,`context`,void 0),a([P({attribute:!1})],$.prototype,`routeData`,void 0),a([F()],$.prototype,`usageResult`,void 0),a([F()],$.prototype,`usageCostSummary`,void 0),a([F()],$.prototype,`providerUsageSummary`,void 0),a([F()],$.prototype,`providerUsageUnavailable`,void 0),a([F()],$.prototype,`providerUsageIncomplete`,void 0),a([F()],$.prototype,`usageError`,void 0),a([F()],$.prototype,`usageStartDate`,void 0),a([F()],$.prototype,`usageEndDate`,void 0),a([F()],$.prototype,`usageLoadStartDate`,void 0),a([F()],$.prototype,`usageLoadEndDate`,void 0),a([F()],$.prototype,`usageScope`,void 0),a([F()],$.prototype,`usageAgentId`,void 0),a([F()],$.prototype,`usageSelectedSessions`,void 0),a([F()],$.prototype,`usageSelectedDays`,void 0),a([F()],$.prototype,`usageSelectedHours`,void 0),a([F()],$.prototype,`usageChartMode`,void 0),a([F()],$.prototype,`usageDailyChartMode`,void 0),a([F()],$.prototype,`usageTimeSeriesMode`,void 0),a([F()],$.prototype,`usageTimeSeriesBreakdownMode`,void 0),a([F()],$.prototype,`usageTimeSeriesCursorStart`,void 0),a([F()],$.prototype,`usageTimeSeriesCursorEnd`,void 0),a([F()],$.prototype,`usageSessionLogsExpanded`,void 0),a([F()],$.prototype,`usageQuery`,void 0),a([F()],$.prototype,`usageQueryDraft`,void 0),a([F()],$.prototype,`usageSessionSort`,void 0),a([F()],$.prototype,`usageSessionSortDir`,void 0),a([F()],$.prototype,`usageRecentSessions`,void 0),a([F()],$.prototype,`usageTimeZone`,void 0),a([F()],$.prototype,`usageContextExpanded`,void 0),a([F()],$.prototype,`usageHeaderPinned`,void 0),a([F()],$.prototype,`usageSessionsTab`,void 0),a([F()],$.prototype,`usageVisibleColumns`,void 0),a([F()],$.prototype,`usageLogFilterRoles`,void 0),a([F()],$.prototype,`usageLogFilterTools`,void 0),a([F()],$.prototype,`usageLogFilterHasTools`,void 0),a([F()],$.prototype,`usageLogFilterQuery`,void 0),customElements.get(`openclaw-usage-page`)||customElements.define(`openclaw-usage-page`,$)})))()}pr(); //# sourceMappingURL=usage-page-CnLb0Mdd.js.map