1import{B as l,r as e,x as t,aG as s,ay as a,aw as n,R as o,av as u,$ as r,aH as i,C as c,U as d,az as m,aq as v,aL as p,i as _,ax as h}from"./nX7w3--X.js";import{u as y}from"./CZb9m0SH.js";import{u as f}from"./nqyftWTI.js";import{P as b}from"./CrK_MUeO.js";import{S as g}from"./BOJ9psLE.js";import{u as x}from"./inpFMjNm.js";import{V as k}from"./BWNBbf6k.js";import{V as C}from"./7ukZPocg.js";import{e as j,V as w,p as S,_ as z}from"#entry";import{V}from"./B9goy8s8.js";import{V as $}from"./CnLvr--j.js";import{V as A}from"./369w539r.js";import{V as U}from"./Ch9sftxZ.js";import{V as M,a as L,b as q}from"./BWrehKB2.js";import{V as T}from"./CVi8ooJQ.js";import"./DeYW9Fiz.js";import"./egkXgMqP.js";import"./CzdGDBjF.js";import"./gjBqqy30.js";import"./m8SgQgoF.js";import"./Bs0o2c6W.js";import"./Boy9wtnx.js";import"./C2U5VtnP.js";import"./CNAuE06t.js";import"./C-u_YpPl.js";import"./CtG27aky.js";import"./DZ6T0PiR.js";import"./BCcckLnV.js";import"./CzuCJjyz.js";const R={class:"page-top"},B={class:"filters-row mb-4"},P={class:"coverage-note"},F={class:"filters-group"},O={class:"stat-cards-row mb-3"},I={class:"stat-cards-row mb-4"},D={key:0,class:"loading-state"},E={key:1,class:"error-state"},W={key:2,class:"empty-state"},N={key:3,class:"report-content"},Q={class:"model-name"},G={class:"num"},K={class:"num"},X={class:"num"},Z={class:"num"},H={class:"num"},Y={class:"num"},J={class:"num cost-cell"},ll={class:"user-text"},el={class:"num"},tl={class:"num"},sl={class:"num"},al={class:"num cost-cell"},nl={class:"date-text"},ol={class:"user-text"},ul={key:1,class:"date-text"},rl={class:"num"},il={class:"num cost-cell"},cl={class:"actions-cell"},dl={class:"date-text"},ml={class:"user-text"},vl={key:1,class:"date-text"},pl={class:"num"},_l={class:"num cost-cell"},hl={class:"actions-cell"},yl={class:"detail-row"},fl={class:"detail-section"},bl={class:"detail-value"},gl={class:"detail-section"},xl={class:"detail-value"},kl={class:"detail-section"},Cl={class:"detail-value cost-cell"},jl={class:"model-name"},wl={class:"num"},Sl={class:"num"},zl={class:"num"},Vl={class:"num"},$l={class:"num"},Al={key:0,class:"thinking-note"},Ul={class:"num cost-cell"},Ml={class:"bq-line"},Ll={key:0,class:"bq-line"},ql=z(l({__name:"costs",setup(l){const{setSEO:z}=x();z({title:"Admin - Costs",description:"Admin cost audit for Compass Explorer usage.",noIndex:!0});const ql=y(),Tl=[{label:"All Time",value:null},{label:"24h",value:1},{label:"7d",value:7},{label:"30d",value:30}],Rl=[{label:"All owners",value:null},{label:"Accounts",value:"account"},{label:"API partners",value:"partner"},{label:"Trial",value:"trial"},{label:"Cohort members",value:"cohort"}],Bl=[{label:"All surfaces",value:null},{label:"Site chats",value:"site"},{label:"MCP analyses",value:"mcp"}],Pl={IN_PROGRESS:{color:"info",text:"Running"},SUCCESS:{color:"success",text:"Success"},FAILED:{color:"error",text:"Failed"},NO_DATA:{color:"blue-grey",text:"No Data"}},Fl=e(null),Ol=e(!0),Il=e(!1),Dl=e(null),El=e(null),Wl=e(null),Nl=e(null),Ql=e(null),Gl=e(""),Kl=e([]),Xl=e(!1),Zl=e(null);async function Hl(){Ol.value=!0,Dl.value=null;const l={};null!==El.value&&(l.days=El.value),Wl.value&&(l.segment=Wl.value),Nl.value&&(l.tenant_id=Nl.value),Ql.value&&(l.source=Ql.value);const e=Gl.value.trim();e&&(l.user_email=e);const{data:t,error:s}=await ql.getCostReport(l);Ol.value=!1,Il.value=!0,s?Dl.value=s?.data?.detail||s?.message||"Failed to load cost report":Fl.value=t}function Yl(l){El.value=l,Hl()}function Jl(l){Wl.value=l,l&&(Nl.value=null),Hl()}function le(l){Nl.value=l,l&&(Wl.value=null),Hl()}function ee(l){Ql.value=l,Hl()}function te(l){Zl.value=l,Xl.value=!0}function se(l){return null==l?"â":`$${l.toFixed(4)}`}function ae(l){return l.toLocaleString()}function ne(l){return l?l>=1024**3?`${(l/1024**3).toFixed(2)} GB`:l>=1048576?`${(l/1048576).toFixed(1)} MB`:`${(l/1024).toFixed(0)} KB`:"â"}function oe(l){const e=l.session;return e?e.used?e.ghost_resume?"resumed (ghost)":"resumed":e.reason?e.reason.replace(/_/g," "):"not used":"â"}function ue(l){const e=[];if(l.used?(e.push(`resumed (turn ${l.turn??"?"})`),null!=l.events&&e.push(`${l.events} events, ${ne(l.bytes??0)}`),l.ghost_resume&&e.push("ghost resume")):e.push("not used"+(l.reason?` â ${l.reason.replace(/_/g," ")}`:"")),l.save){const t=null!=l.save.bytes?` (${ne(l.save.bytes)})`:"";
1e.push(`save: ${l.save.outcome.replace(/_/g," ")} in ${l.save.duration_s}s${t}`)}return e.join(" · ")}function re(l){return l?function(l){const e=l.endsWith("Z")||l.includes("+")?l:`${l}Z`;return new Date(e)}(l).toLocaleString("en-US",{dateStyle:"medium",timeStyle:"short"}):"â"}return t((()=>{Hl(),async function(){const{data:l}=await f().listTenants();l?.tenants.length&&(Kl.value=[{label:"Any partner",value:null},...l.tenants.map((l=>({label:l.name,value:l.id})))])}()})),(l,e)=>(n(),s(b,{title:"Compass Explorer â Costs",subtitle:"Audit what conversations cost, per model and per run, to inform pricing"},{default:a((()=>[o("div",R,[o("div",B,[o("div",P,[c(Fl)?(n(),u(d,{key:0},[m(v(c(Fl).summary.runs_with_usage.toLocaleString())+" of "+v(c(Fl).summary.runs_total.toLocaleString())+" runs in scope have cost data (older runs predate cost tracking) ",1)],64)):i("",!0)]),o("div",F,[r(k,{modelValue:c(Gl),"onUpdate:modelValue":e[0]||(e[0]=l=>_(Gl)?Gl.value=l:null),placeholder:"Filter by user email...",density:"compact",variant:"outlined","hide-details":"",clearable:"",class:"email-input","onClick:clear":e[1]||(e[1]=l=>{Gl.value="",Hl()}),onKeydown:p(Hl,["enter"])},null,8,["modelValue"]),r(C,{"model-value":c(El),items:Tl,"item-title":"label","item-value":"value",density:"compact",variant:"outlined","hide-details":"",class:"period-select","onUpdate:modelValue":Yl},null,8,["model-value"]),r(C,{"model-value":c(Wl),items:Rl,"item-title":"label","item-value":"value",density:"compact",variant:"outlined","hide-details":"",class:"segment-select","onUpdate:modelValue":Jl},null,8,["model-value"]),c(Kl).length>1?(n(),s(C,{key:0,"model-value":c(Nl),items:c(Kl),"item-title":"label","item-value":"value",density:"compact",variant:"outlined","hide-details":"",class:"tenant-select","onUpdate:modelValue":le},null,8,["model-value","items"])):i("",!0),r(C,{"model-value":c(Ql),items:Bl,"item-title":"label","item-value":"value",density:"compact",variant:"outlined","hide-details":"",class:"source-select","onUpdate:modelValue":ee},null,8,["model-value"]),r(j,{icon:"",variant:"text",size:"small",color:"grey",loading:c(Ol),onClick:Hl},{default:a((()=>[r(w,{icon:"mdi-refresh",size:"20"}),r(V,{activator:"parent",location:"top"},{default:a((()=>[...e[4]||(e[4]=[m("Refresh",-1)])])),_:1})])),_:1},8,["loading"])])]),c(Fl)?(n(),u(d,{key:0},[o("div",O,[r(g,{label:"Total cost",value:se(c(Fl).summary.total_cost_usd)},null,8,["value"]),r(g,{label:"LLM",value:se(c(Fl).summary.llm_cost_usd)},null,8,["value"]),r(g,{label:"BigQuery",value:se(c(Fl).summary.bigquery_cost_usd)},null,8,["value"]),r(g,{label:"Conversations",value:c(Fl).summary.conversations.toLocaleString()},null,8,["value"]),r(g,{label:"Turns measured",value:c(Fl).summary.runs_costed.toLocaleString()},null,8,["value"])]),o("div",I,[r(g,{label:"Avg / conversation",value:se(c(Fl).summary.avg_cost_per_conversation)},null,8,["value"]),r(g,{label:"Avg / turn",value:se(c(Fl).summary.avg_cost_per_run)},null,8,["value"]),r(g,{label:"Median / turn",value:se(c(Fl).summary.median_cost_per_run)},null,8,["value"]),r(g,{label:"P90 / turn",value:se(c(Fl).summary.p90_cost_per_run)},null,8,["value"]),r(g,{label:"Max / turn",value:se(c(Fl).summary.max_cost_per_run)},null,8,["value"])])],64)):i("",!0)]),c(Ol)||!c(Il)?(n(),u("div",D,[r(S,{indeterminate:"",color:"primary",size:"48"}),e[5]||(e[5]=o("p",null,"Loading cost report...",-1))])):c(Dl)?(n(),u("div",E,[r(w,{icon:"mdi-alert-circle",size:"48",color:"error"}),e[7]||(e[7]=o("h3",null,"Unable to Load Cost Report",-1)),o("p",null,v(c(Dl)),1),r(j,{onClick:Hl,color:"primary",variant:"outlined",class:"text-none"},{default:a((()=>[r(w,{icon:"mdi-refresh",start:""}),e[6]||(e[6]=m(" Try Again ",-1))])),_:1})])):c(Fl)&&0!==c(Fl).summary.runs_with_usage?(n(),u("div",N,[e[21]||(e[21]=o("h3",{class:"section-title"},"Cost by model",-1)),r($,{density:"compact",class:"report-table mb-6"},{default:a((()=>[e[10]||(e[10]=o("thead",null,[o("tr",null,[o("th",null,"Model"),o("th",{class:"num"},"Calls"),o("th",{class:"num"},"Uncached in"),o("th",{class:"num"},"Cache reads"),o("th",{class:"num"},"Cache writes"),o("th",{class:"num"},"Output"),o("th",{class:"num"},"Billable"),o("th",{class:"num"},"Cost")])],-1)),o("tbody",null,[(n(!0),u(d,null,h(c(Fl).by_model,(l=>(n(),u("tr",{key:l.model},[o("td",Q,v(l.model),1),o("td",G,v(l.calls),1),o("td",K,v(ae(l.input_uncached)),1),o("td",X,v(ae(l.cache_read)),1),o("td",Z,v(ae(l.cache_write)),1),o("td",H,v(ae(l.output)),1),o("td",Y,v(ae(l.total_billable)),1
1),o("td",J,v(se(l.cost_usd)),1)])))),128))])])),_:1}),e[22]||(e[22]=o("h3",{class:"section-title"},"Most expensive users",-1)),r($,{density:"compact",class:"report-table mb-6"},{default:a((()=>[e[12]||(e[12]=o("thead",null,[o("tr",null,[o("th",null,"User"),o("th",{class:"num"},"Turns"),o("th",{class:"num"},"Conversations"),o("th",{class:"num"},"Avg / turn"),o("th",{class:"num"},"Cost")])],-1)),o("tbody",null,[(n(!0),u(d,null,h(c(Fl).top_owners,(l=>(n(),u("tr",{key:l.owner_display},[o("td",ll,[m(v(l.owner_display)+" ",1),"partner"===l.owner_type?(n(),s(A,{key:0,size:"x-small",variant:"tonal",class:"ml-1"},{default:a((()=>[...e[11]||(e[11]=[m("API",-1)])])),_:1})):i("",!0)]),o("td",el,v(l.runs),1),o("td",tl,v(l.conversations),1),o("td",sl,v(se(l.avg_cost_per_run)),1),o("td",al,v(se(l.cost_usd)),1)])))),128))])])),_:1}),e[23]||(e[23]=o("h3",{class:"section-title"},"Most expensive runs",-1)),r($,{density:"compact",class:"report-table mb-6"},{default:a((()=>[e[16]||(e[16]=o("thead",null,[o("tr",null,[o("th",null,"When"),o("th",null,"User"),o("th",null,"Models"),o("th",null,"Status"),o("th",null,"Session"),o("th",{class:"num"},"BigQuery"),o("th",{class:"num"},"Cost"),o("th")])],-1)),o("tbody",null,[(n(!0),u(d,null,h(c(Fl).top_runs,(l=>(n(),u("tr",{key:l.run_id},[o("td",nl,v(re(l.created_at)),1),o("td",ol,[m(v(l.owner_display)+" ",1),"mcp"===l.source?(n(),s(A,{key:0,size:"x-small",color:"indigo",variant:"tonal",class:"ml-1"},{default:a((()=>[...e[13]||(e[13]=[m("MCP",-1)])])),_:1})):i("",!0)]),o("td",null,[(n(!0),u(d,null,h(l.models,(l=>(n(),s(A,{key:l,size:"x-small",variant:"tonal",class:"mr-1"},{default:a((()=>[m(v(l),1)])),_:2},1024)))),128))]),o("td",null,[r(A,{color:Pl[l.status]?.color||"grey",size:"x-small",variant:"tonal"},{default:a((()=>[m(v(Pl[l.status]?.text||l.status),1)])),_:2},1032,["color"])]),o("td",null,[l.session?(n(),s(A,{key:0,color:l.session.used?"success":"grey",size:"x-small",variant:"tonal"},{default:a((()=>[m(v(oe(l)),1)])),_:2},1032,["color"])):(n(),u("span",ul,"â"))]),o("td",rl,v(se(l.bigquery_cost_usd)),1),o("td",il,v(se(l.cost_usd)),1),o("td",cl,[r(j,{icon:"",variant:"text",size:"x-small",onClick:e=>te(l)},{default:a((()=>[r(w,{icon:"mdi-information-outline",size:"16"}),r(V,{activator:"parent",location:"top"},{default:a((()=>[...e[14]||(e[14]=[m("Call breakdown",-1)])])),_:1})])),_:1},8,["onClick"]),r(j,{size:"x-small",variant:"tonal",color:"primary",class:"text-none",to:`/chat/${l.session_id}`},{default:a((()=>[...e[15]||(e[15]=[m(" Open chat ",-1)])])),_:1},8,["to"])])])))),128))])])),_:1}),e[24]||(e[24]=o("h3",{class:"section-title"},"Recent runs",-1)),r($,{density:"compact",class:"report-table"},{default:a((()=>[e[20]||(e[20]=o("thead",null,[o("tr",null,[o("th",null,"When"),o("th",null,"User"),o("th",null,"Models"),o("th",null,"Status"),o("th",null,"Session"),o("th",{class:"num"},"BigQuery"),o("th",{class:"num"},"Cost"),o("th")])],-1)),o("tbody",null,[(n(!0),u(d,null,h(c(Fl).recent_runs,(l=>(n(),u("tr",{key:l.run_id},[o("td",dl,v(re(l.created_at)),1),o("td",ml,[m(v(l.owner_display)+" ",1),"mcp"===l.source?(n(),s(A,{key:0,size:"x-small",color:"indigo",variant:"tonal",class:"ml-1"},{default:a((()=>[...e[17]||(e[17]=[m("MCP",-1)])])),_:1})):i("",!0)]),o("td",null,[(n(!0),u(d,null,h(l.models,(l=>(n(),s(A,{key:l,size:"x-small",variant:"tonal",class:"mr-1"},{default:a((()=>[m(v(l),1)])),_:2},1024)))),128))]),o("td",null,[r(A,{color:Pl[l.status]?.color||"grey",size:"x-small",variant:"tonal"},{default:a((()=>[m(v(Pl[l.status]?.text||l.status),1)])),_:2},1032,["color"])]),o("td",null,[l.session?(n(),s(A,{key:0,color:l.session.used?"success":"grey",size:"x-small",variant:"tonal"},{default:a((()=>[m(v(oe(l)),1)])),_:2},1032,["color"])):(n(),u("span",vl,"â"))]),o("td",pl,v(se(l.bigquery_cost_usd)),1),o("td",_l,v(se(l.cost_usd)),1),o("td",hl,[r(j,{icon:"",variant:"text",size:"x-small",onClick:e=>te(l)},{default:a((()=>[r(w,{icon:"mdi-information-outline",size:"16"}),r(V,{activator:"parent",location:"top"},{default:a((()=>[...e[18]||(e[18]=[m("Call breakdown",-1)])])),_:1})])),_:1},8,["onClick"]),r(j,{size:"x-small",variant:"tonal",color:"primary",class:"text-none",to:`/chat/${l.session_id}`},{default:a((()=>[...e[19]||(e[19]=[m(" Open chat ",-1)])])),_:1},8,["to"])])])))),128))])])),_:1})])):(n(),u("div",W,[r(w,{icon:"mdi-cash-off",size:"64",color:"grey"}),e[8]||(e[8]=o("h3",null,"No Cost Data",-1)),e[9]||(e[9]=o("p",null,"No runs with cost data found for the current filters.",-1))])),r(U,{modelValue:c(Xl),"onUpdate:modelValue":e[3]||(e[3]=l=>_(Xl)?Xl.value=l:null),"max-width":"980"},{default:a((()=>[c(Zl)?(n(),s(M,{key:0},{default:a((()=>[r(L,{class:"d-flex align-center justify-space-between pa-4"},{default:a((()=>[e[25]||(e[25]=o("span",{class:"text-h6"},"Run cost breakdown",-1)),r(j,{icon:"",variant:"text",size:"small",onClick:e[2]||(e[2]=l=>Xl.value=!1)},{default:a((()=>[r(w,{icon:"mdi-close"}
1)])),_:1})])),_:1}),r(T),r(q,{class:"pa-4"},{default:a((()=>[o("div",yl,[o("div",fl,[e[26]||(e[26]=o("div",{class:"detail-label"},"User",-1)),o("div",bl,v(c(Zl).owner_display),1)]),o("div",gl,[e[27]||(e[27]=o("div",{class:"detail-label"},"When",-1)),o("div",xl,v(re(c(Zl).created_at)),1)]),o("div",kl,[e[28]||(e[28]=o("div",{class:"detail-label"},"Total cost",-1)),o("div",Cl,v(se(c(Zl).cost_usd)),1)])]),r($,{density:"compact",class:"report-table mb-3"},{default:a((()=>[e[29]||(e[29]=o("thead",null,[o("tr",null,[o("th",null,"Agent"),o("th",null,"Model"),o("th",{class:"num"},"Time"),o("th",{class:"num"},"Uncached in"),o("th",{class:"num"},"Cache reads"),o("th",{class:"num"},"Cache writes"),o("th",{class:"num"},"Output"),o("th",{class:"num"},"Cost")])],-1)),o("tbody",null,[(n(!0),u(d,null,h(c(Zl).calls,((l,e)=>(n(),u("tr",{key:e},[o("td",null,v(l.agent),1),o("td",jl,v(l.model),1),o("td",wl,v(null!=l.duration_s?`${l.duration_s}s`:"â"),1),o("td",Sl,v(ae(l.input_uncached)),1),o("td",zl,v(ae(l.cache_read)),1),o("td",Vl,v(ae(l.cache_write)),1),o("td",$l,[m(v(ae(l.output))+" ",1),l.thinking?(n(),u("span",Al,"("+v(ae(l.thinking))+" think)",1)):i("",!0)]),o("td",Ul,v(se(l.cost_usd)),1)])))),128))])])),_:1}),o("div",Ml," BigQuery: "+v(c(Zl).bigquery_queries)+" queries, "+v(ne(c(Zl).bigquery_bytes))+" billed â "+v(se(c(Zl).bigquery_cost_usd)),1),c(Zl).session?(n(),u("div",Ll," Session: "+v(ue(c(Zl).session)),1)):i("",!0),r(j,{block:"",color:"primary",variant:"flat",class:"text-none mt-4",to:`/chat/${c(Zl).session_id}`},{default:a((()=>[...e[30]||(e[30]=[m(" Open chat ",-1)])])),_:1},8,["to"])])),_:1})])),_:1})):i("",!0)])),_:1},8,["modelValue"])])),_:1}))}}),[["__scopeId","data-v-8a90c0ba"]]);export{ql 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.