glimmervoid 0.46.2-next.134 → 0.46.2-next.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/client/assets/{alert-sound-gcFWc22f.js → alert-sound-B4KGxL80.js} +1 -1
  2. package/dist/client/assets/alert-sound-B4KGxL80.js.br +0 -0
  3. package/dist/client/assets/{benchmark-panel-DYYirG4l.js → benchmark-panel-zBbvfMYk.js} +1 -1
  4. package/dist/client/assets/benchmark-panel-zBbvfMYk.js.br +0 -0
  5. package/dist/client/assets/{celebration-player-DV0icaa2.js → celebration-player-HKBOD4cy.js} +1 -1
  6. package/dist/client/assets/celebration-player-HKBOD4cy.js.br +0 -0
  7. package/dist/client/assets/{dialogs-DIef9tyM.js → dialogs-DWCnq-bA.js} +1 -1
  8. package/dist/client/assets/dialogs-DWCnq-bA.js.br +0 -0
  9. package/dist/client/assets/{doc-editor-ui-BJQVHhbH.js → doc-editor-ui-BHh0m_K3.js} +1 -1
  10. package/dist/client/assets/doc-editor-ui-BHh0m_K3.js.br +0 -0
  11. package/dist/client/assets/{first-run-checklist-CYo1l6SW.js → first-run-checklist-DnIOR2gQ.js} +1 -1
  12. package/dist/client/assets/first-run-checklist-DnIOR2gQ.js.br +0 -0
  13. package/dist/client/assets/{hooks-panel-BFCJKAoL.js → hooks-panel-6qz_-UHg.js} +1 -1
  14. package/dist/client/assets/hooks-panel-6qz_-UHg.js.br +0 -0
  15. package/dist/client/assets/{index-BZuCoMuc.js → index-NtTpV6Kg.js} +5 -5
  16. package/dist/client/assets/index-NtTpV6Kg.js.br +0 -0
  17. package/dist/client/assets/{issues-panel-zwRfcpoK.js → issues-panel-Damoq2wM.js} +1 -1
  18. package/dist/client/assets/issues-panel-Damoq2wM.js.br +0 -0
  19. package/dist/client/assets/{nyan-cat-DU1rwXss.js → nyan-cat-DP5bGMSe.js} +1 -1
  20. package/dist/client/assets/nyan-cat-DP5bGMSe.js.br +0 -0
  21. package/dist/client/assets/{phone-shell-Bcfl7FwR.js → phone-shell-DC0CrJaj.js} +1 -1
  22. package/dist/client/assets/phone-shell-DC0CrJaj.js.br +0 -0
  23. package/dist/client/assets/{plan-face-CX7gzssd.js → plan-face-Bhu7Vozo.js} +1 -1
  24. package/dist/client/assets/plan-face-Bhu7Vozo.js.br +0 -0
  25. package/dist/client/assets/{plan-render-BILDNp_T.js → plan-render-B8E5TO3c.js} +1 -1
  26. package/dist/client/assets/plan-render-B8E5TO3c.js.br +0 -0
  27. package/dist/client/assets/{pr-scope-tabs-BXnmNtAC.js → pr-scope-tabs-r_ek17fx.js} +1 -1
  28. package/dist/client/assets/pr-scope-tabs-r_ek17fx.js.br +0 -0
  29. package/dist/client/assets/{radar-panel-BjIjdKOE.js → radar-panel-Gk2rxIbM.js} +1 -1
  30. package/dist/client/assets/radar-panel-Gk2rxIbM.js.br +0 -0
  31. package/dist/client/assets/{resume-dialog-CWAcGzUY.js → resume-dialog-LowneVnC.js} +1 -1
  32. package/dist/client/assets/resume-dialog-LowneVnC.js.br +0 -0
  33. package/dist/client/assets/{review-queue-panel-D83S71YV.js → review-queue-panel-C_9dfBOX.js} +1 -1
  34. package/dist/client/assets/review-queue-panel-C_9dfBOX.js.br +0 -0
  35. package/dist/client/assets/{settings-panel-C1PBX3EX.js → settings-panel-Bv4EWXEb.js} +2 -2
  36. package/dist/client/assets/settings-panel-Bv4EWXEb.js.br +0 -0
  37. package/dist/client/assets/{shown-lightbox-BUxkUxwi.js → shown-lightbox-CDAIawLs.js} +1 -1
  38. package/dist/client/assets/shown-lightbox-CDAIawLs.js.br +0 -0
  39. package/dist/client/assets/{trace-panel-Cho6aIw1.js → trace-panel-uPZdDvBP.js} +1 -1
  40. package/dist/client/assets/trace-panel-uPZdDvBP.js.br +0 -0
  41. package/dist/client/assets/{usage-panel-C_ehLta0.js → usage-panel-AqCVpmD4.js} +1 -1
  42. package/dist/client/assets/usage-panel-AqCVpmD4.js.br +0 -0
  43. package/dist/client/assets/{visions-panel-Bt-bf727.js → visions-panel-jSNAeXDj.js} +1 -1
  44. package/dist/client/assets/visions-panel-jSNAeXDj.js.br +0 -0
  45. package/dist/client/index.html +1 -1
  46. package/dist/client/index.html.br +0 -0
  47. package/package.json +1 -1
  48. package/dist/client/assets/alert-sound-gcFWc22f.js.br +0 -0
  49. package/dist/client/assets/benchmark-panel-DYYirG4l.js.br +0 -0
  50. package/dist/client/assets/celebration-player-DV0icaa2.js.br +0 -0
  51. package/dist/client/assets/dialogs-DIef9tyM.js.br +0 -0
  52. package/dist/client/assets/doc-editor-ui-BJQVHhbH.js.br +0 -0
  53. package/dist/client/assets/first-run-checklist-CYo1l6SW.js.br +0 -0
  54. package/dist/client/assets/hooks-panel-BFCJKAoL.js.br +0 -0
  55. package/dist/client/assets/index-BZuCoMuc.js.br +0 -0
  56. package/dist/client/assets/issues-panel-zwRfcpoK.js.br +0 -0
  57. package/dist/client/assets/nyan-cat-DU1rwXss.js.br +0 -0
  58. package/dist/client/assets/phone-shell-Bcfl7FwR.js.br +0 -0
  59. package/dist/client/assets/plan-face-CX7gzssd.js.br +0 -0
  60. package/dist/client/assets/plan-render-BILDNp_T.js.br +0 -0
  61. package/dist/client/assets/pr-scope-tabs-BXnmNtAC.js.br +0 -0
  62. package/dist/client/assets/radar-panel-BjIjdKOE.js.br +0 -0
  63. package/dist/client/assets/resume-dialog-CWAcGzUY.js.br +0 -0
  64. package/dist/client/assets/review-queue-panel-D83S71YV.js.br +0 -0
  65. package/dist/client/assets/settings-panel-C1PBX3EX.js.br +0 -0
  66. package/dist/client/assets/shown-lightbox-BUxkUxwi.js.br +0 -0
  67. package/dist/client/assets/trace-panel-Cho6aIw1.js.br +0 -0
  68. package/dist/client/assets/usage-panel-C_ehLta0.js.br +0 -0
  69. package/dist/client/assets/visions-panel-Bt-bf727.js.br +0 -0
