PageSourceSearch

https://app.quotaflow.ai/assets/UsageView-B8t_3HIa.js

js quotaflow.ai collected 2026-10-05 14:22:53 UTC 30,785 bytes, 3 lines download raw bytes

1import{d as Pe,r as w,c as _,w as z,o as rt,a as Ot,y as b,A as t,k as F,z as ke,D as W,G as d,E as Bt,a1 as Vt,I as De,F as j,W as K,N as ye,Y as Je,a2 as jt,B as m,H as qe,Q as Wt,_ as Gt,q as Ze,L as Yt,a0 as Kt,u as Ne,$ as Ht}from"./vendor-vue-Ct2QBaJZ.js";import{C as Qt,e as Jt,b as Zt,L as Xt,p as ea}from"./vendor-chart-DXOqGtOc.js";import{a as ta}from"./AppLayout.vue_vue_type_script_setup_true_lang-DZ0AmTEw.js";import{_ as ut}from"./Icon.vue_vue_type_script_setup_true_lang-CLaA0Ch4.js";import{f as aa,w as Ue,a as na,e as oa,a9 as be,aq as Xe,ar as et}from"./index-BqUxLioV.js";import{S as tt}from"./Select-CLIknWOA.js";import{C as la,a as sa}from"./ConsoleMetricCards-D2mYWT3s.js";import{P as ra,g as ua}from"./Pagination-x_CXt-xr.js";import{_ as ia}from"./ConsoleTablePanel.vue_vue_type_script_setup_true_lang-D9I2Y-mL.js";import{C as Le}from"./ConsoleReadRetry-COyPXZeH.js";import{u as I}from"./usage-bxN_vliN.js";import"./vendor-misc-BWzTkjaz.js";import"./StartPlanDialog.vue_vue_type_style_index_0_scoped_eb69b3a2_lang-QPAhLoPH.js";import"./publicStatus-iVjh3r6i.js";import"./vendor-i18n-DbrYzI8e.js";import"./logo-Ft4BtHHg.js";import"./LocaleSwitcher-C5iI8PTO.js";/* empty css                                                                       *//* empty css                                               */async function da(o=1,r=10,n,l){const{data:p}=await aa.get("/keys",{params:{page:o,page_size:r,...n},signal:l==null?void 0:l.signal});return p}const ca={list:da};function O(o){const r=new Date(o);if(Number.isNaN(r.getTime()))return"";const n=l=>String(l).padStart(2,"0");return`${r.getFullYear()}-${n(r.getMonth()+1)}-${n(r.getDate())}T${n(r.getHours())}:${n(r.getMinutes())}:${n(r.getSeconds())}`}function at(o){const r=new Date(o);if(Number.isNaN(r.getTime()))return"—";const n=l=>String(l).padStart(2,"0");return`${r.getFullYear()}-${n(r.getMonth()+1)}-${n(r.getDate())} ${n(r.getHours())}:${n(r.getMinutes())}:${n(r.getSeconds())}`}function it(o,r){const n=at(o),l=at(r);return n==="—"||l==="—"?"Select a window":n.slice(0,10)===l.slice(0,10)?`${n} → ${l.slice(11)}`:`${n} → ${l}`}function Fe(o){if(!Number.isFinite(o)||o<=0)return"0s";const r=Math.floor(o),n=Math.floor(r/86400),l=Math.floor(r%86400/3600),p=Math.floor(r%3600/60),y=r%60,i=[];return n>0&&i.push(`${n}d`),l>0&&i.push(`${l}h`),p>0&&i.push(`${p}m`),y>0&&n===0&&i.push(`${y}s`),i.slice(0,2).join(" ")||"0s"}function va(o,r){const n=new Date(o).getTime(),l=new Date(r).getTime();return!Number.isFinite(n)||!Number.isFinite(l)||l<=n?null:(l-n)/1e3}function nt(o,r){return r===null||r<=0||!Number.isFinite(o)?null:o*60/r}function ot(o){return o<=1?"second":o<3600?"minute":o<86400?"hour":"day"}function pa(o,r){const n=new Date(o);if(Number.isNaN(n.getTime()))return"—";const l=p=>String(p).padStart(2,"0");return r<=1?`${l(n.getHours())}:${l(n.getMinutes())}:${l(n.getSeconds())}`:r<3600?`${l(n.getHours())}:${l(n.getMinutes())}`:r<86400?`${l(n.getMonth()+1)}-${l(n.getDate())} ${l(n.getHours())}:00`:`${l(n.getMonth()+1)}-${l(n.getDate())}`}const ga=["aria-expanded"],ma={class:"dt-range-icon","aria-hidden":"true"},fa={class:"dt-range-value"},_a={key:0,class:"dt-range-live",title:"End of the window tracks the current time"},ba={class:"dt-range-duration"},wa={key:0,class:"dt-range-panel"},ya={class:"dt-range-presets"},ka=["onClick"],ha={class:"dt-range-custom"},$a={class:"dt-range-field"},Sa={class:"dt-range-field"},Ma=["disabled"],Ca={class:"dt-range-follow"},Ra={key:0,class:"dt-range-error",role:"alert"},Ta={class:"dt-range-actions"},Aa={class:"dt-range-hint"},Na=Pe({__name:"DateTimeRangePicker",props:{startAt:{},endAt:{},followNow:{type:Boolean}},emits:["update:startAt","update:endAt","update:followNow","change"],setup(o,{emit:r}){function n(g){if(!g)return null;const c=new Date(g);return Number.isNaN(c.getTime())?null:c}const l=o,p=r,y=[{key:"5m",label:"Last 5 min",seconds:5*60},{key:"15m",label:"Last 15 min",seconds:15*60},{key:"1h",label:"Last 1 hour",seconds:60*60},{key:"6h",label:"Last 6 hours",seconds:6*60*60},{key:"24h",label:"Last 24 hours",seconds:24*60*60},{key:"today",label:"Today",seconds:null},{key:"7d",label:"Last 7 days",seconds:7*24*60*60},{key:"30d",label:"Last 30 days",seconds:30*24*60*60}],i=w(!1),C=w(null),A=w(null),R=w(O(l.startAt)),k=w(O(l.endAt)),M=w(l.followNow===!0),v=w(l.followNow===!0),u=w(null),h=_(()=>it(l.startAt,l.endAt)),D=_(()=>{const g=new Date(l.startAt).getTime(),c=new Date(l.endAt).getTime();return!Number.isFinite(g)||!Number.isFinite(c)?"":Fe((c-g)/1e3)}),ne=_(()=>
1{const g=n(R.value),c=M.value?new Date:n(k.value);return!g||!c||c.getTime()<=g.getTime()?"":`Window: ${Fe((c.getTime()-g.getTime())/1e3)}`});function oe(){i.value=!i.value,i.value&&(R.value=O(l.startAt),k.value=O(l.endAt),M.value=v.value,u.value=null)}function le(g){const c=new Date,$=g.seconds===null?new Date(c.getFullYear(),c.getMonth(),c.getDate(),0,0,0,0):new Date(c.getTime()-g.seconds*1e3);R.value=O($.toISOString()),k.value=O(c.toISOString()),M.value=!0,A.value=g.key,u.value=null,U()}function se(){A.value=null,u.value=null}function he(){M.value&&(k.value=O(new Date().toISOString())),u.value=null}function U(){const g=n(R.value),c=M.value?new Date:n(k.value);if(!g||!c){u.value="Enter both ends of the window.";return}if(c.getTime()<=g.getTime()){u.value="The end of the window must be after its start.";return}v.value=M.value;const $=g.toISOString(),L=c.toISOString();p("update:startAt",$),p("update:endAt",L),p("update:followNow",v.value),p("change",{startAt:$,endAt:L,preset:A.value,followNow:v.value}),i.value=!1}function x(g){C.value&&!C.value.contains(g.target)&&(i.value=!1)}function H(g){g.key==="Escape"&&(i.value=!1)}return z(()=>l.startAt,g=>{R.value=O(g)}),z(()=>l.endAt,g=>{k.value=O(g)}),z(()=>l.followNow,g=>{v.value=g===!0,M.value=g===!0}),rt(()=>{document.addEventListener("click",x),document.addEventListener("keydown",H)}),Ot(()=>{document.removeEventListener("click",x),document.removeEventListener("keydown",H)}),(g,c)=>(m(),b("div",{class:"dt-range",ref_key:"containerRef",ref:C},[t("button",{type:"button",class:ke(["dt-range-trigger",{"dt-range-trigger-open":i.value}]),"aria-expanded":i.value,"data-testid":"usage-window-trigger",onClick:oe},[t("span",ma,[F(ut,{name:"calendar",size:"sm"})]),t("span",fa,d(h.value),1),v.value?(m(),b("span",_a,[...c[3]||(c[3]=[t("span",{class:"dt-range-live-dot","aria-hidden":"true"},null,-1),Bt("LIVE ",-1)])])):W("",!0),t("span",ba,d(D.value),1)],10,ga),F(Vt,{name:"dt-range-pop"},{default:De(()=>[i.value?(m(),b("div",wa,[t("div",ya,[(m(),b(j,null,K(y,$=>t("button",{key:$.key,type:"button",class:ke(["dt-range-preset",{"dt-range-preset-active":A.value===$.key}]),onClick:L=>le($)},d($.label),11,ka)),64))]),c[7]||(c[7]=t("div",{class:"dt-range-divider"},null,-1)),t("div",ha,[t("label",$a,[c[4]||(c[4]=t("span",{class:"dt-range-label"},"From",-1)),ye(t("input",{"onUpdate:modelValue":c[0]||(c[0]=$=>R.value=$),type:"datetime-local",step:"1",class:"dt-range-input","data-testid":"usage-window-start",onChange:se},null,544),[[Je,R.value]])]),t("label",Sa,[c[5]||(c[5]=t("span",{class:"dt-range-label"},"To",-1)),ye(t("input",{"onUpdate:modelValue":c[1]||(c[1]=$=>k.value=$),type:"datetime-local",step:"1",class:"dt-range-input","data-testid":"usage-window-end",disabled:M.value,onChange:se},null,40,Ma),[[Je,k.value]])])]),t("label",Ca,[ye(t("input",{"onUpdate:modelValue":c[2]||(c[2]=$=>M.value=$),type:"checkbox",onChange:he},null,544),[[jt,M.value]]),c[6]||(c[6]=t("span",null,"Keep the end pinned to now",-1))]),u.value?(m(),b("p",Ra,d(u.value),1)):W("",!0),t("div",Ta,[t("span",Aa,d(ne.value),1),t("button",{type:"button",class:"dt-range-apply","data-testid":"usage-window-apply",onClick:U}," Apply ")])])):W("",!0)]),_:1})],512))}}),La=Ue(Na,[["__scopeId","data-v-2e161cc1"]]),qa={class:"console-status-tabs",role:"tablist","aria-label":"Request status filters"},Fa=["aria-selected","onClick"],Pa={class:"console-request-table-wrap"},Da={class:"console-request-table console-table"},Ua={key:0},za={key:1},xa={class:"console-model-cell"},Ea={key:0},Ia={key:1,class:"console-muted"},Oa={class:"console-actions-cell"},Ba=["onClick"],Va={key:2},ja={class:"console-request-dialog",role:"dialog","aria-modal":"true","aria-label":"Request details"},Wa={key:1},Ga={key:2},Ya=Pe({__name:"ConsoleRequestLogTable",props:{logs:{},loading:{type:Boolean},pagination:{},activeStatusFilter:{},statusTabs:{}},emits:["updatePage","updatePageSize","updateStatusFilter"],setup(o,{emit:r}){const n=w(null),l=r;function p(v){l("updateStatusFilter",v)}function y(v){l("updatePage",v)}function i(v){l("updatePageSize",v)}function C(v){return v===null?"-":v<1e3?`${Math.max(0,v).toFixed(0)}ms`:`${(v/1e3).toFixed(2)}s`}function A(v){const u=new Date(v);
1return Number.isNaN(u.getTime())?v||"-":u.toLocaleString(void 0,{month:"2-digit",day:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function R(v){return v.request_id||v.id}function k(v){return v.error_type==="stream_interrupted"?"Interrupted":v.status==="client_error"?`Client Error (${v.status_code})`:v.status==="server_error"?`Server Error (${v.status_code})`:v.status==="error_in_stream"?`Failed in response (${v.status_code})`:v.status==="no_response"?"No response sent":"Success"}function M(v){return v.billing_status==="pending"?"Pending reconciliation":v.billing_status==="unverified"?"Unverified legacy charge":"Not billed"}return(v,u)=>(m(),qe(ia,{class:"console-request-log-card","aria-labelledby":"request-log-title"},{default:De(()=>[u[17]||(u[17]=t("div",{class:"console-panel-heading console-request-log-heading"},[t("h2",{id:"request-log-title"},"Request Log")],-1)),t("div",qa,[(m(!0),b(j,null,K(o.statusTabs,h=>(m(),b("button",{key:h.key,type:"button",class:ke(["console-status-tab",{"console-status-tab-active":o.activeStatusFilter===h.key}]),"aria-selected":o.activeStatusFilter===h.key,role:"tab",onClick:D=>p(h.key)},d(h.label),11,Fa))),128))]),t("div",Pa,[t("table",Da,[u[4]||(u[4]=t("thead",null,[t("tr",null,[t("th",null,"Date"),t("th",null,"Model"),t("th",null,"Task ID"),t("th",null,"Status"),t("th",null,"Time"),t("th",null,"Cost"),t("th",{class:"text-right"},"Actions")])],-1)),o.loading?(m(),b("tbody",Ua,[(m(),b(j,null,K(5,h=>t("tr",{key:`loading-${h}`},[(m(),b(j,null,K(7,D=>t("td",{key:D},[...u[2]||(u[2]=[t("span",{class:"console-skeleton-line"},null,-1)])])),64))])),64))])):o.logs.length>0?(m(),b("tbody",za,[(m(!0),b(j,null,K(o.logs,h=>(m(),b("tr",{key:h.id},[t("td",null,d(A(h.created_at)),1),t("td",xa,d(h.model||"-"),1),t("td",null,[t("code",null,d(R(h)),1)]),t("td",null,[t("span",{class:ke(["console-status-pill",`console-status-${h.status}`])},d(k(h)),3)]),t("td",null,d(C(h.duration_ms)),1),t("td",null,[h.billed?(m(),b("span",Ea,"$"+d(h.actual_cost.toFixed(6)),1)):(m(),b("span",Ia,d(M(h)),1))]),t("td",Oa,[t("button",{type:"button",class:"console-icon-button","aria-label":"Request details",onClick:D=>n.value=h},[F(ut,{name:"more",size:"sm"})],8,Ba)])]))),128))])):(m(),b("tbody",Va,[...u[3]||(u[3]=[t("tr",null,[t("td",{colspan:"7"},[t("div",{class:"console-empty-state"},"No results.")])],-1)])]))]),o.pagination.total>0?(m(),qe(ra,{key:0,total:o.pagination.total,"total-is-lower-bound":o.pagination.total_is_lower_bound===!0,page:o.pagination.page,"page-size":o.pagination.page_size,"show-jump":!1,"onUpdate:page":y,"onUpdate:pageSize":i},null,8,["total","total-is-lower-bound","page","page-size"])):W("",!0)]),n.value?(m(),b("div",{key:0,class:"console-request-dialog-backdrop",role:"presentation",onClick:u[1]||(u[1]=Wt(h=>n.value=null,["self"]))},[t("section",ja,[t("header",null,[u[5]||(u[5]=t("h3",null,"Request details",-1)),t("button",{type:"button",class:"console-icon-button","aria-label":"Close details",onClick:u[0]||(u[0]=h=>n.value=null)},"×")]),t("dl",null,[u[7]||(u[7]=t("dt",null,"Date",-1)),t("dd",null,d(A(n.value.created_at)),1),u[8]||(u[8]=t("dt",null,"Request ID",-1)),t("dd",null,[t("code",null,d(R(n.value)),1)]),u[9]||(u[9]=t("dt",null,"Model",-1)),t("dd",null,d(n.value.model||"-"),1),u[10]||(u[10]=t("dt",null,"Endpoint",-1)),t("dd",null,[t("code",null,d(n.value.inbound_endpoint||"-"),1)]),u[11]||(u[11]=t("dt",null,"Status",-1)),t("dd",null,d(n.value.status_code)+" · "+d(k(n.value)),1),n.value.error_message?(m(),b(j,{key:0},[u[6]||(u[6]=t("dt",null,"Error",-1)),t("dd",null,d(n.value.error_message),1)],64)):W("",!0),u[12]||(u[12]=t("dt",null,"Duration",-1)),t("dd",null,d(C(n.value.duration_ms)),1),u[13]||(u[13]=t("dt",null,"Usage",-1)),n.value.usage_known?(m(),b("dd",Wa," input "+d(n.value.input_tokens.toLocaleString())+", output "+d(n.value.output_tokens.toLocaleString())+", cache read "+d(n.value.cache_read_tokens.toLocaleString())+", cache write "+d(n.value.cache_write_tokens.toLocaleString()),1)):(m(),b("dd",Ga,"Unknown — the request did not return terminal usage.")),u[14]||(u[14]=t("dt",null,"Original price",-1)),t("dd",null,d(n.value.usage_known?`$${n.value.original_cost.toFixed(6)}`:"Unknown"),1),u[15]||(u[15]=t("dt",null,"Charged",-1)),t("dd",null,d(n.value.billed?`$${n.value.actual_cost.toFixed(6)}`:M(n.value)),1),u[16]||(u[16]=t("dt",null,"Multiplier",-1)),t("dd",null,d(n.value.billed?`${n.value.rate_multiplier.toFixed(4)}×`:"—"),1)])])])):W("",!0)]),_:1}))}}),Ka=Ue(Ya,[["__scopeId","data-v-05b78d7b"]]),Ha=["January","February","March","April","May","June","July","August","September","October","November","December"];function lt(o,r){return new Date(Date.UTC(o,r,1,0,0,0,0))}function Qa(o,r=12){const n=[],l=o.getUTCFullYear(),p=o.getUTCMonth();for(let y=0;y<r;y+=1){const i=lt(l,p-y),C=lt(i.getUTCFullYear(),i.getUTCMonth()+1),A=i.getUTCMonth(),R=y===0;n.push({key:`${i.getUTCFullYear()}
1-${String(A+1).padStart(2,"0")}`,label:`${Ha[A]} ${i.getUTCFullYear()}${R?" (month to date)":""}`,startAt:i.toISOString(),endAt:C.toISOString(),inProgress:R})}return n}function st(o){return`${o.startAt} — ${o.endAt} (UTC, end exclusive)`}function we(o){return o.toFixed(10)}function Ja(o){return/[",\r\n]/.test(o)?`"${o.replace(/"/g,'""')}"`:o}const Za=["period_start_utc","period_end_utc","model","requests","input_tokens","output_tokens","cache_creation_tokens","cache_read_tokens","total_tokens","cost_usd","actual_cost_usd"];function Xa(o){return{requests:o.total_requests,inputTokens:o.total_input_tokens,outputTokens:o.total_output_tokens,totalTokens:o.total_tokens,cost:o.total_cost,actualCost:o.total_actual_cost}}function en(o,r,n){const l=[...r].sort((y,i)=>i.actual_cost-y.actual_cost||y.model.localeCompare(i.model)),p=[Za.join(",")];for(const y of l)p.push([o.startAt,o.endAt,Ja(y.model),String(y.requests),String(y.input_tokens),String(y.output_tokens),String(y.cache_creation_tokens),String(y.cache_read_tokens),String(y.total_tokens),we(y.cost),we(y.actual_cost)].join(","));return p.push([o.startAt,o.endAt,"TOTAL",String(n.requests),String(n.inputTokens),String(n.outputTokens),"","",String(n.totalTokens),we(n.cost),we(n.actualCost)].join(",")),`${p.join(`\r
2`)}\r
3`}function tn(o,r,n){const l=r&&r>0?`org${r}-`:"",p=n&&n>0?`project${n}-`:"";return`statement-${l}${p}${o.key}-utc.csv`}const an={class:"console-usage-shell","data-testid":"usage-shell"},nn={class:"console-usage-header"},on={class:"console-usage-controls"},ln={class:"console-usage-window","data-testid":"usage-window-summary"},sn={class:"console-usage-window-range"},rn={class:"console-usage-statement","data-testid":"usage-statement"},un=["value"],dn=["disabled"],cn={class:"console-usage-statement-note","data-testid":"statement-note"},vn={key:0,class:"console-rpm-panel","aria-label":"Model group RPM"},pn={class:"console-rpm-heading"},gn={key:0},mn={key:0,class:"console-rpm-state"},fn={key:1,class:"console-rpm-state"},_n={key:2,class:"console-rpm-state"},bn={key:3,class:"console-rpm-table",role:"table","aria-label":"Model group RPM statistics"},P="—",wn=24*60*60,yn=Pe({__name:"UsageView",setup(o){Qt.register(Jt,Zt,Xt,ea);function r(e){return`${e.value.toLocaleString()}${e.isLowerBound?"+":""}`}const n=na(),l=oa(),p=Gt(),y=Ht(),i=w(null),C=w(null),A=w([]),R=w([]),k=w(je(p.query.tab)),M=w("all"),v=be(),u=v.state,h=be({onError:e=>{et(e)||n.showError("Failed to load usage")}}),D=h.state,ne=be({onError:e=>console.error("Failed to load usage timeseries:",e)}),oe=ne.state,le=be({onError:e=>console.error("Failed to load model filter options:",e)}),se=_(()=>D.value.status==="pending"||D.value.status==="retrying");z(u,e=>{e.status==="loaded"?(i.value=e.value.stats,C.value=e.value.errorTotal):e.status==="unavailable"&&(i.value=null,C.value=null)});const he=_(()=>{const e=u.value;return e.status==="loaded"&&(e.value.stats===null||e.value.errorTotal===null)?{status:"unavailable",interrupted:!1}:e});z(D,e=>{e.status==="loaded"&&(A.value=e.value.items,q.total=e.value.total,q.pages=e.value.pages,q.total_is_lower_bound=e.value.total_is_lower_bound===!0)}),z(oe,e=>{e.status==="loaded"?G.value=e.value:e.status==="unavailable"&&(G.value=null)}),z(le.state,e=>{e.status==="loaded"&&(Ee.value=e.value)});let U=null,x=null,H=null,g=0;const c=new Set,$=w([]),L=w("hidden"),re=w(null),ue=w(null),ze=new Date,dt=new Date(ze.getTime()-wn*1e3),B=w(dt.toISOString()),E=w(ze.toISOString()),ie=w(!0),G=w(null),f=w({...ve(p),api_key_id:Q(p.query.api_key_id),start_date:B.value,end_date:E.value}),q=Ze({page:1,page_size:ua(),total:0,pages:0,total_is_lower_bound:!1}),xe=Ze({sort_by:"created_at",sort_order:"desc"}),ct=_(()=>[{value:null,label:"All API Keys"},...R.value.map(e=>({value:e.id,label:e.name}))]),Ee=w([]),vt=_(()=>[{value:null,label:"All Models"},...Array.from(new Set([...Ee.value,...A.value.map(e=>{var a;return((a=e.model)==null?void 0:a.trim())||""})])).filter(Boolean).sort().map(e=>({value:e,label:e}))]),$e=_(()=>!i.value||C.value===null?null:{value:i.value.total_requests+C.value.value,isLowerBound:C.value.isLowerBound}),Ie=_(()=>[{key:"requests",label:"Requests",value:$e.value===null?P:r($e.value),icon:"chartBar"},{key:"spend",label:"Spend",value:i.value?`$${i.value.total_actual_cost.toFixed(2)}`:P,icon:"creditCard"},{key:"errors",label:"Errors",value:C.value!==null?r(C.value):P,icon:"exclamationCircle"},{key:"performance",label:"Performance",value:i.value?_e(i.value.average_duration_ms):P,icon:"clock"}]),pt=_(()=>{var e;return(((e=Ie.value.find(a=>a.key===k.value))==null?void 0:e.label)||"Requests").toLowerCase()}),Se=_(()=>{var e;return((e=G.value)==null?void 0:e.bucket_seconds)??0}),de=_(()=>k.value!=="errors"),gt=_(()=>de.value?G.value?`One bar per ${ot(Se.value)}, over the window above.`:"":"Failed requests are not part of the usage timeseries. The Errors tile counts them over this same window."),ee=_(()=>{var s;if(!de.value)return[];const e=((s=G.value)==null?void 0:s.points)??[],a=Se.value;return e.map(S=>({label:pa(S.bucket_start_at,a),value:k.value==="spend"?S.actual_cost:k.value==="performance"?S.average_duration_ms:S.requests}))}),mt=_(()=>ee.value.length>
30),ft=_(()=>k.value==="performance"?i.value?_e(i.value.average_duration_ms):P:!de.value||!G.value?P:pe(ee.value.reduce((e,a)=>e+a.value,0),k.value)),_t=_(()=>k.value==="performance"?"Window avg.":`Avg. per ${ot(Se.value)}`),bt=_(()=>{const e=G.value;if(k.value==="performance")return i.value?_e(i.value.average_duration_ms):P;if(!de.value||!e||e.bucket_seconds<=0)return P;const a=Math.max(1,Math.ceil(e.window_seconds/e.bucket_seconds)),s=ee.value.reduce((S,T)=>S+T.value,0);return pe(s/a,k.value)}),wt=_(()=>({labels:ee.value.map(e=>e.label),datasets:[{data:ee.value.map(e=>e.value),backgroundColor:"rgba(157, 255, 143, 0.42)",borderColor:"rgba(157, 255, 143, 0.72)",borderRadius:6,borderWidth:1,maxBarThickness:42}]})),yt=_(()=>({maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{callbacks:{label:e=>pe(Number(e.parsed.y||0),k.value)}}},responsive:!0,scales:{x:{grid:{display:!1},ticks:{autoSkip:!0,color:"#a3a3a3",maxRotation:0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:"rgba(255, 255, 255, 0.08)"},ticks:{color:"#a3a3a3",callback:e=>pe(Number(e),k.value)}}}})),kt=_(()=>it(B.value,E.value)),Me=_(()=>{var a;const e=(a=i.value)==null?void 0:a.window_seconds;return typeof e=="number"&&e>0?e:va(B.value,E.value)}),ht=_(()=>{const e=Me.value;return e===null?P:Fe(e)});function Oe(e,a){return e===null?`${P} ${a}`:e>=100?`${Math.round(e).toLocaleString()} ${a}`:`${e.toFixed(e>=10?1:2)} ${a}`}const $t=_(()=>{const e=$e.value;return e===null?`${P} req/min`:`${e.isLowerBound?"≥":""}${Oe(nt(e.value,Me.value),"req/min")}`}),St=_(()=>Oe(i.value?nt(i.value.total_tokens,Me.value):null,"tok/min")),Mt=_(()=>[{key:"all",label:"All"},{key:"success",label:"Success"},{key:"server_error",label:"Failed"},{key:"client_error",label:"Client Error"}]),Ct=_(()=>A.value),Rt=_(()=>L.value!=="hidden");function Be(e){return Array.isArray(e)?e.find(a=>typeof a=="string"&&a.length>0):typeof e=="string"&&e.length>0?e:void 0}function Q(e){const a=Be(e);if(!a)return;const s=Number(a);return Number.isFinite(s)?s:void 0}const te=Qa(new Date),ce=w((te.find(e=>!e.inProgress)??te[0]).key),ae=w(!1),J=w(null),Ve=_(()=>te.find(e=>e.key===ce.value)??te[0]),Tt=_(()=>J.value??`All API keys · ${st(Ve.value)}`);z(ce,()=>{J.value=null});function At(e,a){const s=URL.createObjectURL(new Blob([a],{type:"text/csv;charset=utf-8"})),S=document.createElement("a");S.href=s,S.download=e,S.click(),URL.revokeObjectURL(s)}async function Nt(){if(ae.value)return;const e=Ve.value,a=ve(p),s={...a,start_date:e.startAt,end_date:e.endAt};ae.value=!0,J.value=null;try{const[S,T]=await Promise.all([I.getDashboardModels(s),I.getStatsWithFilters(s)]),V=S.models??[],Z=Xa(T);if(V.length===0&&Z.requests===0){J.value=`No usage in this period. ${st(e)}`;return}const X=tn(e,a.organization_id,a.project_id);At(X,en(e,V,Z)),J.value=`Downloaded ${X}`}catch(S){console.error("Failed to build the monthly statement:",S),n.showError("Statement unavailable. Nothing was downloaded."),J.value="Statement unavailable. Nothing was downloaded."}finally{ae.value=!1}}function ve(e){const a=Q(e.query.view_as_organization_id)??Q(e.query.organization_id),s=Q(e.query.project_id);return!a||a<=0?{}:{organization_id:a,...s&&s>0?{project_id:s}:{}}}function je(e){const a=Be(e);return a==="spend"||a==="errors"||a==="performance"?a:"requests"}function Lt(e){k.value=e;const a={...p.query,tab:e};y.replace({query:a})}function qt(e){M.value=e,q.page=1,Y()}function pe(e,a){return a==="spend"?`$${e.toFixed(4)}`:a==="performance"?_e(e):e.toLocaleString()}function Ft(e,a){return{page:e,page_size:a,...f.value,sort_by:xe.sort_by,sort_order:xe.sort_order}}function Pt(e){B.value=e.startAt,E.value=e.endAt,ie.value=e.followNow,f.value.start_date=e.startAt,f.value.end_date=e.endAt,fe()}function Dt(){ie.value&&(E.value=new Date().toISOString(),f.value.start_date=B.value,f.value.end_date=E.value)}function Ce(){return{start_date:f.value.start_date||B.value,end_date:f.value.end_date||E.value}}function Ut(){fe()}function Y(){const e={...Ft(q.page,q.page_size),status:M.value};return h.run(a=>I.queryRequests(e,{signal:a}))}
3function Re(){const e={...Ce(),api_key_id:f.value.api_key_id?Number(f.value.api_key_id):void 0,organization_id:f.value.organization_id,project_id:f.value.project_id};return le.run(async a=>(await I.getRequestModelOptions(e,{signal:a})).models??[])}function ge(){const e={...Ce(),api_key_id:f.value.api_key_id?Number(f.value.api_key_id):void 0,organization_id:f.value.organization_id,project_id:f.value.project_id,model:f.value.model};return ne.run(a=>I.getUsageTimeseries(e,{signal:a}))}function me(){const e={...Ce(),api_key_id:f.value.api_key_id?Number(f.value.api_key_id):void 0,organization_id:f.value.organization_id,project_id:f.value.project_id,model:f.value.model};return v.run(async a=>{const s=await Promise.allSettled([I.getStatsWithFilters(e,{signal:a}),I.queryRequests({...e,page:1,page_size:1,status:"client_error"},{signal:a}),I.queryRequests({...e,page:1,page_size:1,status:"server_error"},{signal:a})]),[S,T,V]=s,Z=s.flatMap(N=>N.status==="rejected"?[N.reason]:[]),X=Z.find(N=>Xe(N)||et(N));if(X!==void 0)throw X;for(const N of Z)console.error("Failed to load usage stats:",N);return{stats:S.status==="fulfilled"?S.value:null,errorTotal:T.status==="fulfilled"&&V.status==="fulfilled"?{value:T.value.total+V.value.total,isLowerBound:T.value.total_is_lower_bound===!0||V.value.total_is_lower_bound===!0}:null}})}async function We(){var s,S;Ke();const e=++g;ue.value=null,L.value="hidden",$.value=[],re.value=null;const a=ve(p).organization_id;try{const T=await l.loadWorkspace({organizationID:a,isAdminViewAs:Q(p.query.view_as_organization_id)!==void 0});if(e!==g)return;const V=(T.current_member_role??((s=T.organization)==null?void 0:s.current_member_role)??"").trim().toLowerCase();if(!(T.is_personal_workspace===!0||T.workspace_type==="personal"||["owner","admin"].includes(V)))return;const N=a??((S=T.organization)==null?void 0:S.id);if(!N||N<=0||(ue.value=N,L.value="loading",H=N,document.hidden)||(await Te(N),e!==g||document.hidden))return;Ge(N)}catch(T){if(e!==g)return;console.error("Failed to initialize model group RPM:",T),L.value="unavailable"}}async function Te(e){if(c.has(e))return;c.add(e);const a=new AbortController;U=a;try{const s=await I.getModelGroupRPM(e,{signal:a.signal});if(ue.value!==e)return;$.value=s.items,re.value=new Date,L.value="ready"}catch(s){if(ue.value!==e||Xe(s))return;console.error("Failed to load model group RPM:",s),L.value="unavailable"}finally{c.delete(e),U===a&&(U=null)}}function Ge(e){x===null&&(x=setInterval(()=>{Te(e)},15e3))}function Ye(){x!==null&&clearInterval(x),x=null,U==null||U.abort(),U=null}function Ke(){H=null,Ye()}function He(){const e=H;if(e!==null){if(document.hidden){Ye();return}x===null&&(Te(e),Ge(e))}}function zt(e){const a=(e.product_name??"").trim();if(a.length>0)return a;const s=(e.product_code??"").trim();return s.length>0?`Not recorded (${s})`:"Not recorded"}function Ae(e){return Math.max(0,Math.round(e)).toLocaleString()}function xt(e){return Math.max(0,e).toLocaleString(void 0,{maximumFractionDigits:1})}async function Qe(){try{const e=await ca.list(1,100,{organization_id:f.value.organization_id,project_id:f.value.project_id});R.value=e.items}catch(e){console.error("Failed to load API keys:",e)}}function fe(){q.page=1,Dt(),Y(),me(),ge(),Re()}function Et(e){q.page=e,Y()}function It(e){q.page_size=e,q.page=1,Y()}function _e(e){return e<1e3?`${Math.max(0,e).toFixed(0)}ms`:`${(e/1e3).toFixed(2)}s`}return rt(()=>{Qe(),Y(),me(),ge(),Re(),We(),document.addEventListener("visibilitychange",He)}),Yt(()=>{document.removeEventListener("visibilitychange",He),Ke(),g+=1}),z(()=>p.query.tab,e=>{k.value=je(e)}),z(()=>[p.query.organization_id,p.query.view_as_organization_id,p.query.project_id],()=>{const e=ve(p);f.value.organization_id=e.organization_id,f.value.project_id=e.project_id,f.value.api_key_id=Q(p.query.api_key_id),q.page=1,Qe(),Y(),me(),ge(),Re(),We()}),(e,a)=>(m(),qe(ta,{class:"console-usage-page console-usage-clone-page"},{default:De(()=>[t("section",an,[t("header",nn,[a[10]||(a[10]=t("div",{class:"console-usage-title-row"},[t("h1",null,"Usage")],-1)),t("div",on,[F(tt,{modelValue:f.value.a
3pi_key_id,"onUpdate:modelValue":a[0]||(a[0]=s=>f.value.api_key_id=s),class:"console-control-select",options:ct.value,placeholder:"All API Keys",onChange:fe},null,8,["modelValue","options"]),F(La,{"start-at":B.value,"onUpdate:startAt":a[1]||(a[1]=s=>B.value=s),"end-at":E.value,"onUpdate:endAt":a[2]||(a[2]=s=>E.value=s),"follow-now":ie.value,"onUpdate:followNow":a[3]||(a[3]=s=>ie.value=s),class:"console-date-control",onChange:Pt},null,8,["start-at","end-at","follow-now"]),F(tt,{modelValue:f.value.model,"onUpdate:modelValue":a[4]||(a[4]=s=>f.value.model=s),class:"console-control-select",options:vt.value,placeholder:"All Models",onChange:fe},null,8,["modelValue","options"]),t("button",{type:"button",class:"console-refresh","data-testid":"usage-refresh",onClick:Ut}," Refresh ")]),t("p",ln,[t("span",sn,d(kt.value),1),a[6]||(a[6]=t("span",{class:"console-usage-window-sep"},"·",-1)),t("span",null,d(ht.value),1),a[7]||(a[7]=t("span",{class:"console-usage-window-sep"},"·",-1)),t("span",null,d($t.value),1),a[8]||(a[8]=t("span",{class:"console-usage-window-sep"},"·",-1)),t("span",null,d(St.value),1)]),t("div",rn,[a[9]||(a[9]=t("label",{class:"console-usage-statement-label",for:"usage-statement-month"}," Monthly statement ",-1)),ye(t("select",{id:"usage-statement-month","onUpdate:modelValue":a[5]||(a[5]=s=>ce.value=s),class:"console-statement-select","data-testid":"statement-month"},[(m(!0),b(j,null,K(Ne(te),s=>(m(),b("option",{key:s.key,value:s.key},d(s.label),9,un))),128))],512),[[Kt,ce.value]]),t("button",{type:"button",class:"console-refresh","data-testid":"statement-download",disabled:ae.value,onClick:Nt},d(ae.value?"Preparing…":"Download CSV"),9,dn),t("span",cn,d(Tt.value),1)])]),F(la,{cards:Ie.value,"active-metric":k.value,onSelectMetric:Lt},null,8,["cards","active-metric"]),F(Le,{state:he.value,onRetry:me},null,8,["state"]),Rt.value?(m(),b("section",vn,[t("div",pn,[a[11]||(a[11]=t("div",null,[t("h2",null,"Model group RPM"),t("p",null,"Admission requests by customer-visible model group. Refreshes every 15 seconds.")],-1)),re.value?(m(),b("small",gn,"Updated "+d(re.value.toLocaleTimeString()),1)):W("",!0)]),L.value==="loading"?(m(),b("div",mn,"Loading RPM…")):L.value==="unavailable"?(m(),b("div",fn,"RPM is temporarily unavailable.")):$.value.length===0?(m(),b("div",_n,"No active model groups.")):(m(),b("div",bn,[a[12]||(a[12]=t("div",{class:"console-rpm-row console-rpm-table-head",role:"row"},[t("span",null,"Model group"),t("span",null,"Current RPM"),t("span",null,"5 min average"),t("span",null,"5 min peak"),t("span",null,"RPM limit")],-1)),(m(!0),b(j,null,K($.value,s=>(m(),b("div",{key:s.product_code,class:"console-rpm-row",role:"row"},[t("span",null,[t("strong",null,d(zt(s)),1)]),t("span",null,d(Ae(s.current_rpm)),1),t("span",null,d(xt(s.average_rpm_5m)),1),t("span",null,d(Ae(s.peak_rpm_5m)),1),t("span",null,d(s.rpm_limit>0?Ae(s.rpm_limit):"Unlimited"),1)]))),128))]))])):W("",!0),F(sa,{"active-metric-label":pt.value,"active-metric-total":ft.value,"active-metric-average":bt.value,"average-label":_t.value,"bucket-note":gt.value,"has-usage-data":mt.value,"chart-data":wt.value,"chart-options":yt.value},null,8,["active-metric-label","active-metric-total","active-metric-average","average-label","bucket-note","has-usage-data","chart-data","chart-options"]),F(Le,{state:Ne(oe),onRetry:ge},null,8,["state"]),F(Ka,{logs:Ct.value,loading:se.value,pagination:q,"active-status-filter":M.value,"status-tabs":Mt.value,onUpdatePage:Et,onUpdatePageSize:It,onUpdateStatusFilter:qt},null,8,["logs","loading","pagination","active-status-filter","status-tabs"]),F(Le,{state:Ne(D),onRetry:Y},null,8,["state"])])]),_:1}))}}),In=Ue(yn,[["__scopeId","data-v-ef296814"]]);export{In as default};

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