@@ -1 +1 @@
1
- import{et as e,it as t,nt as n,rt as r,tt as i}from"./updates-view-core-Z-HI1v-s.js";import{n as a,o,u as s}from"./dom-helpers-C7P3_59O.js";import{An as c,Dn as l,En as u,Fn as d,In as f,Mn as p,Nn as m,On as h,Pn as ee,Tn as te,_ as ne,a as g,c as re,d as ie,jn as ae,kn as _,l as oe,m as v,o as se,p as ce,s as le,u as ue,wn as de}from"./index-BZuCoMuc.js";var fe=`Estimated list prices, not a bill.`,pe=`Enable in Settings.`,me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],y=/^(\d{4})-(\d{2})-(\d{2})$/,he=new Set([`day`,`model`,`label`]),ge=new Set([`model`,`label`]);function b(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${d(e.toFixed(1))}%`}function _e(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function ve(e){return e===`costUSD`?`share of cost`:`share of tokens`}function x(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function S(e){let t=y.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=me[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function ye(e){let t=be(e);return t.length===0?``:t.length===1?S(t[0]):`${S(t[0])} to ${S(t[t.length-1])}`}function be(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>y.test(e)).sort()}function xe(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:Se(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function Se(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=Ce(e,n);return y.test(r)?r:Ce(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function Ce(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function C(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:n(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function we(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=me[n.getMonth()];return r?`${r} ${n.getDate()} ${i(n)}`:`-`}function Te(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${_(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:_(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:c(e.costPerHour),sub:``}),t}function Ee(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${_(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(c(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${C(e.remainingMinutes)} left in this block`:``;if(t.length===0)return n;let r=`-> ${t.join(`, `)} by block end`;return n?`${r}, ${n}`:r}function De(e,t=Date.now()){let n=Number(e?.startTs),r=Number(e?.endTs);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)return null;let i=(r-n)/6e4,a=Math.min(Math.max((t-n)/6e4,0),i);return{totalMinutes:i,elapsedMinutes:a,remainingMinutes:Math.max(i-a,0),pct:Math.round(a/i*100)}}function Oe(e){let t=ae(e);return t===null?``:`${Math.round(t)}% of ${_(e?.max)} tokens, the largest completed block seen`}function ke(e,t){let n=m(e,t);return n===null?``:n>=100?`On this burn rate the block ends past that reference, at ${Math.round(n)}% of it.`:`On this burn rate the block ends at ${Math.round(n)}% of that reference.`}var Ae=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function je(e){let t=Ae.map(t=>{let n=Number(e?.[t.key]);return{spec:t,tokens:Number.isFinite(n)&&n>0?n:0}}),n=t.reduce((e,t)=>e+t.tokens,0);return n<=0?[]:t.map(e=>{let t=x(e.tokens,n)??0,r=_(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${b(t)}`}})}var Me=Object.freeze({interactive:`Interactive`,"pr-review":`PR review`,"team-review":`PR reviews`,posthog:`PostHog`,"my-prs":`Keep mergeable`,workflows:`Workflows`,"change-map":`Change map`,visions:`Visions`,benchmark:`Benchmarks`,"agent-spawn":`Agent API`,"task-title":`Task titles`,other:`Other`}),Ne=`Sessions spawned by Glimmervoid; terminal sessions count as other`,Pe=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function Fe(e){let n=t(e,``);return n?Me[n]||n:Me.other}function w(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function Ie(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function Le(e){return w(e).some(e=>Ie(e.lane))}var Re=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function ze(e,t,n){let r=p(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function Be(e,t,n,i){if(!Array.isArray(t))return null;let a=t.filter(e=>e&&typeof e.lane==`string`),o=a.reduce((e,t)=>e+r(t.costUSD,0),0),s=a.reduce((e,t)=>e+r(t.tokens,0),0),c=a.filter(e=>Ie(e.lane)).map(e=>({lane:String(e.lane),label:Fe(e.lane),tokens:r(e.tokens,0),costUSD:r(e.costUSD,0)})),l=c.reduce((e,t)=>e+t.costUSD,0),u=c.reduce((e,t)=>e+t.tokens,0),d=o>0?x(l,o):x(u,s),f=ze(n,e,i),p=d===null||f===null?null:d/100*f;return{key:e,label:Re[e],tokens:u,costUSD:l,sharePct:d,planPct:p,lanes:c}}function Ve(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:D.map(e=>Be(e.key,r[e.key],t,n)).filter(e=>e!==null)}function He(e){return e.planPct===null?``:`about ${b(e.planPct)} of plan`}function Ue(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?c(e.costUSD):_(e.tokens)}`).join(`, `)}var We=`team-review`;function Ge(e){if(!Array.isArray(e?.byLane))return null;let t=w(e).find(e=>e.lane===We),n=r(t?.costUSD,0),i=r(t?.tokens,0),a=_e(e?.totals),o=x(a===`costUSD`?n:i,e?.totals?.[a]),s=o===null?``:`${b(o)} of range ${a===`costUSD`?`cost`:`tokens`}`,l=[c(n),s,Ke(t?.sessions)].filter(Boolean).join(`, `);return{label:Fe(We),value:_(i),sub:l}}function Ke(e){let t=r(e,null);return t===null||t<=0?``:`${h(t)} ${t===1?`session`:`sessions`}`}function qe(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function Je(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function Ye(e){return qe(e)!==null||Je(e)!==null}function Xe(e){let t=qe(e);if(!t)return null;let n=r(t.commands,0),i=n===1?`command`:`commands`;return{value:`${_(r(t.savedTokens,0))} tokens`,sub:`${b(r(t.savingsPct,0))} avg across ${h(n)} ${i}`}}function Ze(e){let t=Je(e);if(!t)return null;let n=_(r(t.cacheReadTokens,0)),i=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),a=`${n} cache read tokens`;if(i.length===0)return{value:c(r(t.savedUSD,0)),sub:a};let o=i.length===1?`model`:`models`;return{value:c(r(t.savedUSD,0)),sub:`${a}, a floor (${i.length} unpriced ${o})`}}function Qe(e){return e===`monthly`?`this month`:`today`}function $e(e){return`${c(r(e?.spentUsd,0))} of ${c(r(e?.budgetUsd,0))}`}function et(e){return`${Qe(e?.scope)} spend against budget`}var tt=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function nt(e){let t=y.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function rt(t){let n=nt(t);if(!n)return``;let r=(n.getDay()+6)%7;return n.setDate(n.getDate()-r),e(n)}function it(e){let t=y.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function at(e){return{key:e,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0,days:0,sources:new Set,vendorSet:new Set,modelByName:new Map}}function ot(e,t){e.tokens+=r(t?.tokens,0),e.costUSD+=r(t?.costUSD,0),e.input+=r(t?.input,0),e.output+=r(t?.output,0),e.cacheCreate+=r(t?.cacheCreate,0),e.cacheRead+=r(t?.cacheRead,0),e.days+=1,e.sources.add(t?.source===`history`?`history`:`live`);let n=Array.isArray(t?.vendors)?t.vendors:[];for(let t of n)e.vendorSet.add(t);let i=t?.models||[];for(let t of i){t?.vendor&&e.vendorSet.add(t.vendor);let n=k(t),i=e.modelByName.get(n)||{key:n,model:t?.model??n,vendor:t?.vendor,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0};i.tokens+=r(t?.tokens,0),i.costUSD+=r(t?.costUSD,0),i.input+=r(t?.input,0),i.output+=r(t?.output,0),i.cacheCreate+=r(t?.cacheCreate,0),i.cacheRead+=r(t?.cacheRead,0),e.modelByName.set(n,i)}}function st(e){let{modelByName:t,sources:n,vendorSet:r,...i}=e,a={...i};return a.day=e.key,a.models=Array.from(t.values()).sort((e,t)=>t.tokens-e.tokens),a.source=n.has(`live`)?`live`:`history`,a.vendors=Array.from(r).sort(),a}function ct(e,t){let n=new Map,r=Array.isArray(e)?e:[];for(let e of r){let r=t(e?.day);if(!r)continue;let i=n.get(r)||at(r);ot(i,e),n.set(r,i)}return Array.from(n.values()).map(st)}function lt(e){return ct(e,rt)}function ut(e){return ct(e,it)}function dt(e,t){return t===`week`?lt(e):t===`month`?ut(e):Array.isArray(e)?[...e]:[]}var ft=/^(\d{4})-(\d{2})$/;function pt(e,t){if(t===`month`){let t=ft.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=me[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=S(e);return t===`-`?t:`week of ${t}`}return S(e)}function mt(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var ht=16,gt=Object.freeze([.05,.25,.5,.75]),_t=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function vt(e,t){let n=r(e,0),i=r(t,0);if(n<=0||i<=0)return 0;let a=n/i,o=1;for(let e=0;e<gt.length;e+=1)a>=gt[e]&&(o=e+1);return o}function yt(t,{weeks:n=ht,today:i=new Date}={}){let a=(Array.isArray(t)?t:[]).filter(e=>y.test(String(e?.day??``))),o=new Map(a.map(e=>[String(e.day),e])),s=i instanceof Date?i:new Date(i),c=Number.isFinite(s.getTime())?s:new Date,l=typeof i==`string`&&y.test(i)?i:e(c),u=nt(rt(l));if(!u)return{cells:[],max:0,weeks:0};let d=new Date(u.getFullYear(),u.getMonth(),u.getDate()-(n-1)*7,12),f=e(d),p=[],m=0,h=null;for(let e of a){let t=String(e.day);(h===null||t<h)&&(h=t),!(t<f||t>l)&&(m=Math.max(m,r(e.tokens,0)))}for(let t=0;t<n;t+=1)for(let n=0;n<7;n+=1){let i=new Date(d.getFullYear(),d.getMonth(),d.getDate()+t*7+n,12),a=e(i),s=o.get(a)||null,c=a>l,u=h!==null&&a<h;p.push({day:a,week:t,weekday:n,tokens:r(s?.tokens,0),costUSD:r(s?.costUSD,0),source:s?.source===`history`?`history`:s?`live`:null,noData:c||u||!s&&h===null,tone:vt(s?.tokens,m)})}return{cells:p,max:m,weeks:n}}function bt(e){let t=S(e?.day);if(e?.noData)return`${t}: no data`;let n=r(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${_(n)} tokens, ${c(r(e?.costUSD,0))}`}function xt(e){if(!e)return``;let t=r(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${Et(e.ratio)} the ${n} average: ${c(e.todayUsd)} against ${c(e.baselineUsd)}.`}function St(e){return e?`This block is burning ${Et(e.ratio)} the usual rate: ${_(e.current)} tokens per minute against ${_(e.baseline)}.`:``}function Ct(e){return[xt(e?.daily),St(e?.burn)].filter(Boolean).join(` `)}function wt(e){return e?.daily||e?.burn?`warn`:`ok`}function Tt(e){return!!(e?.daily||e?.burn)}function Et(e){let t=r(e,null);return t===null?`-`:`${d(t.toFixed(1))}x`}var Dt=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function Ot(e){let n=t(e,``);return n?Dt[n]||n:Dt.claude}function kt(e,t){return T(t)?Ot(e?.vendor):``}function At(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>r(t[n]?.tokens,0)-r(t[e]?.tokens,0)).map(e=>({vendor:e,label:Ot(e),tokens:r(t[e]?.tokens,0),costUSD:r(t[e]?.costUSD,0)}))}function T(e){let t=e?.byVendor;if(!t||typeof t!=`object`)return!1;let n=Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`);return n.length>1||n.length===1&&n[0]!==`claude`}var jt=`Claude only`;function E(e){return T(e)?jt:``}var Mt=36e5,D=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]),Nt=Object.freeze([{vendor:`claude`,label:`Claude Code`},{vendor:`codex`,label:`Codex`}]);function Pt(e,t){let n=`official, from ${Nt.filter(({vendor:t})=>e.includes(t)).map(({label:e})=>e).join(` and `)}`,r=e.length===1&&e[0]===`claude`?E(t):``;return r?`${n}, ${r}`:n}function Ft(e){return D.some(t=>p(e,t.key)!==null)}function It(e){return e===`estimated`?`estimated from the largest completed block`:``}function Lt(e){let t=r(e?.pct,null);return t===null?`-`:`${b(t)} used`}function Rt(e,t=Date.now()){let n=r(e,null);if(n===null||n<=0)return``;let i=(n-t)/6e4;return i<=0?`resetting now`:`resets in ${C(i)}`}function zt(e,t=Date.now()){let n=r(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function Bt(e,t=Date.now()){let n=r(e,null);return n===null||n<=0||t-n>Mt}function Vt(e,t=Date.now()){if(!Bt(e,t))return``;let n=zt(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function Ht(e){let t=(Array.isArray(e)?e:[]).map(e=>String(e)).filter(e=>e);if(t.length===0)return``;let n=t.length===1?`model`:`models`;return`No price for ${t.length} ${n}: ${t.join(`, `)}. Their cost counts as zero here.`}function Ut(e){let n=t(e?.warning,``);return n?`Glimmervoid could not read every transcript location: ${n}`:``}function Wt(e){return f(e)!==``}function Gt(e){let t=String(e??``).trim();if(!t)return``;let n=t.split(/[\\/]+/).filter(e=>e);return n.length===0?t:n[n.length-1]}function Kt(e){return typeof e?.id==`string`&&e.id!==``}function O(e){let n=t(e?.label,``);return Kt(e)&&n?n:Gt(e?.project)||n||`unknown project`}function k(e){let n=typeof e==`string`?e:e?.model;return t(n,`unknown model`)}function qt(e){return String(e?.day??``)}function Jt(e,t,n){if(!he.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?qt(e):n(e)}function A(e,t,n,r=O){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=Jt(e,t,r),o=Jt(n,t,r);if(typeof i==`string`||typeof o==`string`)return a*String(i).localeCompare(String(o));if(i!==o)return a*(i-o);let s=Number(e?.tokens),c=Number(n?.tokens),l=Number.isFinite(s)?s:0,u=Number.isFinite(c)?c:0;return l===u?r(e).localeCompare(r(n)):u-l})}function Yt(e){return ge.has(e)?`asc`:`desc`}function Xt(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:Yt(t)}}function Zt(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var Qt=Object.freeze({key:`lastTs`,dir:`desc`}),$t=Object.freeze({key:`tokens`,dir:`desc`}),en=Object.freeze({key:`day`,dir:`desc`});function tn(e,t=Qt){return A(e,t.key,t.dir,O)}function nn(e,t,n=10){if(!Array.isArray(e))return{rows:[],hiddenCount:0};let r=Number.isFinite(n)?Math.max(0,Math.floor(n)):10;return t||e.length<=r?{rows:e,hiddenCount:0}:{rows:e.slice(0,r),hiddenCount:e.length-r}}function rn(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${h(t)} hidden`}function an(e,t=$t){return A(e,t.key,t.dir,k)}function on(e,t=en){return A(e,t.key,t.dir,qt)}function sn(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function cn(e,t=8){return(Array.isArray(e)?e:[]).filter(e=>e&&e.isGap!==!0).sort((e,t)=>(Number(t?.startTs)||0)-(Number(e?.startTs)||0)).slice(0,Math.max(0,t)).map(e=>({startTs:Number(e.startTs),tokens:typeof e.tokens==`number`&&Number.isFinite(e.tokens)?e.tokens:0,costUSD:typeof e.costUSD==`number`&&Number.isFinite(e.costUSD)?e.costUSD:0,isActive:e.isActive===!0}))}var j=ie(),M=null,N=en,P=$t,F=Qt,I=!1,L=null,R=`day`,z=new Set,B=null,V=null,H=null,U=null,W=null,G=null,K=null,q=ce(()=>M),J=(e,t)=>a(`usage`,e,t);function Y(e,t,n,r){let i=o(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=o(`span`,`usage-tile-value`,t);i.append(a,o(`span`,`usage-tile-label`,e));let s=n?o(`span`,`usage-tile-sub`,n):null;return s&&i.append(s),{tile:i,valueEl:a,subEl:s}}function ln(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function X(e,t,n){let r=o(`div`,`usage-meter`);r.dataset.tone=String(t),r.setAttribute(`role`,`progressbar`),r.setAttribute(`aria-valuemin`,`0`),r.setAttribute(`aria-valuemax`,`100`),r.setAttribute(`aria-label`,n);let i=o(`span`,`usage-meter-fill`);return r.append(i),un(r,e),r}function un(e,t){if(!e)return;let n=ln(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function Z(e,t,n,r){let i=o(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=o(`table`,`usage-table`),s=o(`thead`),c=o(`tr`);for(let i of e){let e=o(`th`,i.numeric?`usage-num`:null);if(e.scope=`col`,!i.key){e.textContent=i.label,c.append(e);continue}let a=i.key;e.setAttribute(`aria-sort`,Zt(t,a));let s=o(`button`,`usage-sort`,i.label);s.type=`button`,s.dataset.sortKey=a,s.addEventListener(`click`,()=>{g(`sort`),L={kind:`sort`,table:r,key:a},n(a)}),e.append(s),c.append(e)}s.append(c);let l=o(`tbody`);return a.append(s,l),i.append(a),{wrap:i,body:l}}function Q(e,t){for(let n of t){let t=o(`td`,n.numeric?`usage-num`:n.className||null,n.node?null:n.text);n.node&&t.append(n.node),n.title&&(t.title=n.title),n.span&&(t.colSpan=n.span),e.append(t)}}function dn(e){let t=o(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(o(`span`,`usage-share-text`,b(e))),t;let n=o(`span`,`usage-share-bar`),r=o(`span`,`usage-share-fill`);return r.style.width=`${ln(e)}%`,n.append(r),t.append(n,o(`span`,`usage-share-text`,b(e))),t}function fn(){if(!B?.isConnected)return;let e=Number(j.report?.ts);B.textContent=Number.isFinite(e)&&e>0?`Report ${v(e)}`:``}function pn(){if(!V?.isConnected)return;let e=Number(j.sessions?.ts);V.textContent=Number.isFinite(e)&&e>0?`Sessions ${v(e)}`:``}function mn(){let e=De(j.report?.activeBlock);e&&(H?.isConnected&&(H.textContent=`${e.pct}%`),U?.isConnected&&(U.textContent=`${C(e.remainingMinutes)} left`),W?.isConnected&&un(W,e.pct))}function hn(){let e=o(`div`,`usage-controls`),t=o(`label`,`usage-control`);t.append(o(`span`,`usage-control-label`,`Range`));let n=o(`select`,`usage-select`);for(let e of de){let t=o(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=j.rangeValue,n.addEventListener(`change`,()=>{g(`range`),re(n.value),se()}),t.append(n);let r=o(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>{g(`refresh`),se({force:!0})});let i=o(`span`,`usage-refresh-status`,``);return G=r,K=i,Gn(),e.append(t,r,i),e}function gn(){let e=J(`Usage`,ye(j.report?.daily||[]));e.append(hn()),B=o(`p`,`usage-meta`,``),e.append(B),fn(),q.onTick(fn);let t=Ut(j.report);t&&e.append(o(`p`,`usage-warning`,t));let n=Ht(j.report?.pricing?.missing);return n&&e.append(o(`p`,`usage-warning`,n)),e}function _n(){let e=Nt.filter(({vendor:e})=>Ft(j.planLimitsByVendor[e]));if(e.length===0)return null;let t=J(`Plan limits`,Pt(e.map(({vendor:e})=>e),j.report?.totals)),n=e.length>1,r=o(`div`,`usage-plan-vendors`);for(let{vendor:t,label:i}of e)r.append(vn(j.planLimitsByVendor[t],n?i:null));return t.append(r),t}function vn(e,t){let n=o(`div`,`usage-plan-vendor`);t&&n.append(o(`p`,`usage-plan-vendor-label`,t));let r=Vt(e?.ts);if(r){let e=o(`p`,`usage-meta`,r);e.dataset.tone=`warn`,n.append(e)}let i=o(`div`,`usage-plan`);for(let t of D){let n=p(e,t.key);n&&i.append(yn(t,n))}let a=o(`p`,`usage-meta`,``);n.append(i,a);let s=()=>{if(!a.isConnected)return;let t=zt(e?.ts);a.textContent=t?`Plan ${t}`:``};return s(),q.onTick(s),n}function yn(e,t){let n=o(`div`,`usage-plan-window`),r=o(`div`,`usage-plan-head`);r.append(o(`span`,`usage-plan-label`,e.label)),r.append(o(`span`,`usage-plan-used`,Lt(t)));let i=o(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(X(t.pct,ee(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=Rt(t.resetsAtMs))};return a(),q.onTick(a),n}function bn(){let e=Ve(j.report,j.planLimitsByVendor.claude),t=xn();if(e.length===0&&!t)return null;let n=J(`Glimmervoid overhead`,e.length>0?Pe:null);if(e.length>0){let t=o(`div`,`usage-tiles`);for(let n of e){let e=[He(n),c(n.costUSD)].filter(Boolean).join(`, `);t.append(Y(`${n.label}, share of Claude use`,b(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=Ue(t);e&&n.append(o(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(o(`p`,`usage-meta`,`Selected range by lane. ${Ne}`)),n.append(t)),n}function xn(){if(!Le(j.report))return null;let e=w(j.report),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=Z([{label:`Lane`},{label:`Cost`,numeric:!0},{label:`Tokens`,numeric:!0},{label:`Sessions`,numeric:!0},{label:`Share`,numeric:!0}],null,()=>{},`lane`);for(let n of e){let e=o(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),Q(e,[{text:Fe(n.lane),className:`usage-lane-cell`},{text:c(n.costUSD),numeric:!0},{text:_(n.tokens),numeric:!0},{text:Ke(n.sessions),numeric:!0},{node:dn(x(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function Sn(){let e=j.report?.activeBlock,t=j.report?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=E(j.report?.totals),i=J(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(o(`p`,`usage-empty`,`No active block.`));let e=Cn();return e&&i.append(e),i}let a=te(j.report,j.planLimitsByVendor.claude),s=o(`div`,`usage-tiles`);s.append(Y(`block tokens`,_(e.tokens??0),c(e.costUSD??0),a).tile);for(let t of Te(e.burn))s.append(Y(t.label,t.value,t.sub,a).tile);let l=De(e);if(l){let e=Y(`elapsed`,`${l.pct}%`,`${C(l.remainingMinutes)} left`);H=e.valueEl,U=e.subEl,s.append(e.tile)}i.append(s),l&&(W=X(l.pct,`ok`,`Elapsed share of the current block window`),i.append(W),q.onTick(mn));let u=Ee(e.projection);if(u){let e=o(`p`,`usage-projection`,u);e.dataset.tone=a,i.append(e)}let d=Cn();d&&i.append(d);let f=Oe(j.report?.tokenLimit);if(!f)return i;let p=ae(j.report?.tokenLimit),m=te(j.report);i.append(X(p,m,`Share of the largest completed block seen, estimated`));let h=o(`p`,`usage-meta`,f);h.dataset.tone=m,i.append(h),i.append(o(`p`,`usage-provenance`,It(`estimated`)));let ee=ke(e.projection,j.report?.tokenLimit);if(ee){let e=o(`p`,`usage-meta`,ee);e.dataset.tone=m,i.append(e)}return i}function Cn(){let e=j.report?.anomaly;if(!Tt(e))return null;let t=o(`p`,`usage-meta`,Ct(e));return t.dataset.tone=wt(e),t}function wn(){let e=cn(j.report?.blocks);if(e.length===0)return null;let t=E(j.report?.totals),n=J(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=o(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=o(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(o(`span`,`usage-block-label`,we(t.startTs)));let n=o(`span`,`usage-block-bar`),a=o(`span`,`usage-block-fill`);a.style.width=`${ln(x(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(o(`span`,`usage-block-value`,`${_(t.tokens)} ${c(t.costUSD)}`)),r.append(e)}return n.append(r),n}function Tn(){let e=j.report?.totals||{},t=sn(j.report?.daily,xe(j.report)),n=J(`Totals`,[fe,j.report?.tz?`TZ ${j.report.tz}`:``].filter(Boolean).join(` `)),r=te(j.report,j.planLimitsByVendor.claude),i=o(`div`,`usage-tiles`);i.append(Y(`today`,_(t?.tokens??0),c(t?.costUSD??0),r).tile),i.append(Y(`range total`,_(e.tokens??0),c(e.costUSD??0)).tile);let a=Ge(j.report);a&&i.append(Y(a.label,a.value,a.sub).tile),n.append(i);let s=En(e);s&&n.append(s);let l=T(e)?At(e):[];if(l.length>0){let e=o(`div`,`usage-tiles usage-vendor-tiles`);for(let t of l)e.append(Y(t.label,_(t.tokens),c(t.costUSD)).tile);n.append(e)}return V=o(`p`,`usage-meta`,``),n.append(V),pn(),q.onTick(pn),n}function En(e){let t=je(e);if(t.length===0)return null;let n=o(`div`,`usage-compo`),r=o(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=o(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=o(`div`,`usage-compo-legend`);for(let e of t){let t=o(`span`,`usage-compo-item`),n=o(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,o(`span`,`usage-compo-label`,e.label),o(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function Dn(){let e=j.report?.savings;if(!Ye(e))return null;let t=J(`Savings`,``),n=o(`div`,`usage-tiles`),r=Xe(e);r&&n.append(Y(`rtk compression`,r.value,r.sub).tile);let i=Ze(e);return i&&n.append(Y(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function On(){let e=l(j.report);if(e.length===0)return null;let t=J(`Budgets`,`your own ceilings`),n=o(`div`,`usage-budgets`),r=ne(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=o(`div`,`usage-budget`),r=o(`div`,`usage-budget-head`);r.append(o(`span`,`usage-budget-label`,Qe(t.scope))),r.append(o(`span`,`usage-budget-value`,$e(t))),r.append(o(`span`,`usage-budget-pct`,b(u(t)))),e.append(r),e.append(X(u(t),t.tone,et(t))),n.append(e)}return t.append(n),t}function kn(){let e=j.report?.daily||[],t=R,n=on(dt(e,t),N),r=tt.find(e=>e.value===t)?.label||`Day`,i=J(`Over time`,[mt(e)].filter(Boolean).join(`, `));if(i.append(An()),n.length===0)return i.append(o(`p`,`usage-empty`,`No usage.`)),i;let a=Mn(e);a&&i.append(a);let{wrap:s,body:l}=Z([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],N,e=>{N=Xt(N,e),$()},`day`);for(let e of n){let n=String(e.day??``),r=o(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=an(e.models),a=`${t}:${n}`,s=Nn(a,i.length);Q(r,[{node:jn(e,t),title:n},{text:_(e.tokens),numeric:!0},{text:c(e.costUSD),numeric:!0},{node:s,className:`usage-toggle-cell`}]),l.append(r),i.length!==0&&z.has(a)&&l.append(Pn(i))}return i.append(s),i}function An(){let e=o(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of tt){let n=o(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===R?`true`:`false`),n.addEventListener(`click`,()=>{R!==t.value&&(g(`period`),R=t.value,L={kind:`period`,view:t.value},$())}),e.append(n)}return e}function jn(e,t){let n=o(`span`,`usage-period-cell`);return n.append(o(`span`,null,pt(e.day,t))),e.source===`history`&&n.append(o(`span`,`usage-history-tag`,`history`)),n}function Mn(e){let{cells:t,max:n}=yt(e,{today:xe(j.report)});if(t.length===0||n<=0)return null;let r=o(`div`,`usage-heatmap-scroll`),i=o(`div`,`usage-heatmap`);i.setAttribute(`role`,`img`),i.setAttribute(`aria-label`,`Daily usage for the trailing ${Math.max(...t.map(e=>e.week))+1} weeks`);let a=o(`div`,`usage-heatmap-days`);for(let e of _t)a.append(o(`span`,`usage-heatmap-day`,e));for(let e of t){let t=o(`span`,`usage-heatmap-cell`);t.dataset.tone=String(e.tone),e.noData&&(t.dataset.noData=`true`),e.source===`history`&&(t.dataset.source=`history`),t.style.gridColumn=String(e.week+1),t.style.gridRow=String(e.weekday+1),t.title=bt(e),i.append(t)}return r.append(a,i),r}function Nn(e,t){if(t===0)return null;let n=o(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,z.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{g(`expand`),L={kind:`day`,day:e},z.has(e)?(z.delete(e),$()):(z.add(e),$())}),n}function Pn(e){let t=o(`tr`,`usage-row-breakdown`),n=o(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=o(`span`,`usage-model-chip`);e.append(o(`span`,`usage-model-name`,k(t)),o(`span`,`usage-model-value`,`${_(t.tokens)} ${c(t.costUSD)}`)),n.append(e)}return t.append(n),t}function Fn(e,t){let n=o(`span`,`usage-model-name-wrap`),r=kt(e,t);return r&&n.append(o(`span`,`usage-vendor-tag`,r)),n.append(o(`span`,null,k(e))),n}function In(){let e=an(j.report?.models,P),t=j.report?.totals||{},n=_e(t),r=J(`By model`,ve(n));if(e.length===0)return r.append(o(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=Z([{label:`Model`,key:`model`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Input`,numeric:!0,key:`input`},{label:`Output`,numeric:!0,key:`output`},{label:`Cache write`,numeric:!0,key:`cacheCreate`},{label:`Cache read`,numeric:!0,key:`cacheRead`}],P,e=>{P=Xt(P,e),$()},`model`);for(let r of e){let e=o(`tr`,`usage-row`);Q(e,[{node:Fn(r,t),className:`usage-model-cell`,title:k(r)},{text:_(r.tokens),numeric:!0},{text:c(r.costUSD),numeric:!0},{node:dn(x(r[n],t[n])),className:`usage-share-cell`},{text:_(r.input),numeric:!0},{text:_(r.output),numeric:!0},{text:_(r.cacheCreate),numeric:!0},{text:_(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function Ln(){let e=tn(j.report?.sessions,F),t=nn(e,I),n=j.report?.totals||{},r=_e(n),i=J(`By session`,ve(r));if(e.length===0)return i.append(o(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:s}=Z([{label:`Session`,key:`label`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Last activity`,numeric:!0,key:`lastTs`}],F,e=>{F=Xt(F,e),$()},`session`);for(let e of t.rows){let t=o(`tr`,`usage-row`);Kt(e)&&(t.dataset.managed=`true`);let i=O(e),a=o(`span`,`usage-ago`,``);Q(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:_(e.tokens),numeric:!0},{text:c(e.costUSD),numeric:!0},{node:dn(x(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),q.track(a,Number(e.lastTs),v),s.append(t)}return i.append(a),e.length>10&&i.append(Rn(t.hiddenCount)),i}function Rn(e){let t=o(`div`,`usage-overflow`),n=rn(e);n&&t.append(o(`p`,`usage-meta`,n));let r=o(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,I?`true`:`false`),r.addEventListener(`click`,()=>{g(`expand`),L={kind:`sessions-toggle`},I=!I,$()}),t.append(r),t}function zn(){let e=J(`Not available`,``);return e.append(o(`p`,`usage-empty`,f(j.report))),e.append(o(`p`,`usage-empty`,pe)),e}function Bn(){B=null,V=null,H=null,U=null,W=null,G=null,K=null}function $({force:e=!1}={}){if(!M||!e&&s(M))return;j=ie();let t=M.parentElement,n=t?t.scrollTop:0;q.reset(),Bn(),M.textContent=``,Un(),t&&(t.scrollTop=n),Vn()}function Vn(){let e=L;if(L=null,!e)return;let t=Hn(e);if(!t||!M)return;let n=M.querySelector(t);n instanceof HTMLElement&&n.focus()}function Hn(e){return e.kind===`day`?`.usage-toggle[data-usage-day="${CSS.escape(e.day)}"]`:e.kind===`period`?`.usage-period-button[data-period-view="${CSS.escape(e.view)}"]`:e.kind===`sessions-toggle`?`.usage-toggle[data-usage-sessions-toggle="true"]`:e.kind===`sort`?`[data-usage-table="${CSS.escape(e.table)}"] .usage-sort[data-sort-key="${CSS.escape(e.key)}"]`:null}function Un(){if(!M)return;M.append(gn());let e=_n();if(Wt(j.report)){e&&M.append(e),M.append(zn());return}if(!j.report){e&&M.append(e),M.append(o(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,On()].filter(e=>e!==null);M.append(Wn(`usage-band-now`,Sn(),t,{sideFirst:!0}));let n=[Dn()].filter(e=>e!==null);M.append(Wn(`usage-band-spend`,Tn(),n));let r=[wn()].filter(e=>e!==null);M.append(Wn(`usage-band-trend`,kn(),r));let i=bn();i&&M.append(i),M.append(In(),Ln())}function Wn(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=o(`div`,`usage-band ${e}`),a=o(`div`,`usage-band-col`);for(let e of n)a.append(e);return r?(i.append(a,t),i):(i.append(t,a),i)}function Gn(){let e=ue();G&&(G.disabled=e.isPending),K&&(K.textContent=e.text,e.hasFailure?K.dataset.tone=`error`:delete K.dataset.tone)}function Kn(e){e===`refresh-status`?Gn():(j=ie(),e===`sessions`&&j.report&&!Wt(j.report)&&V?.isConnected?pn():$())}function qn(e){if(M)return;let t=o(`div`,`usage-content`);e.appendChild(t),M=t,le(()=>!s(M)),oe(Kn),q.ensure(),$({force:!0})}function Jn(e){e===`shown`&&$({force:!0}),se()}var Yn={mount:qn,refresh:Jn};export{Yn as view};
1
+ import{et as e,it as t,nt as n,rt as r,tt as i}from"./updates-view-core-Z-HI1v-s.js";import{n as a,o,u as s}from"./dom-helpers-C7P3_59O.js";import{An as c,Dn as l,En as u,Fn as d,In as f,Mn as p,Nn as m,On as h,Pn as ee,Tn as te,_ as ne,a as g,c as re,d as ie,jn as ae,kn as _,l as oe,m as v,o as se,p as ce,s as le,u as ue,wn as de}from"./index-NtTpV6Kg.js";var fe=`Estimated list prices, not a bill.`,pe=`Enable in Settings.`,me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],y=/^(\d{4})-(\d{2})-(\d{2})$/,he=new Set([`day`,`model`,`label`]),ge=new Set([`model`,`label`]);function b(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${d(e.toFixed(1))}%`}function _e(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function ve(e){return e===`costUSD`?`share of cost`:`share of tokens`}function x(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function S(e){let t=y.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=me[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function ye(e){let t=be(e);return t.length===0?``:t.length===1?S(t[0]):`${S(t[0])} to ${S(t[t.length-1])}`}function be(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>y.test(e)).sort()}function xe(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:Se(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function Se(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=Ce(e,n);return y.test(r)?r:Ce(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function Ce(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function C(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:n(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function we(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=me[n.getMonth()];return r?`${r} ${n.getDate()} ${i(n)}`:`-`}function Te(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${_(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:_(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:c(e.costPerHour),sub:``}),t}function Ee(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${_(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(c(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${C(e.remainingMinutes)} left in this block`:``;if(t.length===0)return n;let r=`-> ${t.join(`, `)} by block end`;return n?`${r}, ${n}`:r}function De(e,t=Date.now()){let n=Number(e?.startTs),r=Number(e?.endTs);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)return null;let i=(r-n)/6e4,a=Math.min(Math.max((t-n)/6e4,0),i);return{totalMinutes:i,elapsedMinutes:a,remainingMinutes:Math.max(i-a,0),pct:Math.round(a/i*100)}}function Oe(e){let t=ae(e);return t===null?``:`${Math.round(t)}% of ${_(e?.max)} tokens, the largest completed block seen`}function ke(e,t){let n=m(e,t);return n===null?``:n>=100?`On this burn rate the block ends past that reference, at ${Math.round(n)}% of it.`:`On this burn rate the block ends at ${Math.round(n)}% of that reference.`}var Ae=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function je(e){let t=Ae.map(t=>{let n=Number(e?.[t.key]);return{spec:t,tokens:Number.isFinite(n)&&n>0?n:0}}),n=t.reduce((e,t)=>e+t.tokens,0);return n<=0?[]:t.map(e=>{let t=x(e.tokens,n)??0,r=_(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${b(t)}`}})}var Me=Object.freeze({interactive:`Interactive`,"pr-review":`PR review`,"team-review":`PR reviews`,posthog:`PostHog`,"my-prs":`Keep mergeable`,workflows:`Workflows`,"change-map":`Change map`,visions:`Visions`,benchmark:`Benchmarks`,"agent-spawn":`Agent API`,"task-title":`Task titles`,other:`Other`}),Ne=`Sessions spawned by Glimmervoid; terminal sessions count as other`,Pe=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function Fe(e){let n=t(e,``);return n?Me[n]||n:Me.other}function w(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function Ie(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function Le(e){return w(e).some(e=>Ie(e.lane))}var Re=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function ze(e,t,n){let r=p(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function Be(e,t,n,i){if(!Array.isArray(t))return null;let a=t.filter(e=>e&&typeof e.lane==`string`),o=a.reduce((e,t)=>e+r(t.costUSD,0),0),s=a.reduce((e,t)=>e+r(t.tokens,0),0),c=a.filter(e=>Ie(e.lane)).map(e=>({lane:String(e.lane),label:Fe(e.lane),tokens:r(e.tokens,0),costUSD:r(e.costUSD,0)})),l=c.reduce((e,t)=>e+t.costUSD,0),u=c.reduce((e,t)=>e+t.tokens,0),d=o>0?x(l,o):x(u,s),f=ze(n,e,i),p=d===null||f===null?null:d/100*f;return{key:e,label:Re[e],tokens:u,costUSD:l,sharePct:d,planPct:p,lanes:c}}function Ve(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:D.map(e=>Be(e.key,r[e.key],t,n)).filter(e=>e!==null)}function He(e){return e.planPct===null?``:`about ${b(e.planPct)} of plan`}function Ue(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?c(e.costUSD):_(e.tokens)}`).join(`, `)}var We=`team-review`;function Ge(e){if(!Array.isArray(e?.byLane))return null;let t=w(e).find(e=>e.lane===We),n=r(t?.costUSD,0),i=r(t?.tokens,0),a=_e(e?.totals),o=x(a===`costUSD`?n:i,e?.totals?.[a]),s=o===null?``:`${b(o)} of range ${a===`costUSD`?`cost`:`tokens`}`,l=[c(n),s,Ke(t?.sessions)].filter(Boolean).join(`, `);return{label:Fe(We),value:_(i),sub:l}}function Ke(e){let t=r(e,null);return t===null||t<=0?``:`${h(t)} ${t===1?`session`:`sessions`}`}function qe(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function Je(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function Ye(e){return qe(e)!==null||Je(e)!==null}function Xe(e){let t=qe(e);if(!t)return null;let n=r(t.commands,0),i=n===1?`command`:`commands`;return{value:`${_(r(t.savedTokens,0))} tokens`,sub:`${b(r(t.savingsPct,0))} avg across ${h(n)} ${i}`}}function Ze(e){let t=Je(e);if(!t)return null;let n=_(r(t.cacheReadTokens,0)),i=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),a=`${n} cache read tokens`;if(i.length===0)return{value:c(r(t.savedUSD,0)),sub:a};let o=i.length===1?`model`:`models`;return{value:c(r(t.savedUSD,0)),sub:`${a}, a floor (${i.length} unpriced ${o})`}}function Qe(e){return e===`monthly`?`this month`:`today`}function $e(e){return`${c(r(e?.spentUsd,0))} of ${c(r(e?.budgetUsd,0))}`}function et(e){return`${Qe(e?.scope)} spend against budget`}var tt=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function nt(e){let t=y.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function rt(t){let n=nt(t);if(!n)return``;let r=(n.getDay()+6)%7;return n.setDate(n.getDate()-r),e(n)}function it(e){let t=y.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function at(e){return{key:e,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0,days:0,sources:new Set,vendorSet:new Set,modelByName:new Map}}function ot(e,t){e.tokens+=r(t?.tokens,0),e.costUSD+=r(t?.costUSD,0),e.input+=r(t?.input,0),e.output+=r(t?.output,0),e.cacheCreate+=r(t?.cacheCreate,0),e.cacheRead+=r(t?.cacheRead,0),e.days+=1,e.sources.add(t?.source===`history`?`history`:`live`);let n=Array.isArray(t?.vendors)?t.vendors:[];for(let t of n)e.vendorSet.add(t);let i=t?.models||[];for(let t of i){t?.vendor&&e.vendorSet.add(t.vendor);let n=k(t),i=e.modelByName.get(n)||{key:n,model:t?.model??n,vendor:t?.vendor,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0};i.tokens+=r(t?.tokens,0),i.costUSD+=r(t?.costUSD,0),i.input+=r(t?.input,0),i.output+=r(t?.output,0),i.cacheCreate+=r(t?.cacheCreate,0),i.cacheRead+=r(t?.cacheRead,0),e.modelByName.set(n,i)}}function st(e){let{modelByName:t,sources:n,vendorSet:r,...i}=e,a={...i};return a.day=e.key,a.models=Array.from(t.values()).sort((e,t)=>t.tokens-e.tokens),a.source=n.has(`live`)?`live`:`history`,a.vendors=Array.from(r).sort(),a}function ct(e,t){let n=new Map,r=Array.isArray(e)?e:[];for(let e of r){let r=t(e?.day);if(!r)continue;let i=n.get(r)||at(r);ot(i,e),n.set(r,i)}return Array.from(n.values()).map(st)}function lt(e){return ct(e,rt)}function ut(e){return ct(e,it)}function dt(e,t){return t===`week`?lt(e):t===`month`?ut(e):Array.isArray(e)?[...e]:[]}var ft=/^(\d{4})-(\d{2})$/;function pt(e,t){if(t===`month`){let t=ft.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=me[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=S(e);return t===`-`?t:`week of ${t}`}return S(e)}function mt(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var ht=16,gt=Object.freeze([.05,.25,.5,.75]),_t=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function vt(e,t){let n=r(e,0),i=r(t,0);if(n<=0||i<=0)return 0;let a=n/i,o=1;for(let e=0;e<gt.length;e+=1)a>=gt[e]&&(o=e+1);return o}function yt(t,{weeks:n=ht,today:i=new Date}={}){let a=(Array.isArray(t)?t:[]).filter(e=>y.test(String(e?.day??``))),o=new Map(a.map(e=>[String(e.day),e])),s=i instanceof Date?i:new Date(i),c=Number.isFinite(s.getTime())?s:new Date,l=typeof i==`string`&&y.test(i)?i:e(c),u=nt(rt(l));if(!u)return{cells:[],max:0,weeks:0};let d=new Date(u.getFullYear(),u.getMonth(),u.getDate()-(n-1)*7,12),f=e(d),p=[],m=0,h=null;for(let e of a){let t=String(e.day);(h===null||t<h)&&(h=t),!(t<f||t>l)&&(m=Math.max(m,r(e.tokens,0)))}for(let t=0;t<n;t+=1)for(let n=0;n<7;n+=1){let i=new Date(d.getFullYear(),d.getMonth(),d.getDate()+t*7+n,12),a=e(i),s=o.get(a)||null,c=a>l,u=h!==null&&a<h;p.push({day:a,week:t,weekday:n,tokens:r(s?.tokens,0),costUSD:r(s?.costUSD,0),source:s?.source===`history`?`history`:s?`live`:null,noData:c||u||!s&&h===null,tone:vt(s?.tokens,m)})}return{cells:p,max:m,weeks:n}}function bt(e){let t=S(e?.day);if(e?.noData)return`${t}: no data`;let n=r(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${_(n)} tokens, ${c(r(e?.costUSD,0))}`}function xt(e){if(!e)return``;let t=r(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${Et(e.ratio)} the ${n} average: ${c(e.todayUsd)} against ${c(e.baselineUsd)}.`}function St(e){return e?`This block is burning ${Et(e.ratio)} the usual rate: ${_(e.current)} tokens per minute against ${_(e.baseline)}.`:``}function Ct(e){return[xt(e?.daily),St(e?.burn)].filter(Boolean).join(` `)}function wt(e){return e?.daily||e?.burn?`warn`:`ok`}function Tt(e){return!!(e?.daily||e?.burn)}function Et(e){let t=r(e,null);return t===null?`-`:`${d(t.toFixed(1))}x`}var Dt=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function Ot(e){let n=t(e,``);return n?Dt[n]||n:Dt.claude}function kt(e,t){return T(t)?Ot(e?.vendor):``}function At(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>r(t[n]?.tokens,0)-r(t[e]?.tokens,0)).map(e=>({vendor:e,label:Ot(e),tokens:r(t[e]?.tokens,0),costUSD:r(t[e]?.costUSD,0)}))}function T(e){let t=e?.byVendor;if(!t||typeof t!=`object`)return!1;let n=Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`);return n.length>1||n.length===1&&n[0]!==`claude`}var jt=`Claude only`;function E(e){return T(e)?jt:``}var Mt=36e5,D=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]),Nt=Object.freeze([{vendor:`claude`,label:`Claude Code`},{vendor:`codex`,label:`Codex`}]);function Pt(e,t){let n=`official, from ${Nt.filter(({vendor:t})=>e.includes(t)).map(({label:e})=>e).join(` and `)}`,r=e.length===1&&e[0]===`claude`?E(t):``;return r?`${n}, ${r}`:n}function Ft(e){return D.some(t=>p(e,t.key)!==null)}function It(e){return e===`estimated`?`estimated from the largest completed block`:``}function Lt(e){let t=r(e?.pct,null);return t===null?`-`:`${b(t)} used`}function Rt(e,t=Date.now()){let n=r(e,null);if(n===null||n<=0)return``;let i=(n-t)/6e4;return i<=0?`resetting now`:`resets in ${C(i)}`}function zt(e,t=Date.now()){let n=r(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function Bt(e,t=Date.now()){let n=r(e,null);return n===null||n<=0||t-n>Mt}function Vt(e,t=Date.now()){if(!Bt(e,t))return``;let n=zt(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function Ht(e){let t=(Array.isArray(e)?e:[]).map(e=>String(e)).filter(e=>e);if(t.length===0)return``;let n=t.length===1?`model`:`models`;return`No price for ${t.length} ${n}: ${t.join(`, `)}. Their cost counts as zero here.`}function Ut(e){let n=t(e?.warning,``);return n?`Glimmervoid could not read every transcript location: ${n}`:``}function Wt(e){return f(e)!==``}function Gt(e){let t=String(e??``).trim();if(!t)return``;let n=t.split(/[\\/]+/).filter(e=>e);return n.length===0?t:n[n.length-1]}function Kt(e){return typeof e?.id==`string`&&e.id!==``}function O(e){let n=t(e?.label,``);return Kt(e)&&n?n:Gt(e?.project)||n||`unknown project`}function k(e){let n=typeof e==`string`?e:e?.model;return t(n,`unknown model`)}function qt(e){return String(e?.day??``)}function Jt(e,t,n){if(!he.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?qt(e):n(e)}function A(e,t,n,r=O){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=Jt(e,t,r),o=Jt(n,t,r);if(typeof i==`string`||typeof o==`string`)return a*String(i).localeCompare(String(o));if(i!==o)return a*(i-o);let s=Number(e?.tokens),c=Number(n?.tokens),l=Number.isFinite(s)?s:0,u=Number.isFinite(c)?c:0;return l===u?r(e).localeCompare(r(n)):u-l})}function Yt(e){return ge.has(e)?`asc`:`desc`}function Xt(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:Yt(t)}}function Zt(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var Qt=Object.freeze({key:`lastTs`,dir:`desc`}),$t=Object.freeze({key:`tokens`,dir:`desc`}),en=Object.freeze({key:`day`,dir:`desc`});function tn(e,t=Qt){return A(e,t.key,t.dir,O)}function nn(e,t,n=10){if(!Array.isArray(e))return{rows:[],hiddenCount:0};let r=Number.isFinite(n)?Math.max(0,Math.floor(n)):10;return t||e.length<=r?{rows:e,hiddenCount:0}:{rows:e.slice(0,r),hiddenCount:e.length-r}}function rn(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${h(t)} hidden`}function an(e,t=$t){return A(e,t.key,t.dir,k)}function on(e,t=en){return A(e,t.key,t.dir,qt)}function sn(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function cn(e,t=8){return(Array.isArray(e)?e:[]).filter(e=>e&&e.isGap!==!0).sort((e,t)=>(Number(t?.startTs)||0)-(Number(e?.startTs)||0)).slice(0,Math.max(0,t)).map(e=>({startTs:Number(e.startTs),tokens:typeof e.tokens==`number`&&Number.isFinite(e.tokens)?e.tokens:0,costUSD:typeof e.costUSD==`number`&&Number.isFinite(e.costUSD)?e.costUSD:0,isActive:e.isActive===!0}))}var j=ie(),M=null,N=en,P=$t,F=Qt,I=!1,L=null,R=`day`,z=new Set,B=null,V=null,H=null,U=null,W=null,G=null,K=null,q=ce(()=>M),J=(e,t)=>a(`usage`,e,t);function Y(e,t,n,r){let i=o(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=o(`span`,`usage-tile-value`,t);i.append(a,o(`span`,`usage-tile-label`,e));let s=n?o(`span`,`usage-tile-sub`,n):null;return s&&i.append(s),{tile:i,valueEl:a,subEl:s}}function ln(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function X(e,t,n){let r=o(`div`,`usage-meter`);r.dataset.tone=String(t),r.setAttribute(`role`,`progressbar`),r.setAttribute(`aria-valuemin`,`0`),r.setAttribute(`aria-valuemax`,`100`),r.setAttribute(`aria-label`,n);let i=o(`span`,`usage-meter-fill`);return r.append(i),un(r,e),r}function un(e,t){if(!e)return;let n=ln(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function Z(e,t,n,r){let i=o(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=o(`table`,`usage-table`),s=o(`thead`),c=o(`tr`);for(let i of e){let e=o(`th`,i.numeric?`usage-num`:null);if(e.scope=`col`,!i.key){e.textContent=i.label,c.append(e);continue}let a=i.key;e.setAttribute(`aria-sort`,Zt(t,a));let s=o(`button`,`usage-sort`,i.label);s.type=`button`,s.dataset.sortKey=a,s.addEventListener(`click`,()=>{g(`sort`),L={kind:`sort`,table:r,key:a},n(a)}),e.append(s),c.append(e)}s.append(c);let l=o(`tbody`);return a.append(s,l),i.append(a),{wrap:i,body:l}}function Q(e,t){for(let n of t){let t=o(`td`,n.numeric?`usage-num`:n.className||null,n.node?null:n.text);n.node&&t.append(n.node),n.title&&(t.title=n.title),n.span&&(t.colSpan=n.span),e.append(t)}}function dn(e){let t=o(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(o(`span`,`usage-share-text`,b(e))),t;let n=o(`span`,`usage-share-bar`),r=o(`span`,`usage-share-fill`);return r.style.width=`${ln(e)}%`,n.append(r),t.append(n,o(`span`,`usage-share-text`,b(e))),t}function fn(){if(!B?.isConnected)return;let e=Number(j.report?.ts);B.textContent=Number.isFinite(e)&&e>0?`Report ${v(e)}`:``}function pn(){if(!V?.isConnected)return;let e=Number(j.sessions?.ts);V.textContent=Number.isFinite(e)&&e>0?`Sessions ${v(e)}`:``}function mn(){let e=De(j.report?.activeBlock);e&&(H?.isConnected&&(H.textContent=`${e.pct}%`),U?.isConnected&&(U.textContent=`${C(e.remainingMinutes)} left`),W?.isConnected&&un(W,e.pct))}function hn(){let e=o(`div`,`usage-controls`),t=o(`label`,`usage-control`);t.append(o(`span`,`usage-control-label`,`Range`));let n=o(`select`,`usage-select`);for(let e of de){let t=o(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=j.rangeValue,n.addEventListener(`change`,()=>{g(`range`),re(n.value),se()}),t.append(n);let r=o(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>{g(`refresh`),se({force:!0})});let i=o(`span`,`usage-refresh-status`,``);return G=r,K=i,Gn(),e.append(t,r,i),e}function gn(){let e=J(`Usage`,ye(j.report?.daily||[]));e.append(hn()),B=o(`p`,`usage-meta`,``),e.append(B),fn(),q.onTick(fn);let t=Ut(j.report);t&&e.append(o(`p`,`usage-warning`,t));let n=Ht(j.report?.pricing?.missing);return n&&e.append(o(`p`,`usage-warning`,n)),e}function _n(){let e=Nt.filter(({vendor:e})=>Ft(j.planLimitsByVendor[e]));if(e.length===0)return null;let t=J(`Plan limits`,Pt(e.map(({vendor:e})=>e),j.report?.totals)),n=e.length>1,r=o(`div`,`usage-plan-vendors`);for(let{vendor:t,label:i}of e)r.append(vn(j.planLimitsByVendor[t],n?i:null));return t.append(r),t}function vn(e,t){let n=o(`div`,`usage-plan-vendor`);t&&n.append(o(`p`,`usage-plan-vendor-label`,t));let r=Vt(e?.ts);if(r){let e=o(`p`,`usage-meta`,r);e.dataset.tone=`warn`,n.append(e)}let i=o(`div`,`usage-plan`);for(let t of D){let n=p(e,t.key);n&&i.append(yn(t,n))}let a=o(`p`,`usage-meta`,``);n.append(i,a);let s=()=>{if(!a.isConnected)return;let t=zt(e?.ts);a.textContent=t?`Plan ${t}`:``};return s(),q.onTick(s),n}function yn(e,t){let n=o(`div`,`usage-plan-window`),r=o(`div`,`usage-plan-head`);r.append(o(`span`,`usage-plan-label`,e.label)),r.append(o(`span`,`usage-plan-used`,Lt(t)));let i=o(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(X(t.pct,ee(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=Rt(t.resetsAtMs))};return a(),q.onTick(a),n}function bn(){let e=Ve(j.report,j.planLimitsByVendor.claude),t=xn();if(e.length===0&&!t)return null;let n=J(`Glimmervoid overhead`,e.length>0?Pe:null);if(e.length>0){let t=o(`div`,`usage-tiles`);for(let n of e){let e=[He(n),c(n.costUSD)].filter(Boolean).join(`, `);t.append(Y(`${n.label}, share of Claude use`,b(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=Ue(t);e&&n.append(o(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(o(`p`,`usage-meta`,`Selected range by lane. ${Ne}`)),n.append(t)),n}function xn(){if(!Le(j.report))return null;let e=w(j.report),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=Z([{label:`Lane`},{label:`Cost`,numeric:!0},{label:`Tokens`,numeric:!0},{label:`Sessions`,numeric:!0},{label:`Share`,numeric:!0}],null,()=>{},`lane`);for(let n of e){let e=o(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),Q(e,[{text:Fe(n.lane),className:`usage-lane-cell`},{text:c(n.costUSD),numeric:!0},{text:_(n.tokens),numeric:!0},{text:Ke(n.sessions),numeric:!0},{node:dn(x(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function Sn(){let e=j.report?.activeBlock,t=j.report?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=E(j.report?.totals),i=J(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(o(`p`,`usage-empty`,`No active block.`));let e=Cn();return e&&i.append(e),i}let a=te(j.report,j.planLimitsByVendor.claude),s=o(`div`,`usage-tiles`);s.append(Y(`block tokens`,_(e.tokens??0),c(e.costUSD??0),a).tile);for(let t of Te(e.burn))s.append(Y(t.label,t.value,t.sub,a).tile);let l=De(e);if(l){let e=Y(`elapsed`,`${l.pct}%`,`${C(l.remainingMinutes)} left`);H=e.valueEl,U=e.subEl,s.append(e.tile)}i.append(s),l&&(W=X(l.pct,`ok`,`Elapsed share of the current block window`),i.append(W),q.onTick(mn));let u=Ee(e.projection);if(u){let e=o(`p`,`usage-projection`,u);e.dataset.tone=a,i.append(e)}let d=Cn();d&&i.append(d);let f=Oe(j.report?.tokenLimit);if(!f)return i;let p=ae(j.report?.tokenLimit),m=te(j.report);i.append(X(p,m,`Share of the largest completed block seen, estimated`));let h=o(`p`,`usage-meta`,f);h.dataset.tone=m,i.append(h),i.append(o(`p`,`usage-provenance`,It(`estimated`)));let ee=ke(e.projection,j.report?.tokenLimit);if(ee){let e=o(`p`,`usage-meta`,ee);e.dataset.tone=m,i.append(e)}return i}function Cn(){let e=j.report?.anomaly;if(!Tt(e))return null;let t=o(`p`,`usage-meta`,Ct(e));return t.dataset.tone=wt(e),t}function wn(){let e=cn(j.report?.blocks);if(e.length===0)return null;let t=E(j.report?.totals),n=J(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=o(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=o(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(o(`span`,`usage-block-label`,we(t.startTs)));let n=o(`span`,`usage-block-bar`),a=o(`span`,`usage-block-fill`);a.style.width=`${ln(x(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(o(`span`,`usage-block-value`,`${_(t.tokens)} ${c(t.costUSD)}`)),r.append(e)}return n.append(r),n}function Tn(){let e=j.report?.totals||{},t=sn(j.report?.daily,xe(j.report)),n=J(`Totals`,[fe,j.report?.tz?`TZ ${j.report.tz}`:``].filter(Boolean).join(` `)),r=te(j.report,j.planLimitsByVendor.claude),i=o(`div`,`usage-tiles`);i.append(Y(`today`,_(t?.tokens??0),c(t?.costUSD??0),r).tile),i.append(Y(`range total`,_(e.tokens??0),c(e.costUSD??0)).tile);let a=Ge(j.report);a&&i.append(Y(a.label,a.value,a.sub).tile),n.append(i);let s=En(e);s&&n.append(s);let l=T(e)?At(e):[];if(l.length>0){let e=o(`div`,`usage-tiles usage-vendor-tiles`);for(let t of l)e.append(Y(t.label,_(t.tokens),c(t.costUSD)).tile);n.append(e)}return V=o(`p`,`usage-meta`,``),n.append(V),pn(),q.onTick(pn),n}function En(e){let t=je(e);if(t.length===0)return null;let n=o(`div`,`usage-compo`),r=o(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=o(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=o(`div`,`usage-compo-legend`);for(let e of t){let t=o(`span`,`usage-compo-item`),n=o(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,o(`span`,`usage-compo-label`,e.label),o(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function Dn(){let e=j.report?.savings;if(!Ye(e))return null;let t=J(`Savings`,``),n=o(`div`,`usage-tiles`),r=Xe(e);r&&n.append(Y(`rtk compression`,r.value,r.sub).tile);let i=Ze(e);return i&&n.append(Y(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function On(){let e=l(j.report);if(e.length===0)return null;let t=J(`Budgets`,`your own ceilings`),n=o(`div`,`usage-budgets`),r=ne(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=o(`div`,`usage-budget`),r=o(`div`,`usage-budget-head`);r.append(o(`span`,`usage-budget-label`,Qe(t.scope))),r.append(o(`span`,`usage-budget-value`,$e(t))),r.append(o(`span`,`usage-budget-pct`,b(u(t)))),e.append(r),e.append(X(u(t),t.tone,et(t))),n.append(e)}return t.append(n),t}function kn(){let e=j.report?.daily||[],t=R,n=on(dt(e,t),N),r=tt.find(e=>e.value===t)?.label||`Day`,i=J(`Over time`,[mt(e)].filter(Boolean).join(`, `));if(i.append(An()),n.length===0)return i.append(o(`p`,`usage-empty`,`No usage.`)),i;let a=Mn(e);a&&i.append(a);let{wrap:s,body:l}=Z([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],N,e=>{N=Xt(N,e),$()},`day`);for(let e of n){let n=String(e.day??``),r=o(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=an(e.models),a=`${t}:${n}`,s=Nn(a,i.length);Q(r,[{node:jn(e,t),title:n},{text:_(e.tokens),numeric:!0},{text:c(e.costUSD),numeric:!0},{node:s,className:`usage-toggle-cell`}]),l.append(r),i.length!==0&&z.has(a)&&l.append(Pn(i))}return i.append(s),i}function An(){let e=o(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of tt){let n=o(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===R?`true`:`false`),n.addEventListener(`click`,()=>{R!==t.value&&(g(`period`),R=t.value,L={kind:`period`,view:t.value},$())}),e.append(n)}return e}function jn(e,t){let n=o(`span`,`usage-period-cell`);return n.append(o(`span`,null,pt(e.day,t))),e.source===`history`&&n.append(o(`span`,`usage-history-tag`,`history`)),n}function Mn(e){let{cells:t,max:n}=yt(e,{today:xe(j.report)});if(t.length===0||n<=0)return null;let r=o(`div`,`usage-heatmap-scroll`),i=o(`div`,`usage-heatmap`);i.setAttribute(`role`,`img`),i.setAttribute(`aria-label`,`Daily usage for the trailing ${Math.max(...t.map(e=>e.week))+1} weeks`);let a=o(`div`,`usage-heatmap-days`);for(let e of _t)a.append(o(`span`,`usage-heatmap-day`,e));for(let e of t){let t=o(`span`,`usage-heatmap-cell`);t.dataset.tone=String(e.tone),e.noData&&(t.dataset.noData=`true`),e.source===`history`&&(t.dataset.source=`history`),t.style.gridColumn=String(e.week+1),t.style.gridRow=String(e.weekday+1),t.title=bt(e),i.append(t)}return r.append(a,i),r}function Nn(e,t){if(t===0)return null;let n=o(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,z.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{g(`expand`),L={kind:`day`,day:e},z.has(e)?(z.delete(e),$()):(z.add(e),$())}),n}function Pn(e){let t=o(`tr`,`usage-row-breakdown`),n=o(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=o(`span`,`usage-model-chip`);e.append(o(`span`,`usage-model-name`,k(t)),o(`span`,`usage-model-value`,`${_(t.tokens)} ${c(t.costUSD)}`)),n.append(e)}return t.append(n),t}function Fn(e,t){let n=o(`span`,`usage-model-name-wrap`),r=kt(e,t);return r&&n.append(o(`span`,`usage-vendor-tag`,r)),n.append(o(`span`,null,k(e))),n}function In(){let e=an(j.report?.models,P),t=j.report?.totals||{},n=_e(t),r=J(`By model`,ve(n));if(e.length===0)return r.append(o(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=Z([{label:`Model`,key:`model`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Input`,numeric:!0,key:`input`},{label:`Output`,numeric:!0,key:`output`},{label:`Cache write`,numeric:!0,key:`cacheCreate`},{label:`Cache read`,numeric:!0,key:`cacheRead`}],P,e=>{P=Xt(P,e),$()},`model`);for(let r of e){let e=o(`tr`,`usage-row`);Q(e,[{node:Fn(r,t),className:`usage-model-cell`,title:k(r)},{text:_(r.tokens),numeric:!0},{text:c(r.costUSD),numeric:!0},{node:dn(x(r[n],t[n])),className:`usage-share-cell`},{text:_(r.input),numeric:!0},{text:_(r.output),numeric:!0},{text:_(r.cacheCreate),numeric:!0},{text:_(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function Ln(){let e=tn(j.report?.sessions,F),t=nn(e,I),n=j.report?.totals||{},r=_e(n),i=J(`By session`,ve(r));if(e.length===0)return i.append(o(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:s}=Z([{label:`Session`,key:`label`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Last activity`,numeric:!0,key:`lastTs`}],F,e=>{F=Xt(F,e),$()},`session`);for(let e of t.rows){let t=o(`tr`,`usage-row`);Kt(e)&&(t.dataset.managed=`true`);let i=O(e),a=o(`span`,`usage-ago`,``);Q(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:_(e.tokens),numeric:!0},{text:c(e.costUSD),numeric:!0},{node:dn(x(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),q.track(a,Number(e.lastTs),v),s.append(t)}return i.append(a),e.length>10&&i.append(Rn(t.hiddenCount)),i}function Rn(e){let t=o(`div`,`usage-overflow`),n=rn(e);n&&t.append(o(`p`,`usage-meta`,n));let r=o(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,I?`true`:`false`),r.addEventListener(`click`,()=>{g(`expand`),L={kind:`sessions-toggle`},I=!I,$()}),t.append(r),t}function zn(){let e=J(`Not available`,``);return e.append(o(`p`,`usage-empty`,f(j.report))),e.append(o(`p`,`usage-empty`,pe)),e}function Bn(){B=null,V=null,H=null,U=null,W=null,G=null,K=null}function $({force:e=!1}={}){if(!M||!e&&s(M))return;j=ie();let t=M.parentElement,n=t?t.scrollTop:0;q.reset(),Bn(),M.textContent=``,Un(),t&&(t.scrollTop=n),Vn()}function Vn(){let e=L;if(L=null,!e)return;let t=Hn(e);if(!t||!M)return;let n=M.querySelector(t);n instanceof HTMLElement&&n.focus()}function Hn(e){return e.kind===`day`?`.usage-toggle[data-usage-day="${CSS.escape(e.day)}"]`:e.kind===`period`?`.usage-period-button[data-period-view="${CSS.escape(e.view)}"]`:e.kind===`sessions-toggle`?`.usage-toggle[data-usage-sessions-toggle="true"]`:e.kind===`sort`?`[data-usage-table="${CSS.escape(e.table)}"] .usage-sort[data-sort-key="${CSS.escape(e.key)}"]`:null}function Un(){if(!M)return;M.append(gn());let e=_n();if(Wt(j.report)){e&&M.append(e),M.append(zn());return}if(!j.report){e&&M.append(e),M.append(o(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,On()].filter(e=>e!==null);M.append(Wn(`usage-band-now`,Sn(),t,{sideFirst:!0}));let n=[Dn()].filter(e=>e!==null);M.append(Wn(`usage-band-spend`,Tn(),n));let r=[wn()].filter(e=>e!==null);M.append(Wn(`usage-band-trend`,kn(),r));let i=bn();i&&M.append(i),M.append(In(),Ln())}function Wn(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=o(`div`,`usage-band ${e}`),a=o(`div`,`usage-band-col`);for(let e of n)a.append(e);return r?(i.append(a,t),i):(i.append(t,a),i)}function Gn(){let e=ue();G&&(G.disabled=e.isPending),K&&(K.textContent=e.text,e.hasFailure?K.dataset.tone=`error`:delete K.dataset.tone)}function Kn(e){e===`refresh-status`?Gn():(j=ie(),e===`sessions`&&j.report&&!Wt(j.report)&&V?.isConnected?pn():$())}function qn(e){if(M)return;let t=o(`div`,`usage-content`);e.appendChild(t),M=t,le(()=>!s(M)),oe(Kn),q.ensure(),$({force:!0})}function Jn(e){e===`shown`&&$({force:!0}),se()}var Yn={mount:qn,refresh:Jn};export{Yn as view};
@@ -1 +1 @@
1
- import{Q as e,Y as t,n}from"./updates-view-core-Z-HI1v-s.js";import{o as r,u as i}from"./dom-helpers-C7P3_59O.js";import{$t as a,Ir as o,Jt as s,Kt as c,Qt as l,Xt as u,Yt as d,Zt as f,_ as p,qt as m}from"./index-BZuCoMuc.js";var h=`No findings. Open a markdown file in a connected editor.`;function g(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function _(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function v(e){let t=typeof e==`string`?e:``;if(!t)return``;let n=t.lastIndexOf(`/`),r=n===-1?t:t.slice(n+1);if(!r)return t;try{return decodeURIComponent(r)}catch{return r}}function y(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function b(e){let t=y(e);return t===1?`1 finding`:`${t} findings`}function x(e){let t=y(e);return t===1?`1 comment`:`${t} comments`}function S(e){let t=y(e?.findings?.length),n=y(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(b(t)),n>0&&i.push(x(n)),i.length>0?i.join(`, `):b(0)}function C(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function w(e,t=new Map,n=new Map){let r=[],i=new Set([...e.keys(),...t.keys(),...n.keys()]);for(let a of i){let i=e.get(a),o=t.get(a),s=n.get(a)||null,c=Array.isArray(i)?i:[],l=Array.isArray(o)?o:[];(c.length!==0||l.length!==0||s)&&r.push({uri:a,name:v(a)||a,hand:s,findings:[...c].sort((e,t)=>_(e)-_(t)||g(e)-g(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>T(e.name,t.name)||T(e.uri,t.uri)),r}function T(e,t){return e<t?-1:+(e>t)}var ee=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function te(e){let t=y(e);return t===1?`1 fix`:`${t} fixes`}var ne=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,E={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function D(e){let t=typeof e==`string`?e:``;return E[t]||t||`source`}function O(n,r=Date.now()){let i=Number(n);return!Number.isFinite(i)||i<=0?``:e(Number(r)-i,t)}function k(e){let t=y(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function A(e){let t=y(e);return t===1?`1 event`:`${t} events`}function j(e){if(!e?.root)return`machine`;let t=e.root.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n===-1?t:t.slice(n+1)}var M=null,N=null,P=null,F=null,I=null;function L(){let e=r(`section`,`visions-intent`);e.append(r(`h2`,`visions-intent-title`,`Intent`));let t=r(`div`,`visions-intent-list`);return e.append(t),P={list:t},e}function R(e){let t=r(`div`,`visions-intent-item`),n=r(`div`,`visions-intent-head`);n.append(r(`span`,`visions-intent-scope`,e.label),r(`span`,`visions-intent-meta`,e.meta));let i=r(`p`,`visions-intent-text`,e.text);return i.classList.toggle(`visions-intent-none`,!e.hasText),t.classList.toggle(`visions-intent-active`,e.active===!0),t.append(n,i),t}function z(){if(!P)return;let{intent:e,projectNamesById:t}=s();P.list.replaceChildren(...a(e,t).map(R))}function B(e){let t=r(`section`,`visions-doc`),n=r(`div`,`visions-doc-head`),i=r(`h2`,`visions-doc-name`);if(i.textContent=e.name,i.title=e.uri,n.append(i,r(`span`,`visions-doc-count`,S(e))),t.append(n),e.hand&&t.append(V(e.hand)),e.findings.length>0){let n=r(`div`,`visions-findings`);for(let t of e.findings)n.append(U(t));t.append(n)}if(e.comments.length>0){let n=r(`div`,`visions-comments`);for(let t of e.comments)n.append(H(t));t.append(n)}return t}function V(e){let t=r(`div`,`visions-hand`);return t.textContent=C(e),t}function H(e){let t=r(`div`,`visions-comment`),n=r(`div`,`visions-comment-head`);n.append(r(`span`,`visions-comment-chip`,`visions`)),n.append(r(`span`,`visions-comment-line`,d(e))),t.append(n);let i=r(`p`,`visions-comment-message`);return i.textContent=e?.message==null?``:String(e.message),t.append(i),t}function U(e){let t=r(`div`,`visions-finding`);t.append(r(`span`,`visions-finding-line`,u(e)));let n=e?.code==null?``:String(e.code);n&&t.append(r(`span`,`visions-finding-code`,n));let i=r(`span`,`visions-finding-message`);return i.textContent=e?.message==null?``:String(e.message),t.append(i),t}function W({force:e=!1}={}){if(!N||!e&&i(M))return;N.textContent=``;let{findingsByUri:t,commentsByUri:n,handsByUri:a,isEnabled:o}=s(),c=w(t,n,a);if(c.length===0){let e=r(`p`,`visions-empty`,h);if(o===!1){let t=p(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}N.append(e)}else for(let e of c)N.append(B(e))}function G(){let e=r(`section`,`visions-activity`),t=r(`div`,`visions-activity-head`);t.append(r(`h2`,`visions-activity-title`,`Activity`));let n=r(`span`,`visions-activity-count`);t.append(n),e.append(t);let i=r(`div`,`visions-activity-list`);e.append(i);let a=r(`p`,`visions-activity-overflow`);return e.append(a),F={count:n,list:i,overflow:a},e}function K(e,t){let n=r(`div`,`visions-activity-row`);n.append(r(`span`,`visions-activity-source`,D(e.source))),n.append(r(`span`,`visions-activity-age`,O(e.ts,t))),n.append(r(`span`,`visions-activity-scope`,j(e)));let i=r(`span`,`visions-activity-summary`);return i.textContent=e.summary,n.append(i),n}function q({force:e=!1}={}){if(!F||!e&&i(M))return;let{count:t,list:n,overflow:a}=F,{activityEvents:o,activityOverflow:c}=s();if(t.textContent=A(o.length),n.textContent=``,o.length===0){n.append(r(`p`,`visions-empty`,ne)),a.textContent=``;return}let l=Date.now();for(let e of o)n.append(K(e,l));a.textContent=k(c)}function J(){let e=r(`section`,`visions-fixes`),t=r(`div`,`visions-fixes-head`);t.append(r(`h2`,`visions-fixes-title`,`Fixes`));let n=r(`span`,`visions-fixes-count`);t.append(n),e.append(t);let i=r(`div`,`visions-fixes-list`);return e.append(i),I={count:n,list:i},e}function Y(e){let t=r(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=r(`span`,`visions-fix-file`);n.textContent=v(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(r(`span`,`visions-fix-line`,f(e))),t.append(r(`span`,`visions-fix-outcome`,l(e))),t.append(r(`span`,`visions-fix-code`,e.code||``));let i=r(`span`,`visions-fix-message`);return i.textContent=e.message,t.append(i),t}function X({force:e=!1}={}){if(!I||!e&&i(M))return;let{count:t,list:n}=I,{fixEntries:a}=s();if(t.textContent=te(a.length),n.textContent=``,a.length===0)n.append(r(`p`,`visions-empty`,ee));else for(let e of a)n.append(Y(e))}var Z=o(`visions-connection-status`);function Q(){s().isConnected?Z.clear():Z.show(`error`,`${n} What you see below is from before the connection dropped.`)}var re={intent:z,feed:()=>W(),fixes:()=>X(),activity:()=>q(),connection:Q};function $(){z(),W({force:!0}),X({force:!0}),q({force:!0})}function ie(e){if(M)return;let t=r(`div`,`visions-content`);t.append(Z.element,L());let n=r(`div`,`visions-feed`);t.append(n),t.append(J()),t.append(G()),e.appendChild(t),M=t,N=n,c(()=>!i(M)),m(e=>{for(let t of e)re[t]()}),Q(),$()}var ae={mount:ie,refresh:$};export{ae as view};
1
+ import{Q as e,Y as t,n}from"./updates-view-core-Z-HI1v-s.js";import{o as r,u as i}from"./dom-helpers-C7P3_59O.js";import{$t as a,Ir as o,Jt as s,Kt as c,Qt as l,Xt as u,Yt as d,Zt as f,_ as p,qt as m}from"./index-NtTpV6Kg.js";var h=`No findings. Open a markdown file in a connected editor.`;function g(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function _(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function v(e){let t=typeof e==`string`?e:``;if(!t)return``;let n=t.lastIndexOf(`/`),r=n===-1?t:t.slice(n+1);if(!r)return t;try{return decodeURIComponent(r)}catch{return r}}function y(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function b(e){let t=y(e);return t===1?`1 finding`:`${t} findings`}function x(e){let t=y(e);return t===1?`1 comment`:`${t} comments`}function S(e){let t=y(e?.findings?.length),n=y(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(b(t)),n>0&&i.push(x(n)),i.length>0?i.join(`, `):b(0)}function C(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function w(e,t=new Map,n=new Map){let r=[],i=new Set([...e.keys(),...t.keys(),...n.keys()]);for(let a of i){let i=e.get(a),o=t.get(a),s=n.get(a)||null,c=Array.isArray(i)?i:[],l=Array.isArray(o)?o:[];(c.length!==0||l.length!==0||s)&&r.push({uri:a,name:v(a)||a,hand:s,findings:[...c].sort((e,t)=>_(e)-_(t)||g(e)-g(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>T(e.name,t.name)||T(e.uri,t.uri)),r}function T(e,t){return e<t?-1:+(e>t)}var ee=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function te(e){let t=y(e);return t===1?`1 fix`:`${t} fixes`}var ne=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,E={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function D(e){let t=typeof e==`string`?e:``;return E[t]||t||`source`}function O(n,r=Date.now()){let i=Number(n);return!Number.isFinite(i)||i<=0?``:e(Number(r)-i,t)}function k(e){let t=y(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function A(e){let t=y(e);return t===1?`1 event`:`${t} events`}function j(e){if(!e?.root)return`machine`;let t=e.root.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n===-1?t:t.slice(n+1)}var M=null,N=null,P=null,F=null,I=null;function L(){let e=r(`section`,`visions-intent`);e.append(r(`h2`,`visions-intent-title`,`Intent`));let t=r(`div`,`visions-intent-list`);return e.append(t),P={list:t},e}function R(e){let t=r(`div`,`visions-intent-item`),n=r(`div`,`visions-intent-head`);n.append(r(`span`,`visions-intent-scope`,e.label),r(`span`,`visions-intent-meta`,e.meta));let i=r(`p`,`visions-intent-text`,e.text);return i.classList.toggle(`visions-intent-none`,!e.hasText),t.classList.toggle(`visions-intent-active`,e.active===!0),t.append(n,i),t}function z(){if(!P)return;let{intent:e,projectNamesById:t}=s();P.list.replaceChildren(...a(e,t).map(R))}function B(e){let t=r(`section`,`visions-doc`),n=r(`div`,`visions-doc-head`),i=r(`h2`,`visions-doc-name`);if(i.textContent=e.name,i.title=e.uri,n.append(i,r(`span`,`visions-doc-count`,S(e))),t.append(n),e.hand&&t.append(V(e.hand)),e.findings.length>0){let n=r(`div`,`visions-findings`);for(let t of e.findings)n.append(U(t));t.append(n)}if(e.comments.length>0){let n=r(`div`,`visions-comments`);for(let t of e.comments)n.append(H(t));t.append(n)}return t}function V(e){let t=r(`div`,`visions-hand`);return t.textContent=C(e),t}function H(e){let t=r(`div`,`visions-comment`),n=r(`div`,`visions-comment-head`);n.append(r(`span`,`visions-comment-chip`,`visions`)),n.append(r(`span`,`visions-comment-line`,d(e))),t.append(n);let i=r(`p`,`visions-comment-message`);return i.textContent=e?.message==null?``:String(e.message),t.append(i),t}function U(e){let t=r(`div`,`visions-finding`);t.append(r(`span`,`visions-finding-line`,u(e)));let n=e?.code==null?``:String(e.code);n&&t.append(r(`span`,`visions-finding-code`,n));let i=r(`span`,`visions-finding-message`);return i.textContent=e?.message==null?``:String(e.message),t.append(i),t}function W({force:e=!1}={}){if(!N||!e&&i(M))return;N.textContent=``;let{findingsByUri:t,commentsByUri:n,handsByUri:a,isEnabled:o}=s(),c=w(t,n,a);if(c.length===0){let e=r(`p`,`visions-empty`,h);if(o===!1){let t=p(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}N.append(e)}else for(let e of c)N.append(B(e))}function G(){let e=r(`section`,`visions-activity`),t=r(`div`,`visions-activity-head`);t.append(r(`h2`,`visions-activity-title`,`Activity`));let n=r(`span`,`visions-activity-count`);t.append(n),e.append(t);let i=r(`div`,`visions-activity-list`);e.append(i);let a=r(`p`,`visions-activity-overflow`);return e.append(a),F={count:n,list:i,overflow:a},e}function K(e,t){let n=r(`div`,`visions-activity-row`);n.append(r(`span`,`visions-activity-source`,D(e.source))),n.append(r(`span`,`visions-activity-age`,O(e.ts,t))),n.append(r(`span`,`visions-activity-scope`,j(e)));let i=r(`span`,`visions-activity-summary`);return i.textContent=e.summary,n.append(i),n}function q({force:e=!1}={}){if(!F||!e&&i(M))return;let{count:t,list:n,overflow:a}=F,{activityEvents:o,activityOverflow:c}=s();if(t.textContent=A(o.length),n.textContent=``,o.length===0){n.append(r(`p`,`visions-empty`,ne)),a.textContent=``;return}let l=Date.now();for(let e of o)n.append(K(e,l));a.textContent=k(c)}function J(){let e=r(`section`,`visions-fixes`),t=r(`div`,`visions-fixes-head`);t.append(r(`h2`,`visions-fixes-title`,`Fixes`));let n=r(`span`,`visions-fixes-count`);t.append(n),e.append(t);let i=r(`div`,`visions-fixes-list`);return e.append(i),I={count:n,list:i},e}function Y(e){let t=r(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=r(`span`,`visions-fix-file`);n.textContent=v(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(r(`span`,`visions-fix-line`,f(e))),t.append(r(`span`,`visions-fix-outcome`,l(e))),t.append(r(`span`,`visions-fix-code`,e.code||``));let i=r(`span`,`visions-fix-message`);return i.textContent=e.message,t.append(i),t}function X({force:e=!1}={}){if(!I||!e&&i(M))return;let{count:t,list:n}=I,{fixEntries:a}=s();if(t.textContent=te(a.length),n.textContent=``,a.length===0)n.append(r(`p`,`visions-empty`,ee));else for(let e of a)n.append(Y(e))}var Z=o(`visions-connection-status`);function Q(){s().isConnected?Z.clear():Z.show(`error`,`${n} What you see below is from before the connection dropped.`)}var re={intent:z,feed:()=>W(),fixes:()=>X(),activity:()=>q(),connection:Q};function $(){z(),W({force:!0}),X({force:!0}),q({force:!0})}function ie(e){if(M)return;let t=r(`div`,`visions-content`);t.append(Z.element,L());let n=r(`div`,`visions-feed`);t.append(n),t.append(J()),t.append(G()),e.appendChild(t),M=t,N=n,c(()=>!i(M)),m(e=>{for(let t of e)re[t]()}),Q(),$()}var ae={mount:ie,refresh:$};export{ae as view};
@@ -9,7 +9,7 @@
9
9
  <link rel="preload" href="/assets/commit-mono-700-regular-core-DchJmSaC.woff2" as="font" type="font/woff2" crossorigin>
10
10
  <title>Glimmervoid</title>
11
11
  <style>html,body{background:var(--bg,#0a0810);height:100%;color:var(--text,#c8c0e0);font-family:var(--font-mono,"CommitMono", "Cascadia Code", "Fira Code", "Consolas", "Menlo", monospace);margin:0;padding:0}.app-shell{display:none}html:not([data-layout=phone]) .app-ready .app-shell{display:contents}.loading-screen{z-index:9999;background:#0a0810;flex-direction:column;justify-content:center;align-items:center;gap:20px;transition:opacity .3s;display:flex;position:fixed;inset:0}.loading-screen.fade-out{opacity:0;pointer-events:none}.loading-title{letter-spacing:.1em;color:#e8e0ff;text-transform:uppercase;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:20px;font-weight:700}.loading-title:before{content:"▸";color:#c084fc}.loading-status{color:#8276b0;letter-spacing:.04em;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:12px}.loading-detail{color:#5e5584;text-align:center;text-wrap:balance;max-width:min(34ch,100vw - 32px);margin-top:-8px;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:12px;line-height:1.6}.loading-spinner{border:2px solid #2a2440;border-top-color:#c084fc;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.shutdown-screen:not(.active) .loading-spinner{animation:none}.shutdown-screen{z-index:9999;-webkit-backdrop-filter:blur();backdrop-filter:blur();pointer-events:none;opacity:0;background:#0a081000;flex-direction:column;justify-content:center;align-items:center;gap:20px;transition:background .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s,opacity .3s;display:flex;position:fixed;inset:0}.shutdown-screen.active{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto;opacity:1;background:#0a0810eb}.shutdown-status{color:#8276b0;letter-spacing:.04em;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:12px;transition:color .3s}.shutdown-screen.done .loading-spinner{opacity:.3;border-color:#2a2440;animation:none}.shutdown-screen.done .shutdown-status{color:#4a4268}</style>
12
- <script type="module" crossorigin src="/assets/index-BZuCoMuc.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-NtTpV6Kg.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/zod-BRLv4KqJ.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/dom-helpers-C7P3_59O.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/updates-view-core-Z-HI1v-s.js">
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glimmervoid",
3
- "version": "0.46.2-next.134",
3
+ "version": "0.46.2-next.136",
4
4
  "description": "Mission control that ships. Not a terminal multiplexer: Claude Code, Codex and Grok each work in their own git worktree, and the one session that needs you comes to the front",
5
5
  "main": "dist/server/index.js",
6
6
  "type": "module",