token-usage-dashboard 1.0.11 → 1.0.12
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.
- package/build/client/_app/immutable/chunks/G5wHZJy8.js +2 -0
- package/build/client/_app/immutable/chunks/G5wHZJy8.js.br +0 -0
- package/build/client/_app/immutable/chunks/G5wHZJy8.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.B4iyXCcH.js → app.CuA0PQ3L.js} +2 -2
- package/build/client/_app/immutable/entry/app.CuA0PQ3L.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CuA0PQ3L.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CV_ip-Hp.js +1 -0
- package/build/client/_app/immutable/entry/start.CV_ip-Hp.js.br +1 -0
- package/build/client/_app/immutable/entry/start.CV_ip-Hp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.bXNtibEg.js → 1.CTCsoy2V.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CTCsoy2V.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CTCsoy2V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CX7_mI8s.js → 2.DBV8nX84.js} +1 -1
- package/build/client/_app/immutable/nodes/2.DBV8nX84.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DBV8nX84.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +8 -8
- package/build/index.js +8 -8
- package/build/server/chunks/chunks/{client.js-Ct2tMSTS.js → client.js-BQauTa0m.js} +6 -6
- package/build/server/chunks/chunks/{exports.js-D7S4dPRP.js → exports.js-Bbyr-JtB.js} +2 -2
- package/build/server/chunks/chunks/{internal.js-CtDPw1co.js → internal.js-U26BXAw4.js} +3 -3
- package/build/server/chunks/chunks/{server.js-DxWEh0qK.js → server.js-UOanU7fq.js} +178 -51
- package/build/server/chunks/chunks/{shared.js-CAkvBFpL.js → shared.js-Dg3Ewm8t.js} +2 -2
- package/build/server/chunks/chunks/{utils.js-U7QVKoQm.js → utils.js-DUDFXVFd.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/refresh/{_server.ts.js-DmuUmmD4.js → _server.ts.js-CcG44vTx.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-CiGFkz6L.js → _server.ts.js-B0LWCQis.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-GScKbdma.js → _server.ts.js-CJGTdjik.js} +4 -4
- package/build/server/chunks/entries/fallbacks/{error.svelte.js-DaJCw5i4.js → error.svelte.js-BdtN0SJD.js} +7 -7
- package/build/server/chunks/entries/pages/{_page.svelte.js-ZYdmVAtc.js → _page.svelte.js-BqU3UuBL.js} +7 -7
- package/build/server/chunks/{handler-BHEnEQNm.js → handler-D8S2N5vX.js} +5 -5
- package/build/server/chunks/{index.js-BnqGrlE5.js → index.js-BDweEDAt.js} +6 -6
- package/build/server/chunks/{manifest.js-56Cs023v.js → manifest.js-CUe1IdHJ.js} +7 -7
- package/build/server/chunks/nodes/{1.js-DRwcDqvL.js → 1.js-MVTzwi8l.js} +3 -3
- package/build/server/chunks/nodes/{2.js-DRpC6msK.js → 2.js-C7xGlKUF.js} +3 -3
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/DDewuPNb.js +0 -2
- package/build/client/_app/immutable/chunks/DDewuPNb.js.br +0 -0
- package/build/client/_app/immutable/chunks/DDewuPNb.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.B4iyXCcH.js.br +0 -0
- package/build/client/_app/immutable/entry/app.B4iyXCcH.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.EZhL2Yjj.js +0 -1
- package/build/client/_app/immutable/entry/start.EZhL2Yjj.js.br +0 -1
- package/build/client/_app/immutable/entry/start.EZhL2Yjj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.bXNtibEg.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.bXNtibEg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CX7_mI8s.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CX7_mI8s.js.gz +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{F as e,I as t,L as n,R as r,X as i,Z as a,a as o,n as s,t as c}from"./Dsm7b1TR.js";var l=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var te=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),te(e,t));var v=new Map;function y(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ne(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${g(...e)}"]`}return n}var re=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,x=/^\/\((?:[^)]+)\)$/;function ie(e){let t=[];return{pattern:e===`/`||x.test(e)?/^\/$/:RegExp(`^${oe(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return ce(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return ce(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=re.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return ce(e)}).join(``)}).join(``)}/?$`),params:t}}function ae(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function oe(e){return e.slice(1).split(`/`).filter(ae)}function se(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function ce(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function le({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ie(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return se(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ue(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function de(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1xqpsj?.base??``,fe=globalThis.__sveltekit_1xqpsj?.assets??S??``,pe=`1791173218530`,me=`sveltekit:snapshot`,he=`sveltekit:scroll`,ge=`sveltekit:states`,_e=`sveltekit:pageurl`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ve=location.origin;function ye(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var be={...T,"":T.hover};function xe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Se(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=xe(e)}}function Ce(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ve&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=xe(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:be[r??`off`],preload_data:be[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function we(e){let t=o(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function a(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:a}}var Te={v:h};function Ee(){let{set:e,subscribe:t}=o(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${fe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==pe;return r&&(e(!0),Te.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ve||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function De(e){}var Oe=2**32-1,ke=Oe-1;function Ae(e){return!(!Number.isInteger(e)||e<0||e>ke)}function je(e){return!(!Number.isInteger(e)||e<0||e>Oe)}function Me(e){return Uint8Array.fromBase64(e).buffer}function Ne(e){return Uint8Array.from(Buffer.from(e,`base64`)).buffer}function Pe(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var Fe=typeof Uint8Array.fromBase64==`function`,Ie=typeof process==`object`&&process.versions?.node!==void 0,Le=Fe?Me:Ie?Ne:Pe;function Re(e,t){if(!t)return e;let n={};for(let r of Object.keys(e))n[r]=t[r]??e[r];return n}var ze=Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,`byteLength`).get,Be=typeof SharedArrayBuffer>`u`?void 0:Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype,`byteLength`).get,Ve=Object.freeze({fromPrimitive:e=>e,fromISOString:e=>new Date(e),fromStringValue:(e,t)=>e===`URL`?new URL(t):e===`URLSearchParams`?new URLSearchParams(t):Temporal[e.slice(9)].from(t),fromArrayBuffer:e=>e,fromRegExpInfo:(e,t)=>new RegExp(e,t),fromViewInfo:(e,t,n,r)=>{try{ze.call(t)}catch(e){if(!Be)throw e;Be.call(t)}let i=globalThis[e];return n===void 0?new i(t):new i(t,n,r)},box:e=>Object(e),createArray:e=>Array(e),createSparseArray:e=>{let t=[];return t[ke]=void 0,delete t[ke],t.length=e,t},createObject:()=>({}),createNullPrototypeObject:()=>Object.create(null),createSet:()=>new Set,createMap:()=>new Map,set:(e,t,n)=>{e[t]=n},addValue:(e,t)=>{e.add(t)},addEntry:(e,t,n)=>{e.set(t,n)}});function He(e,t,n){let r=Re(Ve,n?.operations);if(typeof e==`number`)return s(e,!0);if(!Array.isArray(e)||e.length===0)throw Error(`Invalid input`);let i=e,a=Array(i.length),o=null;function s(e,n=!1){if(e===-1)return r.fromPrimitive(void 0);if(e===-3)return r.fromPrimitive(NaN);if(e===-4)return r.fromPrimitive(1/0);if(e===-5)return r.fromPrimitive(-1/0);if(e===-6)return r.fromPrimitive(-0);if(n||typeof e!=`number`)throw Error(`Invalid input`);if(e in a)return a[e];if(e>=i.length)throw Error(`Invalid input`);let c=i[e];if(!c||typeof c!=`object`)a[e]=r.fromPrimitive(c);else if(Array.isArray(c)){if(typeof c[0]==`string`){let n=c[0],l=t&&Object.hasOwn(t,n)?t[n]:void 0;if(l){let t=c[1];if(typeof t!=`number`&&(t=i.push(c[1])-1),Object.hasOwn(a,t))return a[e]=l(a[t]);if(o??=new Set,o.has(t))throw Error(`Invalid circular reference`);return o.add(t),a[e]=l(s(t)),o.delete(t),a[e]}switch(n){case`Date`:a[e]=r.fromISOString(c[1]);break;case`Set`:let t=r.createSet();a[e]=t;for(let e=1;e<c.length;e+=1)r.addValue(t,s(c[e]));break;case`Map`:let o=r.createMap();a[e]=o;for(let e=1;e<c.length;e+=2)r.addEntry(o,s(c[e]),s(c[e+1]));break;case`RegExp`:a[e]=r.fromRegExpInfo(c[1],c[2]);break;case`Object`:{let t=c[1];if(typeof i[t]==`object`&&i[t][0]!==`BigInt`)throw Error(`Invalid input`);a[e]=r.box(s(t));break}case`BigInt`:a[e]=r.fromPrimitive(BigInt(c[1]));break;case`null`:let l=r.createNullPrototypeObject();a[e]=l;for(let e=1;e<c.length;e+=2){let t=c[e];if(typeof t!=`string`)throw Error(`Cannot parse an object with a non-string key`);if(t===`__proto__`)throw Error("Cannot parse an object with a `__proto__` property");r.set(l,t,s(c[e+1]))}break;case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:case`Int16Array`:case`Uint16Array`:case`Float16Array`:case`Int32Array`:case`Uint32Array`:case`Float32Array`:case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:case`DataView`:{if(i[c[1]][0]!==`ArrayBuffer`)throw Error(`Invalid data`);let t=s(c[1]);a[e]=r.fromViewInfo(n,t,c[2],c[3]);break}case`ArrayBuffer`:{let t=c[1];if(typeof t!=`string`)throw Error(`Invalid ArrayBuffer encoding`);a[e]=r.fromArrayBuffer(Le(t));break}case`URL`:case`URLSearchParams`:case`Temporal.Duration`:case`Temporal.Instant`:case`Temporal.PlainDate`:case`Temporal.PlainTime`:case`Temporal.PlainDateTime`:case`Temporal.PlainMonthDay`:case`Temporal.PlainYearMonth`:case`Temporal.ZonedDateTime`:a[e]=r.fromStringValue(n,c[1]);break;default:throw Error(`Unknown type ${n}`)}}else if(c[0]===-7){let t=c[1];if(!je(t))throw Error(`Invalid input`);let n=r.createSparseArray(t);a[e]=n;for(let e=2;e<c.length;e+=2){let i=c[e];if(!Ae(i)||i>=t)throw Error(`Invalid input`);r.set(n,i,s(c[e+1]))}}else{let t=r.createArray(c.length);a[e]=t;for(let e=0;e<c.length;e+=1){let n=c[e];n!==-2&&r.set(t,e,s(n))}}}else{let t=r.createObject();a[e]=t;for(let e of Object.keys(c)){if(e===`__proto__`)throw Error("Cannot parse an object with a `__proto__` property");r.set(t,e,s(c[e]))}}return a[e]}return s(0)}var Ue=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ue],[...new Set([...Ue])];function We(e){return e.filter(e=>e!=null)}var Ge=`x-sveltekit-invalidated`,Ke=`x-sveltekit-trailing-slash`;function A(e,t){return e+`/`+t}function j(e){return e instanceof l||e instanceof d?e.status:500}function qe(e){return e instanceof d?e.text:`Internal Error`}var M,N,Je,Ye=s.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(s.toString()),Xe=`a:`;Ye?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Xe)},N={current:null},Je={current:!1}):(M=new class{#e=a({});get data(){return e(this.#e)}set data(e){i(this.#e,e)}#t=a(null);get form(){return e(this.#t)}set form(e){i(this.#t,e)}#n=a(null);get error(){return e(this.#n)}set error(e){i(this.#n,e)}#r=a({});get params(){return e(this.#r)}set params(e){i(this.#r,e)}#i=a({id:null});get route(){return e(this.#i)}set route(e){i(this.#i,e)}#a=a({});get state(){return e(this.#a)}set state(e){i(this.#a,e)}#o=a(-1);get status(){return e(this.#o)}set status(e){i(this.#o,e)}#s=a(new URL(Xe));get url(){return e(this.#s)}set url(e){i(this.#s,e)}},N=new class{#e=a(null);get current(){return e(this.#e)}set current(e){i(this.#e,e)}},Je=new class{#e=a(!1);get current(){return e(this.#e)}set current(e){i(this.#e,e)}},Te.v=()=>Je.current=!0);function Ze(e){Object.assign(M,e)}var Qe=`/__data.json`,$e=`.html__data.json`;function et(e){return e.endsWith(`.html`)?e.replace(/\.html$/,$e):e.replace(/\/$/,``)+Qe}async function*tt(e,t){let n=!1,r=``,i=new TextDecoder;for(;;){let a=r.indexOf(t);for(;a!==-1;)yield r.slice(0,a),r=r.slice(a+t.length),a=r.indexOf(t);if(n){r&&(yield r);return}let o=await e.read();n=o.done,o.value&&(r+=i.decode(o.value,{stream:!0})),n&&(r+=i.decode())}}async function*nt(e){for await(let t of tt(e,`
|
|
2
|
+
`)){let e=t.trim();e&&(yield JSON.parse(e))}}var{onMount:rt,tick:it}=c,at=r??(e=>e()),ot=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=ue(`sveltekit:scroll`)??{},I=ue(`sveltekit:snapshot`)??{},L={url:we({}),page:we({}),navigating:o(null),updated:Ee()};function st(e){F[e]=E()}function ct(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function lt(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var ut,dt,ft,z,pt,B,mt={},ht={},gt=[],_t=[],V=null;function vt(){V?.fork?.then(e=>e?.discard()),V=null,Q={element:void 0,href:void 0}}var yt=new Map,bt=new Set,xt=new Set,H=new Set,U={branch:[],error:null,url:null,nav:null},St=!1,Ct=!1,wt=!0,W=!1,G=!1,Tt=!1,Et=!1,Dt,K,q,J,Y=new Set,Ot=new Map,kt=new Map;async function At(e,t,n){if(globalThis.__sveltekit_1xqpsj.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1xqpsj.data;for(let t in e)mt[t]=e[t];for(let e in n)mt[e]=n[e];for(let e in r)mt[e]=r[e];for(let e in t)ht[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),ut=le(e),z=document.documentElement,pt=t,dt=e.nodes[0],ft=e.nodes[1],dt(),ft(),K=history.state?.[C],q=history.state?.[w],K||(K=q=Date.now(),history.replaceState({...history.state,[C]:K,[w]:q},``));let r=F[K];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await an(pt,n)):(await Z({type:`enter`,url:ye(B.hash?pn(new URL(location.href)):location.href),replace_state:!0}),i()),rn()}function jt(){gt.length=0,Et=!1}function Mt(e){_t.some(e=>e?.snapshot)&&(I[e]=_t.map(e=>e?.snapshot?.capture()))}function Nt(e){I[e]?.forEach((e,t)=>{_t[t]?.snapshot?.restore(e)})}function Pt(){st(K),de(he,F),Mt(q),de(me,I)}async function Ft(e,t,r,i){let a,o;t.invalidateAll&&vt(),await Z({type:`goto`,url:ye(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:r,nav_token:i,accept:()=>{if(t.invalidateAll){Et=!0,a=new Set;for(let[e,t]of Ot)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of kt)for(let n of t.keys())o.add(A(e,n))}t.invalidate&&t.invalidate.forEach(tn)}}),t.invalidateAll&&n().then(n).then(()=>{for(let[e,t]of Ot)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of kt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function It(e){if(e.id!==V?.id){vt();let t={};Y.add(t),V={id:e.id,token:t,promise:Kt({...e,preload:t}).then(e=>(Y.delete(t),e.type===`loaded`&&e.state.error&&vt(),e)),fork:null}}return V.promise}async function Lt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function Rt(e,t,n){let r={params:U.params,route:{id:U.route?.id??null},url:new URL(location.href)};if(U={...e.state,nav:r},Ze(e.props.page),Dt=new B.root({target:t,props:{...e.props,stores:L,components:_t},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:F[K]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};H.forEach(t=>t(e))}Nt(q),Ct=!0}async function zt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:We(n).map(e=>e.node.component),page:fn(M)}};s!==void 0&&(l.props.form=s);let u={},d=!M,p=0;for(let e=0;e<Math.max(n.length,U.branch.length);e+=1){let t=n[e],r=U.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!U.url||e.href!==U.url.href||U.error!==a||s!==void 0&&s!==M.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:M.data}),l}async function Bt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function Vt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Ct?ne(r,i.href,t):y(r,t)}}function Ht(e,t,n,r,i,a){if(Et)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==U.params[e])return!0;for(let e of i.dependencies)if(gt.some(t=>t(new URL(e))))return!0;return!1}function Ut(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Wt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function Gt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:fn(M),constructors:[]}}}async function Kt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(V?.id===e)return Y.delete(V.token),V.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=null,p=U.url?e!==Zt(U.url):!1,ee=U.route?i.id!==U.route.id:!1,m=Wt(U.url,n),g=!1;{let t=d.map((e,t)=>{let n=U.branch[t],i=!!e?.[0]&&(n?.loader!==e[1]||Ht(g,ee,p,m,n.server?.uses,r));return i&&(g=!0),i});if(t.some(Boolean)){try{f=await on(n,t)}catch(t){let o=await $(t,{url:n,params:r,route:{id:e}});return a&&Y.has(a)?Gt({error:o,url:n,params:r,route:i}):Jt({status:j(t),error:o,url:n,route:i})}if(f.type===`redirect`)return f}}let _=f?.nodes,te=!1,v=d.map(async(e,t)=>{if(!e)return;let a=U.branch[t],o=_?.[t];if((!o||o.type===`skip`)&&e[1]===a?.loader&&!Ht(te,ee,p,m,a.universal?.uses,r))return a;if(te=!0,o?.type===`error`)throw o;return Bt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await v[n])?.data);return e},server_data_node:Ut(o===void 0&&e[0]?{type:`skip`}:o??null,e[0]?a?.server:void 0)})});for(let e of v)e.catch(h);let y=[];for(let e=0;e<d.length;e+=1)if(d[e])try{y.push(await v[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(a&&Y.has(a))return Gt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=j(t),c;if(_?.includes(t))s=t.status??s,c=t.error;else if(t instanceof l)c=t.body;else{if(await L.updated.check())return await lt(),await R(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await qt(e,y,o);return d?zt({url:n,params:r,branch:y.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await $t(n,{id:i.id},c,s)}else y.push(void 0);return zt({url:n,params:r,branch:y,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function qt(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Jt({status:e,error:t,url:n,route:r}){let i={},a=null;if(B.server_loads[0]===0)try{let e=await on(n,[!0]);if(e.type!==`data`||e.nodes[0]&&e.nodes[0].type!==`data`)throw 0;a=e.nodes[0]??null}catch(e){if(!(e instanceof l&&e.status===404)&&(n.origin!==ve||n.pathname!==location.pathname||St))return await R(n)}try{return zt({url:n,params:i,branch:[await Bt({loader:dt,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:Ut(a)}),{node:await ft(),loader:ft,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await Ft(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Yt(e){let t=e.href;if(yt.has(t))return yt.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>Vt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();yt.set(t,r),n=await r}catch{yt.delete(t);return}return n}async function X(e,t){if(e&&!k(e,S,B.hash)){let n=await Yt(e);if(!n)return;let r=Xt(n);for(let n of ut){let i=n.exec(r);if(i)return{id:Zt(e),invalidating:t,route:n,params:ee(i),url:e}}}}function Xt(e){return p(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Zt(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Qt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=dn(U,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return W||bt.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=h,block:p=h,event:ee}){let m=J;J=u;let g=await X(r,!1),_=e===`enter`?dn(U,g,r,e):Qt({url:r,type:e,delta:i?.delta,intent:g,scroll:i?.scroll,event:ee});if(!_){p(),J===u&&(J=m);return}let te=K,v=q;f(),W=!0,Ct&&_.navigation.type!==`enter`&&L.navigating.set(N.current=_.navigation);let y=g&&await Kt(g);if(!y){if(k(r,S,B.hash))return await R(r,s);y=await $t(r,{id:null},await $(new d(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=g?.url||r,J!==u){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),_.fulfil(void 0);return}if(y=await Jt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await L.updated.check())return await lt(),await R(r,s);if(jt(),st(te),Mt(v),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:K+=e,[w]:q+=e,[ge]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||ct(K,q)}let ne=g&&V?.id===g.id?V.fork:null;V?.fork&&!ne?vt():(V=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let b;if(Ct){let e=(await Promise.all(Array.from(xt,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{H.delete(e)})}e.push(t),e.forEach(e=>{H.add(e)})}let n=_.navigation.to;U={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=ne&&await ne;i?b=i.commit():(P=null,Dt.$set(y.props),P&&Object.assign(y.props.page,P),Ze(y.props.page),b=t?.()),Tt=!0}else await Rt(y,pt,!1);let{activeElement:re}=document;if(await b,await n(),await n(),J!==u){_.reject(Error(`navigation aborted`));return}y.props.page&&P&&Object.assign(y.props.page,P);let x=null;if(wt){let e=i?i.scroll:o?E():null;e?scrollTo(e.x,e.y):(x=r.hash&&document.getElementById(mn(r)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&un(r,!x),wt=!0,W=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=E()),H.forEach(e=>e(_.navigation)),e===`popstate`&&Nt(q),L.navigating.set(N.current=null)}async function $t(e,t,n,r,i){return e.origin===ve&&e.pathname===location.pathname&&!St?await Jt({status:r,error:n,url:e,route:t}):await R(e,i)}var Q={element:void 0,href:void 0};function en(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(Lt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Se(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=Ce(r,S,B.hash);if(o||s)return;let c=O(r),l=a&&Zt(U.url)===Zt(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await X(a,!1);if(!e)return;It(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,Lt(a))}}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=Ce(e,S,B.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&Lt(t))}}H.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=j(e),r=qe(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function tn(e){if(typeof e==`function`)gt.push(e);else{let{href:t}=new URL(e,location.href);gt.push(e=>e.href===t)}}function nn(e,t){let n={[C]:K,[w]:q,[_e]:M.url.href,[ge]:t};history.replaceState(n,``,ye(e)),M.state=t,Dt.$set({page:at(()=>fn(M))})}function rn(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(Pt(),!W){let e=dn(U,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};bt.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&Pt()}),navigator.connection?.saveData||en(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Se(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=Ce(n,S,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Qt({url:r,type:`link`,event:t})?W=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=U.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(G=!0,st(K),e(r),!s.replace_state)return;G=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!ln){if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(J={},n===K)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=U.url?m(location)===m(U.url):!1;if(o===q&&(Tt||s)){i!==M.state&&(M.state=i),e(a),F[K]=E(),r&&scrollTo(r.x,r.y),K=n;return}let c=n-K;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{K=n,q=o},block:()=>{history.go(-c)},nav_token:J,event:t})}else G||(e(new URL(location.href)),B.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{G&&(G=!1,history.replaceState({...history.state,[C]:++K,[w]:q},``,location.href))});for(let e of document.querySelectorAll(`link`))ot.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(N.current=null)});function e(e){U.url=M.url=e,L.page.set(fn(M)),L.page.notify()}}async function an(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){St=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(l,!1)||{}),d=ut.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=cn(r.uses)),Bt({loader:B.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:Ut(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await zt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u)return await R(new URL(t.location,location.href));f=await Jt({status:j(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await Rt(f,e,p))}async function on(e,t){let n=new URL(e);n.pathname=et(e.pathname),e.pathname.endsWith(`/`)&&n.searchParams.append(Ke,`1`),n.searchParams.append(Ge,t.map(e=>e?`1`:`0`).join(``));let r=await(0,window.fetch)(n.href,{});if(!r.ok){let e;throw r.headers.get(`content-type`)?.includes(`application/json`)?e=await r.json():r.status===404?e=`Not Found`:r.status===500&&(e=`Internal Error`),new l(r.status,e)}return new Promise((e,t)=>{sn(e,r).catch(t)})}async function sn(e,t){let n=t.body.getReader(),r=new Map;function i(e){return He(e,{...B.decoders,Promise:e=>new Promise((t,n)=>{r.set(e,{fulfil:t,reject:n})})})}for await(let t of nt(n)){if(t.type===`redirect`)return e(t);if(t.type===`data`)t.nodes?.forEach(e=>{e?.type===`data`&&(e.uses=cn(e.uses),e.data=i(e.data))}),e(t);else if(t.type===`chunk`){let{id:e,data:n,error:a}=t,o=r.get(e);r.delete(e),a?o.reject(i(a)):o.fulfil(i(n))}}}function cn(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var ln=!1;function un(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=mn(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;ln=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),ln=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function dn(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function fn(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function pn(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function mn(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{De as a,M as i,At as n,N as r,nn as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.PGglbI9f.js","../chunks/Dsm7b1TR.js","../chunks/xihTtKlq.js","../assets/0.CZ6VMqH1.css","../nodes/1.
|
|
2
|
-
import{B as e,D as t,E as n,F as r,G as i,H as a,J as o,K as s,L as c,O as l,Q as u,T as d,V as f,X as p,Z as m,et as h,i as g,it as _,j as v,k as y,n as b,o as x,r as S,tt as C,x as w}from"../chunks/Dsm7b1TR.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=y(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=y(`<!> <!>`,1);function M(y,S){C(S,!0);let T=g(S,`components`,23,()=>[]),E=g(S,`data_0`,3,null),D=g(S,`data_1`,3,null);a(()=>S.stores.page.set(S.page)),f(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=m(!1),k=m(!1),M=m(null);b(()=>{let e=S.stores.page.subscribe(()=>{r(O)&&(p(k,!0),c().then(()=>{p(M,document.title||`untitled page`,!0)}))});return p(O,!0),e});let N=u(()=>S.constructors[1]);var P=j(),F=s(P),I=e=>{let n=u(()=>S.constructors[0]);var i=l(),a=s(i);w(a,()=>r(n),(e,n)=>{x(n(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(e,n)=>{var i=l(),a=s(i);w(a,()=>r(N),(e,t)=>{x(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),t(e,i)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)},L=e=>{let n=u(()=>S.constructors[0]);var i=l(),a=s(i);w(a,()=>r(n),(e,t)=>{x(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)};d(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=o(F,2),z=a=>{var o=A(),s=i(o),c=i=>{var a=v();e(()=>n(a,r(M))),t(i,a)};d(s,e=>{r(k)&&e(c)}),_(o),t(a,o)};d(R,e=>{r(O)&&e(z)}),t(y,P),h()}var N=S(M),P=[()=>O(()=>import(`../nodes/0.PGglbI9f.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.PGglbI9f.js","../chunks/Dsm7b1TR.js","../chunks/xihTtKlq.js","../assets/0.CZ6VMqH1.css","../nodes/1.CTCsoy2V.js","../chunks/G5wHZJy8.js","../nodes/2.DBV8nX84.js","../assets/2.CZocdpCk.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{B as e,D as t,E as n,F as r,G as i,H as a,J as o,K as s,L as c,O as l,Q as u,T as d,V as f,X as p,Z as m,et as h,i as g,it as _,j as v,k as y,n as b,o as x,r as S,tt as C,x as w}from"../chunks/Dsm7b1TR.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=y(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=y(`<!> <!>`,1);function M(y,S){C(S,!0);let T=g(S,`components`,23,()=>[]),E=g(S,`data_0`,3,null),D=g(S,`data_1`,3,null);a(()=>S.stores.page.set(S.page)),f(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=m(!1),k=m(!1),M=m(null);b(()=>{let e=S.stores.page.subscribe(()=>{r(O)&&(p(k,!0),c().then(()=>{p(M,document.title||`untitled page`,!0)}))});return p(O,!0),e});let N=u(()=>S.constructors[1]);var P=j(),F=s(P),I=e=>{let n=u(()=>S.constructors[0]);var i=l(),a=s(i);w(a,()=>r(n),(e,n)=>{x(n(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(e,n)=>{var i=l(),a=s(i);w(a,()=>r(N),(e,t)=>{x(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),t(e,i)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)},L=e=>{let n=u(()=>S.constructors[0]);var i=l(),a=s(i);w(a,()=>r(n),(e,t)=>{x(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)};d(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=o(F,2),z=a=>{var o=A(),s=i(o),c=i=>{var a=v();e(()=>n(a,r(M))),t(i,a)};d(s,e=>{r(k)&&e(c)}),_(o),t(a,o)};d(R,e=>{r(O)&&e(z)}),t(y,P),h()}var N=S(M),P=[()=>O(()=>import(`../nodes/0.PGglbI9f.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.CTCsoy2V.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>O(()=>import(`../nodes/2.DBV8nX84.js`),__vite__mapDeps([6,1,5,2,7]),import.meta.url)],F=[],I={"/":[-3]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,n as t}from"../chunks/G5wHZJy8.js";export{e as load_css,t as start};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
�(�import{a as e,n as t}from"../chunks/G5wHZJy8.js";export{e as load_css,t as start};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,D as t,E as n,J as r,K as i,et as a,k as o,q as s,tt as c}from"../chunks/Dsm7b1TR.js";import{i as l}from"../chunks/
|
|
1
|
+
import{B as e,D as t,E as n,J as r,K as i,et as a,k as o,q as s,tt as c}from"../chunks/Dsm7b1TR.js";import{i as l}from"../chunks/G5wHZJy8.js";import"../chunks/xihTtKlq.js";var u={get data(){return l.data},get error(){return l.error},get form(){return l.form},get params(){return l.params},get route(){return l.route},get state(){return l.state},get status(){return l.status},get url(){return l.url}},d=o(`<h1> </h1> <p> </p>`,1);function f(o,l){c(l,!0);var f=d(),p=i(f),m=s(p,!0),h=r(p,2),g=s(h,!0);e(()=>{n(m,u.status),n(g,u.error?.message)}),t(o,f),a()}export{f as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,R as m,S as h,T as g,U as _,V as v,W as y,X as b,Y as x,Z as S,_ as C,at as w,b as T,c as E,d as D,et as O,f as k,g as A,h as j,i as M,it as N,j as P,k as F,l as I,m as L,o as R,p as z,q as B,rt as ee,s as te,tt as V,u as ne,v as H,w as U,y as re,z as ie}from"../chunks/Dsm7b1TR.js";import{t as W}from"../chunks/DDewuPNb.js";import"../chunks/xihTtKlq.js";var G=null;function K(){return G||(G=document.createElement(`div`),G.className=`app-tooltip`,G.setAttribute(`role`,`tooltip`),document.body.append(G),G)}var q=(e,t)=>{let n=t,r=()=>{G&&G.classList.remove(`is-open`)},i=()=>{if(!n)return;let t=K();t.textContent=n,t.classList.add(`is-open`);let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=Math.min(Math.max(8,r.left+r.width/2-i.width/2),window.innerWidth-i.width-8),o=r.top>i.height+12;t.style.left=`${a}px`,t.style.top=`${o?r.top-i.height-8:r.bottom+8}px`};return e.addEventListener(`pointerenter`,i),e.addEventListener(`focusin`,i),e.addEventListener(`pointerleave`,r),e.addEventListener(`focusout`,r),window.addEventListener(`scroll`,r,!0),{update:t=>{n=t,t&&e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??t)},destroy:()=>{r(),e.removeEventListener(`pointerenter`,i),e.removeEventListener(`focusin`,i),e.removeEventListener(`pointerleave`,r),e.removeEventListener(`focusout`,r),window.removeEventListener(`scroll`,r,!0)}}},ae=F(`<div class="actions svelte-hxsa5u"><!></div>`),oe=F(`<section class="panel svelte-hxsa5u"><header class="svelte-hxsa5u"><h2 class="svelte-hxsa5u"> </h2> <!></header> <div class="body svelte-hxsa5u"><!></div></section>`);function J(e,n){let a=M(n,`span`,3,12);var c=oe(),l=o(c),u=o(l),d=B(u,!0);H(u,(e,t)=>q?.(e,t),()=>n.hint);var f=s(u,2),p=e=>{var t=ae(),i=o(t);h(i,()=>n.actions),N(t),r(e,t)};g(f,e=>{n.actions&&e(p)}),N(l);var m=s(l,2),_=o(m);h(_,()=>n.children),N(m),N(c),t(()=>{A(c,`--span: ${a()??``}`),i(d,n.title)}),r(e,c)}var se=F(`<button type="button"> </button>`),ce=F(`<div role="group"></div>`);function le(e,o){V(o,!0);let s=M(o,`value`,15),c=M(o,`size`,3,`md`);var l=ce();let d;n(l,21,()=>o.options,e=>e.id,(e,n)=>{var o=se();let c;var l=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>a(n).hint),t(()=>{k(o,`aria-pressed`,s()===a(n).id),c=C(o,1,`svelte-1dkbyok`,null,c,{on:s()===a(n).id}),i(l,a(n).label)}),u(`click`,o,()=>s(a(n).id)),r(e,o)}),N(l),t(()=>{d=C(l,1,`segmented svelte-1dkbyok`,null,d,{sm:c()===`sm`}),k(l,`aria-label`,o.label)}),r(e,l),O()}l([`click`]);var ue=F(`<b class="num svelte-vbwhwd"> </b>`),de=F(`<label class="svelte-vbwhwd"><input type="checkbox" class="svelte-vbwhwd"/> <span class="svelte-vbwhwd"> </span></label>`),fe=F(`<p class="none svelte-vbwhwd">Nothing matches</p>`),pe=F(`<button type="button" class="clear svelte-vbwhwd">Clear</button>`),me=F(`<div class="menu svelte-vbwhwd"><input class="search svelte-vbwhwd" type="search"/> <div class="list svelte-vbwhwd"></div> <!></div>`),he=F(`<div class="select svelte-vbwhwd"><button type="button"> <!> <svg viewBox="0 0 12 12" width="10" height="10" aria-hidden="true"><path d="M2 4.5 6 8.5 10 4.5" fill="none" stroke="currentColor" stroke-width="1.5"></path></svg></button> <!></div>`);function ge(e,c){V(c,!0);let l=M(c,`selected`,15),d=M(c,`format`,3,e=>e),m=S(!1),h=S(``),_,v=p(()=>c.options.filter(e=>d()(e).toLowerCase().includes(a(h).toLowerCase()))),x=e=>{l(l().includes(e)?l().filter(t=>t!==e):[...l(),e])},w=e=>{a(m)&&!_.contains(e.target)&&b(m,!1)};var T=he();f(`click`,y,w);var A=o(T);let j;var P=o(A),F=s(P),I=e=>{var n=ue(),a=B(n,!0);t(()=>i(a,l().length)),r(e,n)};g(F,e=>{l().length&&e(I)}),ee(2),N(A);var L=s(A,2),te=e=>{var f=me(),p=o(f);D(p);var m=s(p,2);n(m,20,()=>a(v),e=>e,(e,n)=>{var a=de(),c=o(a);D(c);var f=s(c,2),p=B(f,!0);N(a),t((e,t)=>{z(c,e),i(p,t)},[()=>l().includes(n),()=>d()(n)]),u(`change`,c,()=>x(n)),r(e,a)},e=>{var t=fe();r(e,t)}),N(m);var _=s(m,2),y=e=>{var t=pe();u(`click`,t,()=>l([])),r(e,t)};g(_,e=>{l().length&&e(y)}),N(f),t(e=>k(p,`placeholder`,`Filter ${e??``}`),[()=>c.label.toLowerCase()]),E(p,()=>a(h),e=>b(h,e)),r(e,f)};g(L,e=>{a(m)&&e(te)}),N(T),R(T,e=>_=e,()=>_),t(()=>{j=C(A,1,`trigger svelte-vbwhwd`,null,j,{on:l().length>0}),k(A,`aria-expanded`,a(m)),i(P,`${c.label??``} `)}),u(`click`,A,()=>b(m,!a(m))),r(e,T),O()}l([`click`,`change`]);var _e=[{at:0xe8d4a51000,suffix:`T`},{at:1e9,suffix:`B`},{at:1e6,suffix:`M`},{at:1e3,suffix:`k`}];function Y(e){let t=_e.find(t=>Math.abs(e)>=t.at);if(!t)return String(Math.round(e));let n=e/t.at;return`${n.toFixed(+(n<10))}${t.suffix}`}var X=e=>Math.round(e).toLocaleString(`en-GB`);function Z(e){return e===null?`--`:e===0?`$0`:Math.abs(e)<.01?`<$0.01`:`$${e.toLocaleString(`en-GB`,{minimumFractionDigits:2,maximumFractionDigits:2})}`}function ve(e){return e===null?`--`:Math.abs(e)>=1e3?`$${Y(e)}`:Z(e)}var ye=(e,t=0)=>`${e.toFixed(t)}%`,be=new Intl.RelativeTimeFormat(`en-GB`,{numeric:`auto`}),xe=[[`second`,60],[`minute`,60],[`hour`,24],[`day`,7],[`week`,4.35],[`month`,12]];function Se(e,t=Date.now()){if(!e)return`never`;let n=(e-t)/1e3;if(Math.abs(n)<45)return n<0?`just now`:`in a moment`;for(let[e,t]of xe){if(Math.abs(n)<t)return be.format(Math.round(n),e);n/=t}return be.format(Math.round(n),`year`)}var Ce=e=>new Date(`${e}T00:00:00`).toLocaleDateString(`en-GB`,{weekday:`short`,day:`numeric`,month:`short`}),we=e=>new Date(e).toLocaleString(`en-GB`,{day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`});function Te(e){let t=Math.round(e/6e4);return t<1?`under a minute`:t<60?`${t} min`:`${Math.floor(t/60)}h ${t%60}m`}var Ee=e=>e?e.replace(/\/+$/,``).split(`/`).pop()||e:`unknown`,De=e=>(e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e).replace(/-\d{8}$/,``);function Oe(e,t){if(!t)return null;let n=(e-t)/t*100;return!Number.isFinite(n)||Math.abs(n)<1?{text:`flat`,tone:`even`}:{text:`${n>0?`+`:``}${n.toFixed(0)}%`,tone:n>0?`up`:`down`}}var ke=F(`<span class="delta svelte-l3stpt"> </span>`),Ae=F(`<i> </i>`),je=F(`<div class="figures svelte-l3stpt"><div class="lead svelte-l3stpt"><span class="cap svelte-l3stpt"> </span> <strong class="num svelte-l3stpt"> </strong> <!></div> <dl class="svelte-l3stpt"><div class="svelte-l3stpt"><dt class="svelte-l3stpt">Est. cost</dt> <dd class="num svelte-l3stpt"> <!></dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Sessions</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Active days</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Daily pace</dt> <dd class="num svelte-l3stpt"> </dd></div></dl></div>`);function Me(e,n){V(n,!0);let c=p(()=>Oe(n.totals.total,n.previous.total)),l=p(()=>Oe(n.totals.cost??0,n.previous.cost??0)),u=p(()=>n.activeDays?n.totals.total/n.activeDays:0);var d=je(),f=o(d),m=o(f),h=B(m),_=s(m,2),v=B(_,!0);H(_,(e,t)=>q?.(e,t),()=>X(n.totals.total));var y=s(_,2),b=e=>{var o=ke(),s=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>`on the ${n.rangeLabel.toLowerCase()} before`),t(()=>i(s,a(c).text)),r(e,o)};g(y,e=>{a(c)&&e(b)}),N(f);var x=s(f,2),S=o(x),w=o(S);H(w,(e,t)=>q?.(e,t),()=>`What these tokens would cost at published API rates. A subscription is billed separately.`);var T=s(w,2),E=o(T),D=s(E),k=e=>{var n=Ae(),o=B(n,!0);t(()=>{C(n,1,`delta cost ${a(l).tone??``}`,`svelte-l3stpt`),i(o,a(l).text)}),r(e,n)};g(D,e=>{a(l)&&e(k)}),N(T),N(S);var A=s(S,2),j=s(o(A),2),M=B(j,!0);N(A);var P=s(A,2),F=o(P);H(F,(e,t)=>q?.(e,t),()=>`Days with at least one request`);var I=s(F,2),L=B(I,!0);N(P);var R=s(P,2),z=o(R);H(z,(e,t)=>q?.(e,t),()=>`Tokens per active day`);var ee=s(z,2),te=B(ee,!0);N(R),N(x),N(d),t((e,t,n,r,a,o)=>{i(h,`Tokens, ${e??``}`),i(v,t),i(E,`${n??``} `),i(M,r),i(L,a),i(te,o)},[()=>n.rangeLabel.toLowerCase(),()=>Y(n.totals.total),()=>Z(n.totals.cost),()=>X(n.totals.sessions),()=>X(n.activeDays),()=>Y(a(u))]),r(e,d),O()}var Ne=e(`<text class="axis svelte-1iu5iby" y="10"> </text>`),Pe=e(`<text class="axis svelte-1iu5iby" x="0"> </text>`),Fe=e(`<rect role="img"></rect>`),Ie=F(`<i class="svelte-1iu5iby"></i>`),Le=F(`<div class="calendar svelte-1iu5iby"><svg role="img" aria-label="Daily usage calendar" class="svelte-1iu5iby"><!><!><!></svg> <div class="legend svelte-1iu5iby"><span class="span svelte-1iu5iby"> </span> <span>No records</span> <i class="blank svelte-1iu5iby"></i> <span class="spread svelte-1iu5iby">Quieter</span> <!> <span>Busier</span></div></div>`);function Re(e,l){V(l,!0);let u=S(680),f=e=>e.toLocaleDateString(`en-CA`),m=e=>e?l.metric===`cost`?e.cost??0:e.total:0,h=p(()=>new Map(l.days.map(e=>[e.day,e]))),_=p(()=>l.oldest?f(new Date(l.oldest)):l.days[0]?.day??``),v=p(()=>{let e=new Date;e.setHours(0,0,0,0);let t=new Date(l.days.length?`${l.days[0].day}T00:00:00`:e),n=new Date(e);n.setDate(n.getDate()-370);let r=new Date(e);r.setDate(r.getDate()-125);let i=new Date(Math.max(n.getTime(),Math.min(t.getTime(),r.getTime())));i.setDate(i.getDate()-(i.getDay()+6)%7);let a=[],o=new Date(i),s=0;for(;o<=e;){let e=(o.getDay()+6)%7;a.push({day:f(o),date:new Date(o),week:s,weekday:e}),e===6&&(s+=1),o.setDate(o.getDate()+1)}return{cells:a,weeks:s+1}}),y=p(()=>Math.max(9,Math.min(30,Math.floor((a(u)-32)/a(v).weeks)-3))),x=p(()=>a(y)+3),w=p(()=>{let e=l.days.map(e=>m(e)).filter(e=>e>0).sort((e,t)=>e-t);return e.length?[.2,.4,.6,.8].map(t=>e[Math.floor(e.length*t)]):[]}),T=e=>e<=0?0:a(w).filter(t=>e>=t).length+1,E=p(()=>{let e=[];for(let t of a(v).cells){if(t.weekday!==0)continue;let n=t.date.toLocaleDateString(`en-GB`,{month:`short`});(!e.length||t.date.getDate()<=7&&e[e.length-1].label!==n)&&e.push({label:n,week:t.week})}return e}),D=e=>{if(a(_)&&e<a(_))return`${Ce(e)} - before your records start`;let t=m(a(h).get(e)),n=l.metric===`cost`?Z(t):`${Y(t)} tokens`;return`${Ce(e)} - ${t?n:`nothing`}`},j=[`Mon`,``,`Wed`,``,`Fri`,``,`Sun`],M=p(()=>l.days.filter(e=>m(e)>0).length),P=p(()=>a(_)?`Since ${Ce(a(_))}, ${a(M)} ${a(M)===1?`day`:`days`} with usage`:``);var F=Le(),I=o(F),L=o(I);n(L,17,()=>a(E),e=>e.week+e.label,(e,n)=>{var o=Ne(),s=B(o,!0);t(()=>{k(o,`x`,32+a(n).week*a(x)),i(s,a(n).label)}),r(e,o)});var R=s(L);n(R,17,()=>j,U,(e,n,o)=>{var s=d(),l=c(s),u=e=>{var s=Pe(),c=B(s,!0);t(()=>{k(s,`y`,18+o*a(x)+a(y)/2+3),i(c,a(n))}),r(e,s)};g(l,e=>{a(n)&&e(u)}),r(e,s)});var z=s(R);n(z,17,()=>a(v).cells,e=>e.day,(e,n)=>{let i=p(()=>!!a(_)&&a(n).day<a(_));var o=Fe();let s;H(o,(e,t)=>q?.(e,t),()=>D(a(n).day)),t((e,t,r)=>{s=C(o,0,`cell svelte-1iu5iby`,null,s,{blank:a(i)}),k(o,`x`,32+a(n).week*a(x)),k(o,`y`,18+a(n).weekday*a(x)),k(o,`width`,a(y)),k(o,`height`,a(y)),k(o,`rx`,e),k(o,`fill`,`var(--ramp-${t??``})`),k(o,`aria-label`,r)},[()=>Math.max(2,a(y)/4),()=>a(i)?0:T(m(a(h).get(a(n).day))),()=>D(a(n).day)]),r(e,o)}),N(I);var ne=s(I,2),re=o(ne),ie=B(re,!0),W=s(re,8);n(W,16,()=>[0,1,2,3,4,5],e=>e,(e,n)=>{var i=Ie();t(()=>A(i,`background: var(--ramp-${n??``})`)),r(e,i)}),ee(2),N(ne),N(F),t(()=>{k(I,`width`,a(v).weeks*a(x)+32),k(I,`height`,7*a(x)+18),i(ie,a(P))}),te(F,`clientWidth`,e=>b(u,e)),r(e,F),O()}var ze=F(`<div class="tick svelte-118k1un"><span class="svelte-118k1un"> </span></div>`),Be=F(`<span aria-hidden="true" class="svelte-118k1un"></span>`),Ve=F(`<div class="column svelte-118k1un"><div class="stack svelte-118k1un"></div></div>`),He=F(`<div class="trend svelte-118k1un"><div class="plot svelte-118k1un"><!> <div class="bars svelte-118k1un"></div></div> <div class="axis svelte-118k1un"><span> </span> <span> </span></div></div>`);function Ue(e,l){V(l,!0);let u=e=>l.metric===`cost`?e.cost??0:e.total,f=e=>l.metric===`cost`?Z(e):Y(e),m=p(()=>{let e=new Map;for(let t of l.series){let n=e.get(t.day)??{day:t.day,total:0,parts:new Map};n.total+=u(t),n.parts.set(t.key,(n.parts.get(t.key)??0)+u(t)),e.set(t.day,n)}return[...e.values()].sort((e,t)=>e.day.localeCompare(t.day))}),h=p(()=>Math.max(1,...a(m).map(e=>e.total))),_=e=>{let t=l.keys.filter(t=>e.parts.get(t.id)).map(t=>`${t.label} ${f(e.parts.get(t.id)??0)}`).join(`, `);return`${Ce(e.day)} - ${f(e.total)}${t?` (${t})`:``}`},v=e=>l.metric===`cost`?ve(e):Y(e),y=p(()=>[1,.5,0].map(e=>({at:e,label:v(a(h)*e)})));var b=He(),x=o(b),S=o(x);n(S,17,()=>a(y),e=>e.at,(e,n)=>{var s=ze(),c=o(s),l=B(c,!0);N(s),t(()=>{A(s,`bottom: ${a(n).at*100}%`),i(l,a(n).label)}),r(e,s)});var C=s(S,2);n(C,21,()=>a(m),e=>e.day,(e,i)=>{var s=Ve(),u=o(s);n(u,21,()=>l.keys,e=>e.id,(e,n)=>{let o=p(()=>a(i).parts.get(a(n).id)??0);var s=d(),l=c(s),u=e=>{var i=Be();t(()=>A(i,`flex: ${a(o)??``}; background: ${a(n).colour??``}`)),r(e,i)};g(l,e=>{a(o)>0&&e(u)}),r(e,s)}),N(u),N(s),H(s,(e,t)=>q?.(e,t),()=>_(a(i))),t(()=>A(u,`height: ${a(i).total/a(h)*100}%`)),r(e,s)}),N(C),N(x);var w=s(x,2),T=o(w),E=B(T,!0),D=s(T,2),k=B(D,!0);N(w),N(b),t((e,t)=>{i(E,e),i(k,t)},[()=>a(m).length?Ce(a(m)[0].day):``,()=>a(m).length?Ce(a(m)[a(m).length-1].day):``]),r(e,b),O()}var We=`M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81`,Ge={anthropic:`M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z`,openai:`M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z`,google:We,xai:`M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815`,meta:`M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z`,mistral:`M17.143 3.429v3.428h-3.429v3.429h-3.428V6.857H6.857V3.43H3.43v13.714H0v3.428h10.286v-3.428H6.857v-3.429h3.429v3.429h3.429v-3.429h3.428v3.429h-3.428v3.428H24v-3.428h-3.43V3.429z`,deepseek:`M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.004-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.004-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45`,qwen:`M23.919 14.545 20.817 9.17l1.47-2.544a.56.56 0 0 0 0-.566l-1.633-2.83a.57.57 0 0 0-.49-.283h-6.207L12.487.402a.57.57 0 0 0-.49-.284H8.732a.56.56 0 0 0-.49.284L5.139 5.775h-2.94a.56.56 0 0 0-.49.284L.077 8.887a.56.56 0 0 0 0 .567L3.18 14.83l-1.47 2.545a.56.56 0 0 0 0 .566l1.634 2.83a.57.57 0 0 0 .49.283h6.205l1.47 2.545a.57.57 0 0 0 .49.284h3.266a.57.57 0 0 0 .49-.284l3.104-5.375h2.94a.57.57 0 0 0 .49-.283l1.634-2.828a.55.55 0 0 0-.004-.568M8.733.686l1.634 2.828-1.634 2.828H21.8L20.164 9.17H7.425L5.63 6.06Zm1.306 19.801-6.205-.002 1.634-2.83h3.265L2.201 6.344h3.267q3.182 5.517 6.367 11.032zm10.124-5.66L18.53 12l-6.532 11.315-1.634-2.83c2.129-3.673 4.25-7.351 6.373-11.028h3.592l3.102 5.374z`,"claude-code":`M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z`,codex:`M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z`,opencode:`M22 24H2V0h20zM17 4.8H7v14.4h10z`,"gemini-cli":We},Ke=e(`<path fill="currentColor"></path>`),qe=e(`<rect x="1.5" y="1.5" width="21" height="21" rx="6" fill="none" stroke="currentColor" stroke-width="1.8"></rect><text x="12" y="12.5" text-anchor="middle" dominant-baseline="central" fill="currentColor" font-weight="600" font-family="var(--sans)"> </text>`,1),Je=e(`<svg class="mark svelte-jlywqn" viewBox="0 0 24 24" role="img"><!></svg>`);function Ye(e,n){V(n,!0);let l=M(n,`size`,3,16),u=p(()=>Ge[n.id]),d=p(()=>n.label.replace(/[^a-z ]/gi,``).split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase());var f=Je();let m;var h=o(f),_=e=>{var n=Ke();t(()=>k(n,`d`,a(u))),r(e,n)},v=e=>{var n=qe(),o=s(c(n)),l=B(o,!0);t(()=>{k(o,`font-size`,a(d).length>1?9:12),i(l,a(d))}),r(e,n)};g(h,e=>{a(u)?e(_):e(v,-1)}),N(f),t(()=>{k(f,`width`,l()),k(f,`height`,l()),k(f,`aria-label`,n.label),m=A(f,``,m,{color:n.colour})}),r(e,f),O()}var Xe=F(`<i class="dot svelte-eh60s9"></i>`),Ze=F(`<em class="svelte-eh60s9"> </em>`),Qe=F(`<span class="fill svelte-eh60s9"></span> <span class="label svelte-eh60s9"><!> <b class="svelte-eh60s9"> </b> <!></span> <span class="value num svelte-eh60s9"> </span>`,1),$e=F(`<li><!></li>`),et=F(`<ul class="bars svelte-eh60s9"></ul>`),tt=F(`<p class="empty svelte-eh60s9"> </p>`);function nt(e,l){V(l,!0);let u=M(l,`active`,19,()=>[]),f=M(l,`empty`,3,`Nothing in this range`),m=p(()=>Math.max(1,...l.rows.map(e=>e.value)));var h=d(),_=c(h),v=e=>{var d=et();n(d,21,()=>l.rows,e=>e.id,(e,n)=>{var d=$e(),f=o(d);T(f,()=>l.onpick?`button`:`div`,!1,(e,d)=>{H(e,(e,t)=>q?.(e,t),()=>a(n).hint);var f=()=>l.onpick?.(a(n).id);ne(e,e=>({class:`row`,role:l.onpick?`button`:void 0,tabindex:l.onpick?0:void 0,onclick:f,[I]:{on:e}}),[()=>u().includes(a(n).id)],void 0,void 0,`svelte-eh60s9`);var p=Qe(),h=c(p),_=s(h,2),v=o(_),y=e=>{Ye(e,{get id(){return a(n).mark},get label(){return a(n).label},get colour(){return a(n).colour},size:15})},b=e=>{var i=Xe();t(()=>A(i,`background: ${a(n).colour??``}`)),r(e,i)};g(v,e=>{a(n).mark?e(y):e(b,-1)});var x=s(v,2),S=B(x,!0),C=s(x,2),w=e=>{var o=Ze(),s=B(o,!0);t(()=>i(s,a(n).detail)),r(e,o)};g(C,e=>{a(n).detail&&e(w)}),N(_);var T=s(_,2),E=B(T,!0);t(()=>{A(h,`width: ${a(n).value/a(m)*100}%; background: ${a(n).colour??``}`),i(S,a(n).label),i(E,a(n).display)}),r(d,p)}),N(d),r(e,d)}),N(d),r(e,d)},y=e=>{var n=tt(),a=B(n,!0);t(()=>i(a,f())),r(e,n)};g(_,e=>{l.rows.length?e(v):e(y,-1)}),r(e,h),O()}var rt=e(`<circle cx="70" cy="70" fill="none" stroke-width="18" transform="rotate(-90 70 70)" class="svelte-1o711x0"></circle>`),it=F(`<div class="donut svelte-1o711x0"><svg viewBox="0 0 140 140" role="img" class="svelte-1o711x0"><circle cx="70" cy="70" fill="none" stroke="var(--surface-3)" stroke-width="18" class="svelte-1o711x0"></circle><!><text class="centre num svelte-1o711x0" x="70" y="66" text-anchor="middle"> </text><text class="sub svelte-1o711x0" x="70" y="84" text-anchor="middle"> </text></svg></div>`);function at(e,c){V(c,!0);let l=2*Math.PI*52,u=p(()=>{let e=c.slices.reduce((e,t)=>e+t.value,0)||1,t=0;return c.slices.map(n=>{let r=n.value/e*l,i={...n,length:r,offset:t,share:n.value/e*100};return t+=r,i})});var d=it(),f=o(d),m=o(f);k(m,`r`,52);var h=s(m);n(h,17,()=>a(u),e=>e.id,(e,n)=>{var i=rt();k(i,`r`,52),H(i,(e,t)=>q?.(e,t),()=>`${a(n).label} - ${a(n).display} (${a(n).share.toFixed(1)}%)`),t(e=>{k(i,`stroke`,a(n).colour),k(i,`stroke-dasharray`,`${e??``} 326.7256359733385`),k(i,`stroke-dashoffset`,-a(n).offset)},[()=>Math.max(0,a(n).length-2)]),r(e,i)});var g=s(h),_=B(g,!0),v=s(g),y=B(v,!0);N(f),N(d),t(()=>{k(f,`aria-label`,c.caption),i(_,c.centre),i(y,c.caption)}),r(e,d),O()}var ot=F(`<span class="svelte-1qwkpf0"></span>`),st=F(`<li class="svelte-1qwkpf0"><i class="svelte-1qwkpf0"></i> <span class="name svelte-1qwkpf0"> </span> <span class="value num svelte-1qwkpf0"> </span> <span class="share num svelte-1qwkpf0"> </span></li>`),ct=F(`<div class="split svelte-1qwkpf0"><div class="bar svelte-1qwkpf0"></div> <ul class="svelte-1qwkpf0"></ul></div>`);function lt(e,l){V(l,!0);let u=p(()=>l.parts.reduce((e,t)=>e+t.value,0)||1);var f=ct(),m=o(f);n(m,21,()=>l.parts,e=>e.id,(e,n)=>{var i=d(),o=c(i),s=e=>{var i=ot();H(i,(e,t)=>q?.(e,t),()=>`${a(n).label} - ${a(n).display} (${(a(n).value/a(u)*100).toFixed(1)}%)`),t(()=>A(i,`flex: ${a(n).value??``}; background: ${a(n).colour??``}`)),r(e,i)};g(o,e=>{a(n).value>0&&e(s)}),r(e,i)}),N(m);var h=s(m,2);n(h,21,()=>l.parts,e=>e.id,(e,n)=>{var c=st(),l=o(c),d=s(l,2),f=B(d,!0),p=s(d,2),m=B(p,!0),h=s(p,2),g=B(h);N(c),H(c,(e,t)=>q?.(e,t),()=>a(n).hint),t(e=>{A(l,`background: ${a(n).colour??``}`),i(f,a(n).label),i(m,a(n).display),i(g,`${e??``}%`)},[()=>(a(n).value/a(u)*100).toFixed(1)]),r(e,c)}),N(h),N(f),r(e,f),O()}var ut=F(`<i class="svelte-13d36y"></i>`),dt=F(`<span class="day svelte-13d36y"> </span> <div class="hours svelte-13d36y"></div>`,1),ft=F(`<span> </span>`),pt=F(`<div class="clock svelte-13d36y"><div class="rows svelte-13d36y"></div> <div class="scale svelte-13d36y"><!> <span>23</span></div></div>`);function mt(e,l){V(l,!0);let u=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],d=p(()=>{let e=new Map;for(let t of l.points){let n=(t.day+6)%7;e.set(`${n}-${t.hour}`,(e.get(`${n}-${t.hour}`)??0)+t.total)}return e}),f=p(()=>Math.max(1,...a(d).values())),m=e=>e?.32+.68*Math.sqrt(e/a(f)):0;var h=pt(),g=o(h);n(g,22,()=>u,e=>e,(e,o,l)=>{var u=dt(),f=c(u),h=B(f,!0),g=s(f,2);n(g,20,()=>Array(24),U,(e,n,i)=>{let s=p(()=>a(d).get(`${a(l)}-${i}`)??0);var c=ut();H(c,(e,t)=>q?.(e,t),()=>`${o} ${String(i).padStart(2,`0`)}:00 - ${a(s)?`${Y(a(s))} tokens`:`nothing`}`),t(e=>A(c,`--dot: ${e??``}`),[()=>m(a(s))]),r(e,c)}),N(g),t(()=>i(h,o)),r(e,u)}),N(g);var _=s(g,2),v=o(_);n(v,16,()=>[0,6,12,18],e=>e,(e,n)=>{var a=ft(),o=B(a,!0);t(e=>i(o,e),[()=>String(n).padStart(2,`0`)]),r(e,a)}),ee(2),N(_),N(h),r(e,h),O()}var ht=F(`<div><div class="top svelte-tlhxud"><span class="name svelte-tlhxud"> </span> <span class="num pct svelte-tlhxud"> </span></div> <div class="track svelte-tlhxud" role="meter" aria-valuemin="0" aria-valuemax="100"><span class="svelte-tlhxud"></span></div> <span class="reset svelte-tlhxud"><!></span></div>`);function gt(e,n){V(n,!0);let c=p(()=>!!n.window.resets_at&&n.window.resets_at<Date.now()),l=p(()=>a(c)?`text-faint`:n.window.used_percent>=90?`bad`:n.window.used_percent>=70?`warn`:`good`),u=p(()=>[n.window.detail,n.window.resets_at?`resets ${Se(n.window.resets_at)}`:``,`seen ${Se(n.window.seen_at)}`].filter(Boolean).join(` - `));var d=ht();let f;var m=o(d),h=o(m),_=B(h,!0),v=s(h,2),y=B(v);N(m);var b=s(m,2),x=B(b),S=s(b,2),w=o(S),T=e=>{var a=P();t(e=>i(a,`window has turned over, last read ${e??``}`),[()=>Se(n.window.seen_at)]),r(e,a)},E=e=>{var a=P();t(e=>i(a,`resets ${e??``}`),[()=>Se(n.window.resets_at)]),r(e,a)};g(w,e=>{a(c)?e(T):n.window.resets_at&&e(E,1)}),N(S),N(d),H(d,(e,t)=>q?.(e,t),()=>a(u)),t((e,t,r)=>{f=C(d,1,`meter svelte-tlhxud`,null,f,{stale:a(c)}),i(_,n.window.label),A(v,`color: var(--${a(l)??``})`),i(y,`${e??``}%`),k(b,`aria-valuenow`,t),k(b,`aria-label`,n.window.label),A(x,`width: ${r??``}%; background: var(--${a(l)??``})`)},[()=>Math.round(n.window.used_percent),()=>Math.round(n.window.used_percent),()=>Math.min(100,n.window.used_percent)]),r(e,d),O()}var _t=[{id:`anthropic`,label:`Anthropic`,colour:`#d97757`},{id:`openai`,label:`OpenAI`,colour:`#10a37f`},{id:`google`,label:`Google`,colour:`#4285f4`},{id:`meta`,label:`Meta`,colour:`#0668e1`},{id:`mistral`,label:`Mistral`,colour:`#fa520f`},{id:`xai`,label:`xAI`,colour:`#7c7c8a`},{id:`deepseek`,label:`DeepSeek`,colour:`#4d6bfe`},{id:`qwen`,label:`Qwen`,colour:`#a855f7`},{id:`unknown`,label:`Other`,colour:`#8b93a7`}],vt=[[/^claude/,`anthropic`],[/^(gpt|codex|o[1-4]-|chatgpt|text-embedding)/,`openai`],[/^(gemini|gemma|palm)/,`google`],[/^(llama|code-?llama)/,`meta`],[/^(mistral|mixtral|codestral|magistral|devstral)/,`mistral`],[/^grok/,`xai`],[/^deepseek/,`deepseek`],[/^(qwen|qwq)/,`qwen`]];function yt(e){let t=e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e,n=e.includes(`/`)?e.slice(0,e.indexOf(`/`)).toLowerCase():``;return _t.some(e=>e.id===n)?n:vt.find(([e])=>e.test(t.toLowerCase()))?.[1]??`unknown`}var bt=e=>_t.find(t=>t.id===e)??_t[_t.length-1],xt=[{id:`claude-code`,label:`Claude Code`,colour:`#d97757`,home:`https://claude.com/claude-code`},{id:`codex`,label:`Codex`,colour:`#10a37f`,home:`https://developers.openai.com/codex`},{id:`opencode`,label:`OpenCode`,colour:`#f5a524`,home:`https://opencode.ai`},{id:`gemini-cli`,label:`Gemini CLI`,colour:`#4285f4`,home:`https://github.com/google-gemini/gemini-cli`}],St=e=>xt.find(t=>t.id===e)??{id:e,label:e,colour:`#8b93a7`,home:``},Ct=e=>e===null?`--`:ye(e*100),wt=[{id:`session`,label:`Session`,hint:`The tool and its session id`,by:e=>e.id},{id:`name`,label:`Session name`,hint:`What the session was called, if it got a name`,by:e=>e.name,show:e=>e.name??``},{id:`project`,label:`Project`,hint:`Where it ran`,by:e=>e.project},{id:`models`,label:`Models`,hint:`Every model the session used`,by:e=>e.models,show:e=>e.models.split(`, `).map(De).join(`, `)},{id:`ran`,label:`Ran`,hint:`When it last did anything`,by:e=>e.ended,show:e=>we(e.ended)},{id:`tokens`,label:`Tokens`,hint:`Everything in and out, cache included`,by:e=>e.total,show:e=>Y(e.total),numeric:!0},{id:`cost`,label:`Est. cost`,hint:`Worked out from list prices, not your bill`,by:e=>e.cost,show:e=>Z(e.cost),numeric:!0},{id:`peak`,label:`Peak context`,hint:`The biggest prompt the model was handed in one go`,by:e=>e.peak,show:e=>Y(e.peak),numeric:!0},{id:`cache`,label:`Cache hits`,hint:`How much of the input came straight from cache`,by:e=>e.cacheHit,show:e=>Ct(e.cacheHit),numeric:!0},{id:`subagents`,label:`Subagents`,hint:`Share of the tokens spent by subagents. Claude Code only.`,by:e=>e.subagents,show:e=>Ct(e.subagents),numeric:!0},{id:`turns`,label:`Turns`,hint:`Replies from the model, subagents included`,by:e=>e.turns,show:e=>String(e.turns),numeric:!0}],Tt=F(`<th scope="col"><button type="button" class="svelte-1uqtl83"> </button></th>`),Et=F(`<td class="svelte-1uqtl83"><span class="tool svelte-1uqtl83"><!> <span class="id mono svelte-1uqtl83"> </span></span></td>`),Dt=F(`<td class="svelte-1uqtl83"><button type="button" class="link svelte-1uqtl83"> </button></td>`),Ot=F(`<td class="svelte-1uqtl83"> </td>`),kt=F(`<td> </td>`),At=F(`<tr class="svelte-1uqtl83"></tr>`),jt=F(`<div class="scroll svelte-1uqtl83"><table class="svelte-1uqtl83"><thead><tr></tr></thead><tbody class="svelte-1uqtl83"></tbody></table></div>`),Mt=F(`<p class="empty svelte-1uqtl83">No sessions in this range</p>`);function Nt(e,l){V(l,!0);let f=S(`ran`),m=S(!0),h=p(()=>wt.filter(e=>!l.hidden.includes(e.id)&&(e.id!==`name`||l.rows.some(e=>e.name)))),_=p(()=>{let e=(wt.find(e=>e.id===a(f))??wt[0]).by;return l.rows.toSorted((t,n)=>{let[r,i]=[e(t),e(n)];if(r===i)return 0;if(r===null)return 1;if(i===null)return-1;let o=r<i?-1:1;return a(m)?-o:o})});function v(e){b(m,a(f)===e.id?!a(m):!!(e.numeric||e.id===`ran`),!0),b(f,e.id,!0)}var y=d(),x=c(y),w=e=>{var y=jt(),b=o(y),x=o(b),S=o(x);n(S,21,()=>a(h),e=>e.id,(e,n)=>{var s=Tt();let c;var l=o(s),d=B(l,!0);H(l,(e,t)=>q?.(e,t),()=>a(n).hint),N(s),t(()=>{k(s,`aria-sort`,a(f)===a(n).id?a(m)?`descending`:`ascending`:`none`),c=C(s,1,`svelte-1uqtl83`,null,c,{right:a(n).numeric}),i(d,a(n).label)}),u(`click`,l,()=>v(a(n))),r(e,s)}),N(S),N(x);var w=s(x);n(w,21,()=>a(_),e=>`${e.tool}:${e.id}`,(e,f)=>{let m=p(()=>St(a(f).tool));var _=At();n(_,21,()=>a(h),e=>e.id,(e,n)=>{var p=d(),h=c(p),_=e=>{var n=Et(),c=o(n),l=o(c);Ye(l,{get id(){return a(f).tool},get label(){return a(m).label},get colour(){return a(m).colour},size:14});var u=s(l,2),d=B(u,!0);H(u,(e,t)=>q?.(e,t),()=>a(f).id),N(c),N(n),t(e=>i(d,e),[()=>a(f).id.slice(0,8)]),r(e,n)},v=e=>{var n=Dt(),s=o(n),c=B(s,!0);H(s,(e,t)=>q?.(e,t),()=>a(f).project||`unknown`),N(n),t(e=>i(c,e),[()=>Ee(a(f).project)]),u(`click`,s,()=>l.onpick?.(a(f).project)),r(e,n)},y=e=>{var o=Ot(),s=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>`${we(a(f).started)} for ${Te(a(f).ended-a(f).started)}`),t(e=>i(s,e),[()=>a(n).show?.(a(f))]),r(e,o)},b=e=>{var o=kt();let s;var c=B(o,!0);t(e=>{s=C(o,1,`svelte-1uqtl83`,null,s,{right:a(n).numeric,num:a(n).numeric,muted:!a(n).numeric}),i(c,e)},[()=>a(n).show?.(a(f))]),r(e,o)};g(h,e=>{a(n).id===`session`?e(_):a(n).id===`project`?e(v,1):a(n).id===`ran`?e(y,2):e(b,-1)}),r(e,p)}),N(_),r(e,_)}),N(w),N(b),N(y),r(e,y)},T=e=>{var t=Mt();r(e,t)};g(x,e=>{l.rows.length?e(w):e(T,-1)}),r(e,y),O()}l([`click`]);var Pt=F(`<label class="svelte-17j4bwj"><input type="checkbox" class="svelte-17j4bwj"/> <span> </span></label>`),Ft=F(`<div class="menu svelte-17j4bwj"></div>`),It=F(`<div class="fields svelte-17j4bwj"><button type="button" class="trigger svelte-17j4bwj" aria-label="Choose columns"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M2.5 4h11M2.5 8h11M2.5 12h11M6 2.5v11M10 2.5v11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path></svg></button> <!></div>`);function Lt(e,c){V(c,!0);let l=M(c,`hidden`,15),d=S(!1),p,m=e=>{l(l().includes(e)?l().filter(t=>t!==e):[...l(),e]),c.onchange?.(l())},h=e=>{a(d)&&!p.contains(e.target)&&b(d,!1)};var _=It();f(`click`,y,h);var v=o(_);H(v,(e,t)=>q?.(e,t),()=>`Choose columns`);var x=s(v,2),C=e=>{var d=Ft();n(d,21,()=>c.options,e=>e.id,(e,n)=>{var c=Pt(),d=o(c);D(d);var f=s(d,2),p=B(f,!0);N(c),t(e=>{z(d,e),i(p,a(n).label)},[()=>!l().includes(a(n).id)]),u(`change`,d,()=>m(a(n).id)),r(e,c)}),N(d),r(e,d)};g(x,e=>{a(d)&&e(C)}),N(_),R(_,e=>p=e,()=>p),t(()=>k(v,`aria-expanded`,a(d))),u(`click`,v,()=>b(d,!a(d))),r(e,_),O()}l([`click`,`change`]);var Rt=F(`<span class="hint svelte-1vaf4tg"> </span>`),zt=F(`<li class="svelte-1vaf4tg"><div class="svelte-1vaf4tg"><b class="svelte-1vaf4tg"> </b> <span class="svelte-1vaf4tg"> </span> <!> <time class="svelte-1vaf4tg"> </time></div> <button type="button" class="close svelte-1vaf4tg" aria-label="Dismiss"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></li>`),Bt=F(`<ul class="svelte-1vaf4tg"></ul>`),Vt=F(`<aside aria-live="polite"><button type="button" class="head svelte-1vaf4tg"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><circle cx="8" cy="8" r="6.6" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M8 4.6v4.2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path><circle cx="8" cy="11.4" r="0.9" fill="currentColor"></circle></svg> <span class="svelte-1vaf4tg"> </span> <em class="svelte-1vaf4tg"> </em></button> <!></aside>`);function Ht(e,l){V(l,!0);let f=S(x([])),m=S(!1),h=p(()=>l.problems.filter(e=>!a(f).includes(e.id))),_=p(()=>a(h).some(e=>e.level===`error`)?`error`:a(h).some(e=>e.level===`warn`)?`warn`:`info`);var v=d(),y=c(v),w=e=>{var c=Vt(),l=o(c),d=s(o(l),2),p=B(d,!0),v=s(d,2),y=B(v,!0);N(l);var x=s(l,2),S=e=>{var c=Bt();n(c,21,()=>a(h),e=>e.id,(e,n)=>{var c=zt(),l=o(c),d=o(l),p=B(d,!0),m=s(d,2),h=B(m,!0),_=s(m,2),v=e=>{var o=Rt(),s=B(o,!0);t(()=>i(s,a(n).hint)),r(e,o)};g(_,e=>{a(n).hint&&e(v)});var y=s(_,2),x=B(y,!0);N(l);var S=s(l,2);N(c),t(e=>{i(p,a(n).scope),i(h,a(n).message),i(x,e)},[()=>Se(a(n).at)]),u(`click`,S,()=>b(f,[...a(f),a(n).id],!0)),r(e,c)}),N(c),r(e,c)};g(x,e=>{a(m)&&e(S)}),N(c),t(()=>{C(c,1,`problems ${a(_)??``}`,`svelte-1vaf4tg`),k(l,`aria-expanded`,a(m)),i(p,a(h).length===1?a(h)[0].message:`${a(h).length} things need a look`),i(y,a(m)?`Hide`:`Details`)}),u(`click`,l,()=>b(m,!a(m))),r(e,c)};g(y,e=>{a(h).length&&e(w)}),r(e,v),O()}l([`click`]);var Ut=[{id:`today`,label:`Today`,days:1},{id:`7d`,label:`7 days`,days:7},{id:`30d`,label:`30 days`,days:30},{id:`90d`,label:`90 days`,days:90},{id:`1y`,label:`12 months`,days:365},{id:`all`,label:`All time`,days:0}],Wt=e=>Ut.find(t=>t.id===e)?.label??`30 days`,Q=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}),$=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:0}),Gt={"claude-fable-5":Q(10,50),"claude-opus-5":Q(5,25),"claude-opus-4-8":Q(5,25),"claude-opus-4-7":Q(5,25),"claude-opus-4-6":Q(5,25),"claude-opus-4-5":Q(5,25),"claude-opus-4-1":Q(15,75),"claude-sonnet-5":Q(3,15),"claude-sonnet-4-6":Q(3,15),"claude-sonnet-4-5":Q(3,15),"claude-sonnet-4":Q(3,15),"claude-haiku-4-5":Q(1,5),"claude-3-5-haiku":Q(.8,4),"gpt-5.6-sol-pro":$(2.5,15),"gpt-5.6-sol":$(2.5,15),"gpt-5.6-terra":$(2,12),"gpt-5.6-luna":$(.2,1.2),"gpt-5":$(1.25,10),"gpt-5-mini":$(.25,2),"gpt-5-nano":$(.05,.4),"gpt-4.1":$(2,8),"gpt-4o":$(2.5,10),"gemini-3-pro":$(2,12),"gemini-2.5-pro":$(1.25,10),"gemini-2.5-flash":$(.3,2.5)},Kt=[{id:`auto`,label:`Match the system`},{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`dracula`,label:`Dracula`},{id:`catppuccin`,label:`Catppuccin Mocha`},{id:`tokyo-night`,label:`Tokyo Night`},{id:`nord`,label:`Nord`},{id:`gruvbox`,label:`Gruvbox dark`},{id:`solarized`,label:`Solarized dark`}],qt=F(`<option> </option>`),Jt=F(`<li class="svelte-anx9w7"><div><b class="svelte-anx9w7"> </b> <code class="svelte-anx9w7"> </code></div> <span> </span></li>`),Yt=F(`<code class="svelte-anx9w7"> </code> `,1),Xt=F(`<li class="svelte-anx9w7"><code class="svelte-anx9w7"> </code> <span class="num"> </span> <button type="button" class="svelte-anx9w7">Remove</button></li>`),Zt=F(`<ul class="prices svelte-anx9w7"></ul>`),Qt=F(`<dialog aria-labelledby="settings-title" class="svelte-anx9w7"><header class="svelte-anx9w7"><h2 id="settings-title" class="svelte-anx9w7">Settings</h2> <button type="button" class="close svelte-anx9w7" aria-label="Close settings"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></header> <div class="body svelte-anx9w7"><section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Appearance</h3> <label class="field svelte-anx9w7"><span>Theme</span> <select class="svelte-anx9w7"></select></label> <label class="field svelte-anx9w7"><span>Range on open</span> <select class="svelte-anx9w7"></select></label> <label class="field svelte-anx9w7"><span>Headline measure</span> <select class="svelte-anx9w7"><option>Tokens</option><option>Estimated cost</option></select></label></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Data</h3> <ul class="sources svelte-anx9w7"></ul> <p class="note svelte-anx9w7">Point these somewhere else with <!>. History lives in <code class="svelte-anx9w7"> </code> and outlives the transcripts, which most tools prune.</p> <label class="field svelte-anx9w7"><span>Rescan every</span> <select class="svelte-anx9w7"><option>30 seconds</option><option>2 minutes</option><option>10 minutes</option><option>an hour</option></select></label> <label class="check svelte-anx9w7"><input type="checkbox" class="svelte-anx9w7"/> <span>Ask Anthropic for your 5-hour and 7-day windows <em class="svelte-anx9w7">Reads the Claude Code credentials on this machine. Nothing else leaves it.</em></span></label> <div class="row svelte-anx9w7"><button type="button" class="action svelte-anx9w7">Rescan now</button> <span class="note svelte-anx9w7"> </span></div></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Prices</h3> <p class="note svelte-anx9w7"> </p> <!> <div class="add svelte-anx9w7"><input placeholder="model id" class="svelte-anx9w7"/> <input placeholder="in" inputmode="decimal" class="svelte-anx9w7"/> <input placeholder="out" inputmode="decimal" class="svelte-anx9w7"/> <button type="button" class="action svelte-anx9w7">Add</button></div></section></div></dialog>`);function $t(e,l){V(l,!0);let d=M(l,`open`,15),m,h=S(``),_=S(``),y=S(``);v(()=>{d()&&!m.open&&m.showModal(),!d()&&m.open&&m.close()});let x=p(()=>Object.entries(l.saved.prices));function T(){let e=Number(a(_)),t=Number(a(y));a(h).trim()&&Number.isFinite(e)&&Number.isFinite(t)&&(l.onsave({prices:{...l.saved.prices,[a(h).trim()]:{input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}}}),b(h,``),b(_,``),b(y,``))}function k(e){let t={...l.saved.prices};delete t[e],l.onsave({prices:t})}let A={"claude-code":`AIUSAGE_CLAUDE_DIR`,codex:`AIUSAGE_CODEX_DIR`,opencode:`AIUSAGE_OPENCODE_DIR`};var P=Qt(),F=o(P),I=s(o(F),2);N(F);var te=s(F,2),ne=o(te),H=s(o(ne),2),U=s(o(H),2);n(U,21,()=>Kt,e=>e.id,(e,n)=>{var o=qt(),s=B(o,!0),c={};t(()=>{i(s,a(n).label),c!==(c=a(n).id)&&(o.value=(o.__value=c)??``)}),r(e,o)}),N(U);var re;L(U),N(H);var ie=s(H,2),W=s(o(ie),2);n(W,21,()=>Ut,e=>e.id,(e,n)=>{var o=qt(),s=B(o,!0),c={};t(()=>{i(s,a(n).label),c!==(c=a(n).id)&&(o.value=(o.__value=c)??``)}),r(e,o)}),N(W);var G;L(W),N(ie);var K=s(ie,2),q=s(o(K),2),ae=o(q);ae.value=ae.__value=`tokens`;var oe=s(ae);oe.value=oe.__value=`cost`,N(q);var J;L(q),N(K),N(ne);var se=s(ne,2),ce=s(o(se),2);n(ce,21,()=>l.sources,e=>e.id,(e,n)=>{var c=Jt(),l=o(c),u=o(l),d=B(u,!0),f=s(u,2),p=B(f,!0);N(l);var m=s(l,2);let h;var g=B(m,!0);N(c),t(()=>{i(d,a(n).label),i(p,a(n).root),h=C(m,1,`badge svelte-anx9w7`,null,h,{on:a(n).present}),i(g,a(n).present?`${a(n).files} files`:`not found`)}),r(e,c)}),N(ce);var le=s(ce,2),ue=s(o(le));n(ue,19,()=>l.sources,e=>e.id,(e,n,o)=>{var u=Yt(),d=c(u),f=B(d,!0),p=s(d,1,!0);t(()=>{i(f,A[a(n).id]??a(n).id),i(p,a(o)<l.sources.length-1?`, `:``)}),r(e,u)});var de=s(ue,2),fe=B(de,!0);ee(),N(le);var pe=s(le,2),me=s(o(pe),2),he=o(me);he.value=he.__value=`30`;var ge=s(he);ge.value=ge.__value=`120`;var _e=s(ge);_e.value=_e.__value=`600`;var Y=s(_e);Y.value=Y.__value=`3600`,N(me);var X;L(me),N(pe);var Z=s(pe,2),ve=o(Z);D(ve),ee(2),N(Z);var ye=s(Z,2),be=o(ye),xe=s(be,2),Ce=B(xe);N(ye),N(se);var we=s(se,2),Te=s(o(we),2),Ee=B(Te),De=s(Te,2),Oe=e=>{var c=Zt();n(c,21,()=>a(x),([e,t])=>e,(e,n)=>{var c=p(()=>w(a(n),2));let l=()=>a(c)[0],d=()=>a(c)[1];var f=Xt(),m=o(f),h=B(m,!0),g=s(m,2),_=B(g),v=s(g,2);N(f),t(()=>{i(h,l()),i(_,`in ${d().input??``} / out ${d().output??``}`)}),u(`click`,v,()=>k(l())),r(e,f)}),N(c),r(e,c)};g(De,e=>{a(x).length&&e(Oe)});var ke=s(De,2),Ae=o(ke);D(Ae);var je=s(Ae,2);D(je);var Me=s(je,2);D(Me);var Ne=s(Me,2);N(ke),N(we),N(te),N(P),R(P,e=>m=e,()=>m),t((e,t,n)=>{re!==(re=l.saved.theme)&&(U.value=(U.__value=re)??``,j(U,re)),G!==(G=l.saved.range)&&(W.value=(W.__value=G)??``,j(W,G)),J!==(J=l.saved.metric)&&(q.value=(q.__value=J)??``,j(q,J)),i(fe,l.dbPath),X!==(X=e)&&(me.value=(me.__value=X)??``,j(me,X)),z(ve,l.saved.claudeWindows),i(Ce,`Last scan ${t??``}`),i(Ee,`Dollars per million tokens. ${n??``} models are priced out of the box; anything
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,R as m,S as h,T as g,U as _,V as v,W as y,X as b,Y as x,Z as S,_ as C,at as w,b as T,c as E,d as D,et as O,f as k,g as A,h as j,i as M,it as N,j as P,k as F,l as I,m as L,o as R,p as z,q as B,rt as ee,s as te,tt as V,u as ne,v as H,w as U,y as re,z as ie}from"../chunks/Dsm7b1TR.js";import{t as W}from"../chunks/G5wHZJy8.js";import"../chunks/xihTtKlq.js";var G=null;function K(){return G||(G=document.createElement(`div`),G.className=`app-tooltip`,G.setAttribute(`role`,`tooltip`),document.body.append(G),G)}var q=(e,t)=>{let n=t,r=()=>{G&&G.classList.remove(`is-open`)},i=()=>{if(!n)return;let t=K();t.textContent=n,t.classList.add(`is-open`);let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=Math.min(Math.max(8,r.left+r.width/2-i.width/2),window.innerWidth-i.width-8),o=r.top>i.height+12;t.style.left=`${a}px`,t.style.top=`${o?r.top-i.height-8:r.bottom+8}px`};return e.addEventListener(`pointerenter`,i),e.addEventListener(`focusin`,i),e.addEventListener(`pointerleave`,r),e.addEventListener(`focusout`,r),window.addEventListener(`scroll`,r,!0),{update:t=>{n=t,t&&e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??t)},destroy:()=>{r(),e.removeEventListener(`pointerenter`,i),e.removeEventListener(`focusin`,i),e.removeEventListener(`pointerleave`,r),e.removeEventListener(`focusout`,r),window.removeEventListener(`scroll`,r,!0)}}},ae=F(`<div class="actions svelte-hxsa5u"><!></div>`),oe=F(`<section class="panel svelte-hxsa5u"><header class="svelte-hxsa5u"><h2 class="svelte-hxsa5u"> </h2> <!></header> <div class="body svelte-hxsa5u"><!></div></section>`);function J(e,n){let a=M(n,`span`,3,12);var c=oe(),l=o(c),u=o(l),d=B(u,!0);H(u,(e,t)=>q?.(e,t),()=>n.hint);var f=s(u,2),p=e=>{var t=ae(),i=o(t);h(i,()=>n.actions),N(t),r(e,t)};g(f,e=>{n.actions&&e(p)}),N(l);var m=s(l,2),_=o(m);h(_,()=>n.children),N(m),N(c),t(()=>{A(c,`--span: ${a()??``}`),i(d,n.title)}),r(e,c)}var se=F(`<button type="button"> </button>`),ce=F(`<div role="group"></div>`);function le(e,o){V(o,!0);let s=M(o,`value`,15),c=M(o,`size`,3,`md`);var l=ce();let d;n(l,21,()=>o.options,e=>e.id,(e,n)=>{var o=se();let c;var l=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>a(n).hint),t(()=>{k(o,`aria-pressed`,s()===a(n).id),c=C(o,1,`svelte-1dkbyok`,null,c,{on:s()===a(n).id}),i(l,a(n).label)}),u(`click`,o,()=>s(a(n).id)),r(e,o)}),N(l),t(()=>{d=C(l,1,`segmented svelte-1dkbyok`,null,d,{sm:c()===`sm`}),k(l,`aria-label`,o.label)}),r(e,l),O()}l([`click`]);var ue=F(`<b class="num svelte-vbwhwd"> </b>`),de=F(`<label class="svelte-vbwhwd"><input type="checkbox" class="svelte-vbwhwd"/> <span class="svelte-vbwhwd"> </span></label>`),fe=F(`<p class="none svelte-vbwhwd">Nothing matches</p>`),pe=F(`<button type="button" class="clear svelte-vbwhwd">Clear</button>`),me=F(`<div class="menu svelte-vbwhwd"><input class="search svelte-vbwhwd" type="search"/> <div class="list svelte-vbwhwd"></div> <!></div>`),he=F(`<div class="select svelte-vbwhwd"><button type="button"> <!> <svg viewBox="0 0 12 12" width="10" height="10" aria-hidden="true"><path d="M2 4.5 6 8.5 10 4.5" fill="none" stroke="currentColor" stroke-width="1.5"></path></svg></button> <!></div>`);function ge(e,c){V(c,!0);let l=M(c,`selected`,15),d=M(c,`format`,3,e=>e),m=S(!1),h=S(``),_,v=p(()=>c.options.filter(e=>d()(e).toLowerCase().includes(a(h).toLowerCase()))),x=e=>{l(l().includes(e)?l().filter(t=>t!==e):[...l(),e])},w=e=>{a(m)&&!_.contains(e.target)&&b(m,!1)};var T=he();f(`click`,y,w);var A=o(T);let j;var P=o(A),F=s(P),I=e=>{var n=ue(),a=B(n,!0);t(()=>i(a,l().length)),r(e,n)};g(F,e=>{l().length&&e(I)}),ee(2),N(A);var L=s(A,2),te=e=>{var f=me(),p=o(f);D(p);var m=s(p,2);n(m,20,()=>a(v),e=>e,(e,n)=>{var a=de(),c=o(a);D(c);var f=s(c,2),p=B(f,!0);N(a),t((e,t)=>{z(c,e),i(p,t)},[()=>l().includes(n),()=>d()(n)]),u(`change`,c,()=>x(n)),r(e,a)},e=>{var t=fe();r(e,t)}),N(m);var _=s(m,2),y=e=>{var t=pe();u(`click`,t,()=>l([])),r(e,t)};g(_,e=>{l().length&&e(y)}),N(f),t(e=>k(p,`placeholder`,`Filter ${e??``}`),[()=>c.label.toLowerCase()]),E(p,()=>a(h),e=>b(h,e)),r(e,f)};g(L,e=>{a(m)&&e(te)}),N(T),R(T,e=>_=e,()=>_),t(()=>{j=C(A,1,`trigger svelte-vbwhwd`,null,j,{on:l().length>0}),k(A,`aria-expanded`,a(m)),i(P,`${c.label??``} `)}),u(`click`,A,()=>b(m,!a(m))),r(e,T),O()}l([`click`,`change`]);var _e=[{at:0xe8d4a51000,suffix:`T`},{at:1e9,suffix:`B`},{at:1e6,suffix:`M`},{at:1e3,suffix:`k`}];function Y(e){let t=_e.find(t=>Math.abs(e)>=t.at);if(!t)return String(Math.round(e));let n=e/t.at;return`${n.toFixed(+(n<10))}${t.suffix}`}var X=e=>Math.round(e).toLocaleString(`en-GB`);function Z(e){return e===null?`--`:e===0?`$0`:Math.abs(e)<.01?`<$0.01`:`$${e.toLocaleString(`en-GB`,{minimumFractionDigits:2,maximumFractionDigits:2})}`}function ve(e){return e===null?`--`:Math.abs(e)>=1e3?`$${Y(e)}`:Z(e)}var ye=(e,t=0)=>`${e.toFixed(t)}%`,be=new Intl.RelativeTimeFormat(`en-GB`,{numeric:`auto`}),xe=[[`second`,60],[`minute`,60],[`hour`,24],[`day`,7],[`week`,4.35],[`month`,12]];function Se(e,t=Date.now()){if(!e)return`never`;let n=(e-t)/1e3;if(Math.abs(n)<45)return n<0?`just now`:`in a moment`;for(let[e,t]of xe){if(Math.abs(n)<t)return be.format(Math.round(n),e);n/=t}return be.format(Math.round(n),`year`)}var Ce=e=>new Date(`${e}T00:00:00`).toLocaleDateString(`en-GB`,{weekday:`short`,day:`numeric`,month:`short`}),we=e=>new Date(e).toLocaleString(`en-GB`,{day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`});function Te(e){let t=Math.round(e/6e4);return t<1?`under a minute`:t<60?`${t} min`:`${Math.floor(t/60)}h ${t%60}m`}var Ee=e=>e?e.replace(/\/+$/,``).split(`/`).pop()||e:`unknown`,De=e=>(e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e).replace(/-\d{8}$/,``);function Oe(e,t){if(!t)return null;let n=(e-t)/t*100;return!Number.isFinite(n)||Math.abs(n)<1?{text:`flat`,tone:`even`}:{text:`${n>0?`+`:``}${n.toFixed(0)}%`,tone:n>0?`up`:`down`}}var ke=F(`<span class="delta svelte-l3stpt"> </span>`),Ae=F(`<i> </i>`),je=F(`<div class="figures svelte-l3stpt"><div class="lead svelte-l3stpt"><span class="cap svelte-l3stpt"> </span> <strong class="num svelte-l3stpt"> </strong> <!></div> <dl class="svelte-l3stpt"><div class="svelte-l3stpt"><dt class="svelte-l3stpt">Est. cost</dt> <dd class="num svelte-l3stpt"> <!></dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Sessions</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Active days</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Daily pace</dt> <dd class="num svelte-l3stpt"> </dd></div></dl></div>`);function Me(e,n){V(n,!0);let c=p(()=>Oe(n.totals.total,n.previous.total)),l=p(()=>Oe(n.totals.cost??0,n.previous.cost??0)),u=p(()=>n.activeDays?n.totals.total/n.activeDays:0);var d=je(),f=o(d),m=o(f),h=B(m),_=s(m,2),v=B(_,!0);H(_,(e,t)=>q?.(e,t),()=>X(n.totals.total));var y=s(_,2),b=e=>{var o=ke(),s=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>`on the ${n.rangeLabel.toLowerCase()} before`),t(()=>i(s,a(c).text)),r(e,o)};g(y,e=>{a(c)&&e(b)}),N(f);var x=s(f,2),S=o(x),w=o(S);H(w,(e,t)=>q?.(e,t),()=>`What these tokens would cost at published API rates. A subscription is billed separately.`);var T=s(w,2),E=o(T),D=s(E),k=e=>{var n=Ae(),o=B(n,!0);t(()=>{C(n,1,`delta cost ${a(l).tone??``}`,`svelte-l3stpt`),i(o,a(l).text)}),r(e,n)};g(D,e=>{a(l)&&e(k)}),N(T),N(S);var A=s(S,2),j=s(o(A),2),M=B(j,!0);N(A);var P=s(A,2),F=o(P);H(F,(e,t)=>q?.(e,t),()=>`Days with at least one request`);var I=s(F,2),L=B(I,!0);N(P);var R=s(P,2),z=o(R);H(z,(e,t)=>q?.(e,t),()=>`Tokens per active day`);var ee=s(z,2),te=B(ee,!0);N(R),N(x),N(d),t((e,t,n,r,a,o)=>{i(h,`Tokens, ${e??``}`),i(v,t),i(E,`${n??``} `),i(M,r),i(L,a),i(te,o)},[()=>n.rangeLabel.toLowerCase(),()=>Y(n.totals.total),()=>Z(n.totals.cost),()=>X(n.totals.sessions),()=>X(n.activeDays),()=>Y(a(u))]),r(e,d),O()}var Ne=e(`<text class="axis svelte-1iu5iby" y="10"> </text>`),Pe=e(`<text class="axis svelte-1iu5iby" x="0"> </text>`),Fe=e(`<rect role="img"></rect>`),Ie=F(`<i class="svelte-1iu5iby"></i>`),Le=F(`<div class="calendar svelte-1iu5iby"><svg role="img" aria-label="Daily usage calendar" class="svelte-1iu5iby"><!><!><!></svg> <div class="legend svelte-1iu5iby"><span class="span svelte-1iu5iby"> </span> <span>No records</span> <i class="blank svelte-1iu5iby"></i> <span class="spread svelte-1iu5iby">Quieter</span> <!> <span>Busier</span></div></div>`);function Re(e,l){V(l,!0);let u=S(680),f=e=>e.toLocaleDateString(`en-CA`),m=e=>e?l.metric===`cost`?e.cost??0:e.total:0,h=p(()=>new Map(l.days.map(e=>[e.day,e]))),_=p(()=>l.oldest?f(new Date(l.oldest)):l.days[0]?.day??``),v=p(()=>{let e=new Date;e.setHours(0,0,0,0);let t=new Date(l.days.length?`${l.days[0].day}T00:00:00`:e),n=new Date(e);n.setDate(n.getDate()-370);let r=new Date(e);r.setDate(r.getDate()-125);let i=new Date(Math.max(n.getTime(),Math.min(t.getTime(),r.getTime())));i.setDate(i.getDate()-(i.getDay()+6)%7);let a=[],o=new Date(i),s=0;for(;o<=e;){let e=(o.getDay()+6)%7;a.push({day:f(o),date:new Date(o),week:s,weekday:e}),e===6&&(s+=1),o.setDate(o.getDate()+1)}return{cells:a,weeks:s+1}}),y=p(()=>Math.max(9,Math.min(30,Math.floor((a(u)-32)/a(v).weeks)-3))),x=p(()=>a(y)+3),w=p(()=>{let e=l.days.map(e=>m(e)).filter(e=>e>0).sort((e,t)=>e-t);return e.length?[.2,.4,.6,.8].map(t=>e[Math.floor(e.length*t)]):[]}),T=e=>e<=0?0:a(w).filter(t=>e>=t).length+1,E=p(()=>{let e=[];for(let t of a(v).cells){if(t.weekday!==0)continue;let n=t.date.toLocaleDateString(`en-GB`,{month:`short`});(!e.length||t.date.getDate()<=7&&e[e.length-1].label!==n)&&e.push({label:n,week:t.week})}return e}),D=e=>{if(a(_)&&e<a(_))return`${Ce(e)} - before your records start`;let t=m(a(h).get(e)),n=l.metric===`cost`?Z(t):`${Y(t)} tokens`;return`${Ce(e)} - ${t?n:`nothing`}`},j=[`Mon`,``,`Wed`,``,`Fri`,``,`Sun`],M=p(()=>l.days.filter(e=>m(e)>0).length),P=p(()=>a(_)?`Since ${Ce(a(_))}, ${a(M)} ${a(M)===1?`day`:`days`} with usage`:``);var F=Le(),I=o(F),L=o(I);n(L,17,()=>a(E),e=>e.week+e.label,(e,n)=>{var o=Ne(),s=B(o,!0);t(()=>{k(o,`x`,32+a(n).week*a(x)),i(s,a(n).label)}),r(e,o)});var R=s(L);n(R,17,()=>j,U,(e,n,o)=>{var s=d(),l=c(s),u=e=>{var s=Pe(),c=B(s,!0);t(()=>{k(s,`y`,18+o*a(x)+a(y)/2+3),i(c,a(n))}),r(e,s)};g(l,e=>{a(n)&&e(u)}),r(e,s)});var z=s(R);n(z,17,()=>a(v).cells,e=>e.day,(e,n)=>{let i=p(()=>!!a(_)&&a(n).day<a(_));var o=Fe();let s;H(o,(e,t)=>q?.(e,t),()=>D(a(n).day)),t((e,t,r)=>{s=C(o,0,`cell svelte-1iu5iby`,null,s,{blank:a(i)}),k(o,`x`,32+a(n).week*a(x)),k(o,`y`,18+a(n).weekday*a(x)),k(o,`width`,a(y)),k(o,`height`,a(y)),k(o,`rx`,e),k(o,`fill`,`var(--ramp-${t??``})`),k(o,`aria-label`,r)},[()=>Math.max(2,a(y)/4),()=>a(i)?0:T(m(a(h).get(a(n).day))),()=>D(a(n).day)]),r(e,o)}),N(I);var ne=s(I,2),re=o(ne),ie=B(re,!0),W=s(re,8);n(W,16,()=>[0,1,2,3,4,5],e=>e,(e,n)=>{var i=Ie();t(()=>A(i,`background: var(--ramp-${n??``})`)),r(e,i)}),ee(2),N(ne),N(F),t(()=>{k(I,`width`,a(v).weeks*a(x)+32),k(I,`height`,7*a(x)+18),i(ie,a(P))}),te(F,`clientWidth`,e=>b(u,e)),r(e,F),O()}var ze=F(`<div class="tick svelte-118k1un"><span class="svelte-118k1un"> </span></div>`),Be=F(`<span aria-hidden="true" class="svelte-118k1un"></span>`),Ve=F(`<div class="column svelte-118k1un"><div class="stack svelte-118k1un"></div></div>`),He=F(`<div class="trend svelte-118k1un"><div class="plot svelte-118k1un"><!> <div class="bars svelte-118k1un"></div></div> <div class="axis svelte-118k1un"><span> </span> <span> </span></div></div>`);function Ue(e,l){V(l,!0);let u=e=>l.metric===`cost`?e.cost??0:e.total,f=e=>l.metric===`cost`?Z(e):Y(e),m=p(()=>{let e=new Map;for(let t of l.series){let n=e.get(t.day)??{day:t.day,total:0,parts:new Map};n.total+=u(t),n.parts.set(t.key,(n.parts.get(t.key)??0)+u(t)),e.set(t.day,n)}return[...e.values()].sort((e,t)=>e.day.localeCompare(t.day))}),h=p(()=>Math.max(1,...a(m).map(e=>e.total))),_=e=>{let t=l.keys.filter(t=>e.parts.get(t.id)).map(t=>`${t.label} ${f(e.parts.get(t.id)??0)}`).join(`, `);return`${Ce(e.day)} - ${f(e.total)}${t?` (${t})`:``}`},v=e=>l.metric===`cost`?ve(e):Y(e),y=p(()=>[1,.5,0].map(e=>({at:e,label:v(a(h)*e)})));var b=He(),x=o(b),S=o(x);n(S,17,()=>a(y),e=>e.at,(e,n)=>{var s=ze(),c=o(s),l=B(c,!0);N(s),t(()=>{A(s,`bottom: ${a(n).at*100}%`),i(l,a(n).label)}),r(e,s)});var C=s(S,2);n(C,21,()=>a(m),e=>e.day,(e,i)=>{var s=Ve(),u=o(s);n(u,21,()=>l.keys,e=>e.id,(e,n)=>{let o=p(()=>a(i).parts.get(a(n).id)??0);var s=d(),l=c(s),u=e=>{var i=Be();t(()=>A(i,`flex: ${a(o)??``}; background: ${a(n).colour??``}`)),r(e,i)};g(l,e=>{a(o)>0&&e(u)}),r(e,s)}),N(u),N(s),H(s,(e,t)=>q?.(e,t),()=>_(a(i))),t(()=>A(u,`height: ${a(i).total/a(h)*100}%`)),r(e,s)}),N(C),N(x);var w=s(x,2),T=o(w),E=B(T,!0),D=s(T,2),k=B(D,!0);N(w),N(b),t((e,t)=>{i(E,e),i(k,t)},[()=>a(m).length?Ce(a(m)[0].day):``,()=>a(m).length?Ce(a(m)[a(m).length-1].day):``]),r(e,b),O()}var We=`M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81`,Ge={anthropic:`M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z`,openai:`M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z`,google:We,xai:`M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815`,meta:`M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z`,mistral:`M17.143 3.429v3.428h-3.429v3.429h-3.428V6.857H6.857V3.43H3.43v13.714H0v3.428h10.286v-3.428H6.857v-3.429h3.429v3.429h3.429v-3.429h3.428v3.429h-3.428v3.428H24v-3.428h-3.43V3.429z`,deepseek:`M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.004-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.004-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45`,qwen:`M23.919 14.545 20.817 9.17l1.47-2.544a.56.56 0 0 0 0-.566l-1.633-2.83a.57.57 0 0 0-.49-.283h-6.207L12.487.402a.57.57 0 0 0-.49-.284H8.732a.56.56 0 0 0-.49.284L5.139 5.775h-2.94a.56.56 0 0 0-.49.284L.077 8.887a.56.56 0 0 0 0 .567L3.18 14.83l-1.47 2.545a.56.56 0 0 0 0 .566l1.634 2.83a.57.57 0 0 0 .49.283h6.205l1.47 2.545a.57.57 0 0 0 .49.284h3.266a.57.57 0 0 0 .49-.284l3.104-5.375h2.94a.57.57 0 0 0 .49-.283l1.634-2.828a.55.55 0 0 0-.004-.568M8.733.686l1.634 2.828-1.634 2.828H21.8L20.164 9.17H7.425L5.63 6.06Zm1.306 19.801-6.205-.002 1.634-2.83h3.265L2.201 6.344h3.267q3.182 5.517 6.367 11.032zm10.124-5.66L18.53 12l-6.532 11.315-1.634-2.83c2.129-3.673 4.25-7.351 6.373-11.028h3.592l3.102 5.374z`,"claude-code":`M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z`,codex:`M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z`,opencode:`M22 24H2V0h20zM17 4.8H7v14.4h10z`,"gemini-cli":We},Ke=e(`<path fill="currentColor"></path>`),qe=e(`<rect x="1.5" y="1.5" width="21" height="21" rx="6" fill="none" stroke="currentColor" stroke-width="1.8"></rect><text x="12" y="12.5" text-anchor="middle" dominant-baseline="central" fill="currentColor" font-weight="600" font-family="var(--sans)"> </text>`,1),Je=e(`<svg class="mark svelte-jlywqn" viewBox="0 0 24 24" role="img"><!></svg>`);function Ye(e,n){V(n,!0);let l=M(n,`size`,3,16),u=p(()=>Ge[n.id]),d=p(()=>n.label.replace(/[^a-z ]/gi,``).split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase());var f=Je();let m;var h=o(f),_=e=>{var n=Ke();t(()=>k(n,`d`,a(u))),r(e,n)},v=e=>{var n=qe(),o=s(c(n)),l=B(o,!0);t(()=>{k(o,`font-size`,a(d).length>1?9:12),i(l,a(d))}),r(e,n)};g(h,e=>{a(u)?e(_):e(v,-1)}),N(f),t(()=>{k(f,`width`,l()),k(f,`height`,l()),k(f,`aria-label`,n.label),m=A(f,``,m,{color:n.colour})}),r(e,f),O()}var Xe=F(`<i class="dot svelte-eh60s9"></i>`),Ze=F(`<em class="svelte-eh60s9"> </em>`),Qe=F(`<span class="fill svelte-eh60s9"></span> <span class="label svelte-eh60s9"><!> <b class="svelte-eh60s9"> </b> <!></span> <span class="value num svelte-eh60s9"> </span>`,1),$e=F(`<li><!></li>`),et=F(`<ul class="bars svelte-eh60s9"></ul>`),tt=F(`<p class="empty svelte-eh60s9"> </p>`);function nt(e,l){V(l,!0);let u=M(l,`active`,19,()=>[]),f=M(l,`empty`,3,`Nothing in this range`),m=p(()=>Math.max(1,...l.rows.map(e=>e.value)));var h=d(),_=c(h),v=e=>{var d=et();n(d,21,()=>l.rows,e=>e.id,(e,n)=>{var d=$e(),f=o(d);T(f,()=>l.onpick?`button`:`div`,!1,(e,d)=>{H(e,(e,t)=>q?.(e,t),()=>a(n).hint);var f=()=>l.onpick?.(a(n).id);ne(e,e=>({class:`row`,role:l.onpick?`button`:void 0,tabindex:l.onpick?0:void 0,onclick:f,[I]:{on:e}}),[()=>u().includes(a(n).id)],void 0,void 0,`svelte-eh60s9`);var p=Qe(),h=c(p),_=s(h,2),v=o(_),y=e=>{Ye(e,{get id(){return a(n).mark},get label(){return a(n).label},get colour(){return a(n).colour},size:15})},b=e=>{var i=Xe();t(()=>A(i,`background: ${a(n).colour??``}`)),r(e,i)};g(v,e=>{a(n).mark?e(y):e(b,-1)});var x=s(v,2),S=B(x,!0),C=s(x,2),w=e=>{var o=Ze(),s=B(o,!0);t(()=>i(s,a(n).detail)),r(e,o)};g(C,e=>{a(n).detail&&e(w)}),N(_);var T=s(_,2),E=B(T,!0);t(()=>{A(h,`width: ${a(n).value/a(m)*100}%; background: ${a(n).colour??``}`),i(S,a(n).label),i(E,a(n).display)}),r(d,p)}),N(d),r(e,d)}),N(d),r(e,d)},y=e=>{var n=tt(),a=B(n,!0);t(()=>i(a,f())),r(e,n)};g(_,e=>{l.rows.length?e(v):e(y,-1)}),r(e,h),O()}var rt=e(`<circle cx="70" cy="70" fill="none" stroke-width="18" transform="rotate(-90 70 70)" class="svelte-1o711x0"></circle>`),it=F(`<div class="donut svelte-1o711x0"><svg viewBox="0 0 140 140" role="img" class="svelte-1o711x0"><circle cx="70" cy="70" fill="none" stroke="var(--surface-3)" stroke-width="18" class="svelte-1o711x0"></circle><!><text class="centre num svelte-1o711x0" x="70" y="66" text-anchor="middle"> </text><text class="sub svelte-1o711x0" x="70" y="84" text-anchor="middle"> </text></svg></div>`);function at(e,c){V(c,!0);let l=2*Math.PI*52,u=p(()=>{let e=c.slices.reduce((e,t)=>e+t.value,0)||1,t=0;return c.slices.map(n=>{let r=n.value/e*l,i={...n,length:r,offset:t,share:n.value/e*100};return t+=r,i})});var d=it(),f=o(d),m=o(f);k(m,`r`,52);var h=s(m);n(h,17,()=>a(u),e=>e.id,(e,n)=>{var i=rt();k(i,`r`,52),H(i,(e,t)=>q?.(e,t),()=>`${a(n).label} - ${a(n).display} (${a(n).share.toFixed(1)}%)`),t(e=>{k(i,`stroke`,a(n).colour),k(i,`stroke-dasharray`,`${e??``} 326.7256359733385`),k(i,`stroke-dashoffset`,-a(n).offset)},[()=>Math.max(0,a(n).length-2)]),r(e,i)});var g=s(h),_=B(g,!0),v=s(g),y=B(v,!0);N(f),N(d),t(()=>{k(f,`aria-label`,c.caption),i(_,c.centre),i(y,c.caption)}),r(e,d),O()}var ot=F(`<span class="svelte-1qwkpf0"></span>`),st=F(`<li class="svelte-1qwkpf0"><i class="svelte-1qwkpf0"></i> <span class="name svelte-1qwkpf0"> </span> <span class="value num svelte-1qwkpf0"> </span> <span class="share num svelte-1qwkpf0"> </span></li>`),ct=F(`<div class="split svelte-1qwkpf0"><div class="bar svelte-1qwkpf0"></div> <ul class="svelte-1qwkpf0"></ul></div>`);function lt(e,l){V(l,!0);let u=p(()=>l.parts.reduce((e,t)=>e+t.value,0)||1);var f=ct(),m=o(f);n(m,21,()=>l.parts,e=>e.id,(e,n)=>{var i=d(),o=c(i),s=e=>{var i=ot();H(i,(e,t)=>q?.(e,t),()=>`${a(n).label} - ${a(n).display} (${(a(n).value/a(u)*100).toFixed(1)}%)`),t(()=>A(i,`flex: ${a(n).value??``}; background: ${a(n).colour??``}`)),r(e,i)};g(o,e=>{a(n).value>0&&e(s)}),r(e,i)}),N(m);var h=s(m,2);n(h,21,()=>l.parts,e=>e.id,(e,n)=>{var c=st(),l=o(c),d=s(l,2),f=B(d,!0),p=s(d,2),m=B(p,!0),h=s(p,2),g=B(h);N(c),H(c,(e,t)=>q?.(e,t),()=>a(n).hint),t(e=>{A(l,`background: ${a(n).colour??``}`),i(f,a(n).label),i(m,a(n).display),i(g,`${e??``}%`)},[()=>(a(n).value/a(u)*100).toFixed(1)]),r(e,c)}),N(h),N(f),r(e,f),O()}var ut=F(`<i class="svelte-13d36y"></i>`),dt=F(`<span class="day svelte-13d36y"> </span> <div class="hours svelte-13d36y"></div>`,1),ft=F(`<span> </span>`),pt=F(`<div class="clock svelte-13d36y"><div class="rows svelte-13d36y"></div> <div class="scale svelte-13d36y"><!> <span>23</span></div></div>`);function mt(e,l){V(l,!0);let u=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],d=p(()=>{let e=new Map;for(let t of l.points){let n=(t.day+6)%7;e.set(`${n}-${t.hour}`,(e.get(`${n}-${t.hour}`)??0)+t.total)}return e}),f=p(()=>Math.max(1,...a(d).values())),m=e=>e?.32+.68*Math.sqrt(e/a(f)):0;var h=pt(),g=o(h);n(g,22,()=>u,e=>e,(e,o,l)=>{var u=dt(),f=c(u),h=B(f,!0),g=s(f,2);n(g,20,()=>Array(24),U,(e,n,i)=>{let s=p(()=>a(d).get(`${a(l)}-${i}`)??0);var c=ut();H(c,(e,t)=>q?.(e,t),()=>`${o} ${String(i).padStart(2,`0`)}:00 - ${a(s)?`${Y(a(s))} tokens`:`nothing`}`),t(e=>A(c,`--dot: ${e??``}`),[()=>m(a(s))]),r(e,c)}),N(g),t(()=>i(h,o)),r(e,u)}),N(g);var _=s(g,2),v=o(_);n(v,16,()=>[0,6,12,18],e=>e,(e,n)=>{var a=ft(),o=B(a,!0);t(e=>i(o,e),[()=>String(n).padStart(2,`0`)]),r(e,a)}),ee(2),N(_),N(h),r(e,h),O()}var ht=F(`<div><div class="top svelte-tlhxud"><span class="name svelte-tlhxud"> </span> <span class="num pct svelte-tlhxud"> </span></div> <div class="track svelte-tlhxud" role="meter" aria-valuemin="0" aria-valuemax="100"><span class="svelte-tlhxud"></span></div> <span class="reset svelte-tlhxud"><!></span></div>`);function gt(e,n){V(n,!0);let c=p(()=>!!n.window.resets_at&&n.window.resets_at<Date.now()),l=p(()=>a(c)?`text-faint`:n.window.used_percent>=90?`bad`:n.window.used_percent>=70?`warn`:`good`),u=p(()=>[n.window.detail,n.window.resets_at?`resets ${Se(n.window.resets_at)}`:``,`seen ${Se(n.window.seen_at)}`].filter(Boolean).join(` - `));var d=ht();let f;var m=o(d),h=o(m),_=B(h,!0),v=s(h,2),y=B(v);N(m);var b=s(m,2),x=B(b),S=s(b,2),w=o(S),T=e=>{var a=P();t(e=>i(a,`window has turned over, last read ${e??``}`),[()=>Se(n.window.seen_at)]),r(e,a)},E=e=>{var a=P();t(e=>i(a,`resets ${e??``}`),[()=>Se(n.window.resets_at)]),r(e,a)};g(w,e=>{a(c)?e(T):n.window.resets_at&&e(E,1)}),N(S),N(d),H(d,(e,t)=>q?.(e,t),()=>a(u)),t((e,t,r)=>{f=C(d,1,`meter svelte-tlhxud`,null,f,{stale:a(c)}),i(_,n.window.label),A(v,`color: var(--${a(l)??``})`),i(y,`${e??``}%`),k(b,`aria-valuenow`,t),k(b,`aria-label`,n.window.label),A(x,`width: ${r??``}%; background: var(--${a(l)??``})`)},[()=>Math.round(n.window.used_percent),()=>Math.round(n.window.used_percent),()=>Math.min(100,n.window.used_percent)]),r(e,d),O()}var _t=[{id:`anthropic`,label:`Anthropic`,colour:`#d97757`},{id:`openai`,label:`OpenAI`,colour:`#10a37f`},{id:`google`,label:`Google`,colour:`#4285f4`},{id:`meta`,label:`Meta`,colour:`#0668e1`},{id:`mistral`,label:`Mistral`,colour:`#fa520f`},{id:`xai`,label:`xAI`,colour:`#7c7c8a`},{id:`deepseek`,label:`DeepSeek`,colour:`#4d6bfe`},{id:`qwen`,label:`Qwen`,colour:`#a855f7`},{id:`unknown`,label:`Other`,colour:`#8b93a7`}],vt=[[/^claude/,`anthropic`],[/^(gpt|codex|o[1-4]-|chatgpt|text-embedding)/,`openai`],[/^(gemini|gemma|palm)/,`google`],[/^(llama|code-?llama)/,`meta`],[/^(mistral|mixtral|codestral|magistral|devstral)/,`mistral`],[/^grok/,`xai`],[/^deepseek/,`deepseek`],[/^(qwen|qwq)/,`qwen`]];function yt(e){let t=e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e,n=e.includes(`/`)?e.slice(0,e.indexOf(`/`)).toLowerCase():``;return _t.some(e=>e.id===n)?n:vt.find(([e])=>e.test(t.toLowerCase()))?.[1]??`unknown`}var bt=e=>_t.find(t=>t.id===e)??_t[_t.length-1],xt=[{id:`claude-code`,label:`Claude Code`,colour:`#d97757`,home:`https://claude.com/claude-code`},{id:`codex`,label:`Codex`,colour:`#10a37f`,home:`https://developers.openai.com/codex`},{id:`opencode`,label:`OpenCode`,colour:`#f5a524`,home:`https://opencode.ai`},{id:`gemini-cli`,label:`Gemini CLI`,colour:`#4285f4`,home:`https://github.com/google-gemini/gemini-cli`}],St=e=>xt.find(t=>t.id===e)??{id:e,label:e,colour:`#8b93a7`,home:``},Ct=e=>e===null?`--`:ye(e*100),wt=[{id:`session`,label:`Session`,hint:`The tool and its session id`,by:e=>e.id},{id:`name`,label:`Session name`,hint:`What the session was called, if it got a name`,by:e=>e.name,show:e=>e.name??``},{id:`project`,label:`Project`,hint:`Where it ran`,by:e=>e.project},{id:`models`,label:`Models`,hint:`Every model the session used`,by:e=>e.models,show:e=>e.models.split(`, `).map(De).join(`, `)},{id:`ran`,label:`Ran`,hint:`When it last did anything`,by:e=>e.ended,show:e=>we(e.ended)},{id:`tokens`,label:`Tokens`,hint:`Everything in and out, cache included`,by:e=>e.total,show:e=>Y(e.total),numeric:!0},{id:`cost`,label:`Est. cost`,hint:`Worked out from list prices, not your bill`,by:e=>e.cost,show:e=>Z(e.cost),numeric:!0},{id:`peak`,label:`Peak context`,hint:`The biggest prompt the model was handed in one go`,by:e=>e.peak,show:e=>Y(e.peak),numeric:!0},{id:`cache`,label:`Cache hits`,hint:`How much of the input came straight from cache`,by:e=>e.cacheHit,show:e=>Ct(e.cacheHit),numeric:!0},{id:`subagents`,label:`Subagents`,hint:`Share of the tokens spent by subagents. Claude Code only.`,by:e=>e.subagents,show:e=>Ct(e.subagents),numeric:!0},{id:`turns`,label:`Turns`,hint:`Replies from the model, subagents included`,by:e=>e.turns,show:e=>String(e.turns),numeric:!0}],Tt=F(`<th scope="col"><button type="button" class="svelte-1uqtl83"> </button></th>`),Et=F(`<td class="svelte-1uqtl83"><span class="tool svelte-1uqtl83"><!> <span class="id mono svelte-1uqtl83"> </span></span></td>`),Dt=F(`<td class="svelte-1uqtl83"><button type="button" class="link svelte-1uqtl83"> </button></td>`),Ot=F(`<td class="svelte-1uqtl83"> </td>`),kt=F(`<td> </td>`),At=F(`<tr class="svelte-1uqtl83"></tr>`),jt=F(`<div class="scroll svelte-1uqtl83"><table class="svelte-1uqtl83"><thead><tr></tr></thead><tbody class="svelte-1uqtl83"></tbody></table></div>`),Mt=F(`<p class="empty svelte-1uqtl83">No sessions in this range</p>`);function Nt(e,l){V(l,!0);let f=S(`ran`),m=S(!0),h=p(()=>wt.filter(e=>!l.hidden.includes(e.id)&&(e.id!==`name`||l.rows.some(e=>e.name)))),_=p(()=>{let e=(wt.find(e=>e.id===a(f))??wt[0]).by;return l.rows.toSorted((t,n)=>{let[r,i]=[e(t),e(n)];if(r===i)return 0;if(r===null)return 1;if(i===null)return-1;let o=r<i?-1:1;return a(m)?-o:o})});function v(e){b(m,a(f)===e.id?!a(m):!!(e.numeric||e.id===`ran`),!0),b(f,e.id,!0)}var y=d(),x=c(y),w=e=>{var y=jt(),b=o(y),x=o(b),S=o(x);n(S,21,()=>a(h),e=>e.id,(e,n)=>{var s=Tt();let c;var l=o(s),d=B(l,!0);H(l,(e,t)=>q?.(e,t),()=>a(n).hint),N(s),t(()=>{k(s,`aria-sort`,a(f)===a(n).id?a(m)?`descending`:`ascending`:`none`),c=C(s,1,`svelte-1uqtl83`,null,c,{right:a(n).numeric}),i(d,a(n).label)}),u(`click`,l,()=>v(a(n))),r(e,s)}),N(S),N(x);var w=s(x);n(w,21,()=>a(_),e=>`${e.tool}:${e.id}`,(e,f)=>{let m=p(()=>St(a(f).tool));var _=At();n(_,21,()=>a(h),e=>e.id,(e,n)=>{var p=d(),h=c(p),_=e=>{var n=Et(),c=o(n),l=o(c);Ye(l,{get id(){return a(f).tool},get label(){return a(m).label},get colour(){return a(m).colour},size:14});var u=s(l,2),d=B(u,!0);H(u,(e,t)=>q?.(e,t),()=>a(f).id),N(c),N(n),t(e=>i(d,e),[()=>a(f).id.slice(0,8)]),r(e,n)},v=e=>{var n=Dt(),s=o(n),c=B(s,!0);H(s,(e,t)=>q?.(e,t),()=>a(f).project||`unknown`),N(n),t(e=>i(c,e),[()=>Ee(a(f).project)]),u(`click`,s,()=>l.onpick?.(a(f).project)),r(e,n)},y=e=>{var o=Ot(),s=B(o,!0);H(o,(e,t)=>q?.(e,t),()=>`${we(a(f).started)} for ${Te(a(f).ended-a(f).started)}`),t(e=>i(s,e),[()=>a(n).show?.(a(f))]),r(e,o)},b=e=>{var o=kt();let s;var c=B(o,!0);t(e=>{s=C(o,1,`svelte-1uqtl83`,null,s,{right:a(n).numeric,num:a(n).numeric,muted:!a(n).numeric}),i(c,e)},[()=>a(n).show?.(a(f))]),r(e,o)};g(h,e=>{a(n).id===`session`?e(_):a(n).id===`project`?e(v,1):a(n).id===`ran`?e(y,2):e(b,-1)}),r(e,p)}),N(_),r(e,_)}),N(w),N(b),N(y),r(e,y)},T=e=>{var t=Mt();r(e,t)};g(x,e=>{l.rows.length?e(w):e(T,-1)}),r(e,y),O()}l([`click`]);var Pt=F(`<label class="svelte-17j4bwj"><input type="checkbox" class="svelte-17j4bwj"/> <span> </span></label>`),Ft=F(`<div class="menu svelte-17j4bwj"></div>`),It=F(`<div class="fields svelte-17j4bwj"><button type="button" class="trigger svelte-17j4bwj" aria-label="Choose columns"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M2.5 4h11M2.5 8h11M2.5 12h11M6 2.5v11M10 2.5v11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path></svg></button> <!></div>`);function Lt(e,c){V(c,!0);let l=M(c,`hidden`,15),d=S(!1),p,m=e=>{l(l().includes(e)?l().filter(t=>t!==e):[...l(),e]),c.onchange?.(l())},h=e=>{a(d)&&!p.contains(e.target)&&b(d,!1)};var _=It();f(`click`,y,h);var v=o(_);H(v,(e,t)=>q?.(e,t),()=>`Choose columns`);var x=s(v,2),C=e=>{var d=Ft();n(d,21,()=>c.options,e=>e.id,(e,n)=>{var c=Pt(),d=o(c);D(d);var f=s(d,2),p=B(f,!0);N(c),t(e=>{z(d,e),i(p,a(n).label)},[()=>!l().includes(a(n).id)]),u(`change`,d,()=>m(a(n).id)),r(e,c)}),N(d),r(e,d)};g(x,e=>{a(d)&&e(C)}),N(_),R(_,e=>p=e,()=>p),t(()=>k(v,`aria-expanded`,a(d))),u(`click`,v,()=>b(d,!a(d))),r(e,_),O()}l([`click`,`change`]);var Rt=F(`<span class="hint svelte-1vaf4tg"> </span>`),zt=F(`<li class="svelte-1vaf4tg"><div class="svelte-1vaf4tg"><b class="svelte-1vaf4tg"> </b> <span class="svelte-1vaf4tg"> </span> <!> <time class="svelte-1vaf4tg"> </time></div> <button type="button" class="close svelte-1vaf4tg" aria-label="Dismiss"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></li>`),Bt=F(`<ul class="svelte-1vaf4tg"></ul>`),Vt=F(`<aside aria-live="polite"><button type="button" class="head svelte-1vaf4tg"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><circle cx="8" cy="8" r="6.6" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M8 4.6v4.2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path><circle cx="8" cy="11.4" r="0.9" fill="currentColor"></circle></svg> <span class="svelte-1vaf4tg"> </span> <em class="svelte-1vaf4tg"> </em></button> <!></aside>`);function Ht(e,l){V(l,!0);let f=S(x([])),m=S(!1),h=p(()=>l.problems.filter(e=>!a(f).includes(e.id))),_=p(()=>a(h).some(e=>e.level===`error`)?`error`:a(h).some(e=>e.level===`warn`)?`warn`:`info`);var v=d(),y=c(v),w=e=>{var c=Vt(),l=o(c),d=s(o(l),2),p=B(d,!0),v=s(d,2),y=B(v,!0);N(l);var x=s(l,2),S=e=>{var c=Bt();n(c,21,()=>a(h),e=>e.id,(e,n)=>{var c=zt(),l=o(c),d=o(l),p=B(d,!0),m=s(d,2),h=B(m,!0),_=s(m,2),v=e=>{var o=Rt(),s=B(o,!0);t(()=>i(s,a(n).hint)),r(e,o)};g(_,e=>{a(n).hint&&e(v)});var y=s(_,2),x=B(y,!0);N(l);var S=s(l,2);N(c),t(e=>{i(p,a(n).scope),i(h,a(n).message),i(x,e)},[()=>Se(a(n).at)]),u(`click`,S,()=>b(f,[...a(f),a(n).id],!0)),r(e,c)}),N(c),r(e,c)};g(x,e=>{a(m)&&e(S)}),N(c),t(()=>{C(c,1,`problems ${a(_)??``}`,`svelte-1vaf4tg`),k(l,`aria-expanded`,a(m)),i(p,a(h).length===1?a(h)[0].message:`${a(h).length} things need a look`),i(y,a(m)?`Hide`:`Details`)}),u(`click`,l,()=>b(m,!a(m))),r(e,c)};g(y,e=>{a(h).length&&e(w)}),r(e,v),O()}l([`click`]);var Ut=[{id:`today`,label:`Today`,days:1},{id:`7d`,label:`7 days`,days:7},{id:`30d`,label:`30 days`,days:30},{id:`90d`,label:`90 days`,days:90},{id:`1y`,label:`12 months`,days:365},{id:`all`,label:`All time`,days:0}],Wt=e=>Ut.find(t=>t.id===e)?.label??`30 days`,Q=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}),$=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:0}),Gt={"claude-fable-5":Q(10,50),"claude-opus-5":Q(5,25),"claude-opus-4-8":Q(5,25),"claude-opus-4-7":Q(5,25),"claude-opus-4-6":Q(5,25),"claude-opus-4-5":Q(5,25),"claude-opus-4-1":Q(15,75),"claude-sonnet-5":Q(3,15),"claude-sonnet-4-6":Q(3,15),"claude-sonnet-4-5":Q(3,15),"claude-sonnet-4":Q(3,15),"claude-haiku-4-5":Q(1,5),"claude-3-5-haiku":Q(.8,4),"gpt-5.6-sol-pro":$(2.5,15),"gpt-5.6-sol":$(2.5,15),"gpt-5.6-terra":$(2,12),"gpt-5.6-luna":$(.2,1.2),"gpt-5":$(1.25,10),"gpt-5-mini":$(.25,2),"gpt-5-nano":$(.05,.4),"gpt-4.1":$(2,8),"gpt-4o":$(2.5,10),"gemini-3-pro":$(2,12),"gemini-2.5-pro":$(1.25,10),"gemini-2.5-flash":$(.3,2.5)},Kt=[{id:`auto`,label:`Match the system`},{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`dracula`,label:`Dracula`},{id:`catppuccin`,label:`Catppuccin Mocha`},{id:`tokyo-night`,label:`Tokyo Night`},{id:`nord`,label:`Nord`},{id:`gruvbox`,label:`Gruvbox dark`},{id:`solarized`,label:`Solarized dark`}],qt=F(`<option> </option>`),Jt=F(`<li class="svelte-anx9w7"><div><b class="svelte-anx9w7"> </b> <code class="svelte-anx9w7"> </code></div> <span> </span></li>`),Yt=F(`<code class="svelte-anx9w7"> </code> `,1),Xt=F(`<li class="svelte-anx9w7"><code class="svelte-anx9w7"> </code> <span class="num"> </span> <button type="button" class="svelte-anx9w7">Remove</button></li>`),Zt=F(`<ul class="prices svelte-anx9w7"></ul>`),Qt=F(`<dialog aria-labelledby="settings-title" class="svelte-anx9w7"><header class="svelte-anx9w7"><h2 id="settings-title" class="svelte-anx9w7">Settings</h2> <button type="button" class="close svelte-anx9w7" aria-label="Close settings"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></header> <div class="body svelte-anx9w7"><section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Appearance</h3> <label class="field svelte-anx9w7"><span>Theme</span> <select class="svelte-anx9w7"></select></label> <label class="field svelte-anx9w7"><span>Range on open</span> <select class="svelte-anx9w7"></select></label> <label class="field svelte-anx9w7"><span>Headline measure</span> <select class="svelte-anx9w7"><option>Tokens</option><option>Estimated cost</option></select></label></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Data</h3> <ul class="sources svelte-anx9w7"></ul> <p class="note svelte-anx9w7">Point these somewhere else with <!>. History lives in <code class="svelte-anx9w7"> </code> and outlives the transcripts, which most tools prune.</p> <label class="field svelte-anx9w7"><span>Rescan every</span> <select class="svelte-anx9w7"><option>30 seconds</option><option>2 minutes</option><option>10 minutes</option><option>an hour</option></select></label> <label class="check svelte-anx9w7"><input type="checkbox" class="svelte-anx9w7"/> <span>Ask Anthropic for your 5-hour and 7-day windows <em class="svelte-anx9w7">Reads the Claude Code credentials on this machine. Nothing else leaves it.</em></span></label> <div class="row svelte-anx9w7"><button type="button" class="action svelte-anx9w7">Rescan now</button> <span class="note svelte-anx9w7"> </span></div></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Prices</h3> <p class="note svelte-anx9w7"> </p> <!> <div class="add svelte-anx9w7"><input placeholder="model id" class="svelte-anx9w7"/> <input placeholder="in" inputmode="decimal" class="svelte-anx9w7"/> <input placeholder="out" inputmode="decimal" class="svelte-anx9w7"/> <button type="button" class="action svelte-anx9w7">Add</button></div></section></div></dialog>`);function $t(e,l){V(l,!0);let d=M(l,`open`,15),m,h=S(``),_=S(``),y=S(``);v(()=>{d()&&!m.open&&m.showModal(),!d()&&m.open&&m.close()});let x=p(()=>Object.entries(l.saved.prices));function T(){let e=Number(a(_)),t=Number(a(y));a(h).trim()&&Number.isFinite(e)&&Number.isFinite(t)&&(l.onsave({prices:{...l.saved.prices,[a(h).trim()]:{input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}}}),b(h,``),b(_,``),b(y,``))}function k(e){let t={...l.saved.prices};delete t[e],l.onsave({prices:t})}let A={"claude-code":`AIUSAGE_CLAUDE_DIR`,codex:`AIUSAGE_CODEX_DIR`,opencode:`AIUSAGE_OPENCODE_DIR`};var P=Qt(),F=o(P),I=s(o(F),2);N(F);var te=s(F,2),ne=o(te),H=s(o(ne),2),U=s(o(H),2);n(U,21,()=>Kt,e=>e.id,(e,n)=>{var o=qt(),s=B(o,!0),c={};t(()=>{i(s,a(n).label),c!==(c=a(n).id)&&(o.value=(o.__value=c)??``)}),r(e,o)}),N(U);var re;L(U),N(H);var ie=s(H,2),W=s(o(ie),2);n(W,21,()=>Ut,e=>e.id,(e,n)=>{var o=qt(),s=B(o,!0),c={};t(()=>{i(s,a(n).label),c!==(c=a(n).id)&&(o.value=(o.__value=c)??``)}),r(e,o)}),N(W);var G;L(W),N(ie);var K=s(ie,2),q=s(o(K),2),ae=o(q);ae.value=ae.__value=`tokens`;var oe=s(ae);oe.value=oe.__value=`cost`,N(q);var J;L(q),N(K),N(ne);var se=s(ne,2),ce=s(o(se),2);n(ce,21,()=>l.sources,e=>e.id,(e,n)=>{var c=Jt(),l=o(c),u=o(l),d=B(u,!0),f=s(u,2),p=B(f,!0);N(l);var m=s(l,2);let h;var g=B(m,!0);N(c),t(()=>{i(d,a(n).label),i(p,a(n).root),h=C(m,1,`badge svelte-anx9w7`,null,h,{on:a(n).present}),i(g,a(n).present?`${a(n).files} files`:`not found`)}),r(e,c)}),N(ce);var le=s(ce,2),ue=s(o(le));n(ue,19,()=>l.sources,e=>e.id,(e,n,o)=>{var u=Yt(),d=c(u),f=B(d,!0),p=s(d,1,!0);t(()=>{i(f,A[a(n).id]??a(n).id),i(p,a(o)<l.sources.length-1?`, `:``)}),r(e,u)});var de=s(ue,2),fe=B(de,!0);ee(),N(le);var pe=s(le,2),me=s(o(pe),2),he=o(me);he.value=he.__value=`30`;var ge=s(he);ge.value=ge.__value=`120`;var _e=s(ge);_e.value=_e.__value=`600`;var Y=s(_e);Y.value=Y.__value=`3600`,N(me);var X;L(me),N(pe);var Z=s(pe,2),ve=o(Z);D(ve),ee(2),N(Z);var ye=s(Z,2),be=o(ye),xe=s(be,2),Ce=B(xe);N(ye),N(se);var we=s(se,2),Te=s(o(we),2),Ee=B(Te),De=s(Te,2),Oe=e=>{var c=Zt();n(c,21,()=>a(x),([e,t])=>e,(e,n)=>{var c=p(()=>w(a(n),2));let l=()=>a(c)[0],d=()=>a(c)[1];var f=Xt(),m=o(f),h=B(m,!0),g=s(m,2),_=B(g),v=s(g,2);N(f),t(()=>{i(h,l()),i(_,`in ${d().input??``} / out ${d().output??``}`)}),u(`click`,v,()=>k(l())),r(e,f)}),N(c),r(e,c)};g(De,e=>{a(x).length&&e(Oe)});var ke=s(De,2),Ae=o(ke);D(Ae);var je=s(Ae,2);D(je);var Me=s(je,2);D(Me);var Ne=s(Me,2);N(ke),N(we),N(te),N(P),R(P,e=>m=e,()=>m),t((e,t,n)=>{re!==(re=l.saved.theme)&&(U.value=(U.__value=re)??``,j(U,re)),G!==(G=l.saved.range)&&(W.value=(W.__value=G)??``,j(W,G)),J!==(J=l.saved.metric)&&(q.value=(q.__value=J)??``,j(q,J)),i(fe,l.dbPath),X!==(X=e)&&(me.value=(me.__value=X)??``,j(me,X)),z(ve,l.saved.claudeWindows),i(Ce,`Last scan ${t??``}`),i(Ee,`Dollars per million tokens. ${n??``} models are priced out of the box; anything
|
|
2
2
|
you add here wins, and an unknown model is reported rather than counted as free.`)},[()=>String(l.saved.scanIntervalSec),()=>Se(l.scannedAt),()=>Object.keys(Gt).length]),f(`close`,P,()=>d(!1)),u(`pointerdown`,P,e=>{e.target===m&&d(!1)}),u(`click`,I,()=>d(!1)),u(`change`,U,e=>l.onsave({theme:e.currentTarget.value})),u(`change`,W,e=>l.onsave({range:e.currentTarget.value})),u(`change`,q,e=>l.onsave({metric:e.currentTarget.value})),u(`change`,me,e=>l.onsave({scanIntervalSec:Number(e.currentTarget.value)})),u(`change`,ve,e=>l.onsave({claudeWindows:e.currentTarget.checked})),u(`click`,be,function(...e){l.onrescan?.apply(this,e)}),E(Ae,()=>a(h),e=>b(h,e)),E(je,()=>a(_),e=>b(_,e)),E(Me,()=>a(y),e=>b(y,e)),u(`click`,Ne,T),r(e,P),O()}l([`pointerdown`,`click`,`change`]);var en=e(`<rect width="4" height="4" rx="1.2" fill="var(--accent-text)"></rect>`),tn=e(`<svg class="logo svelte-nck4wt" viewBox="0 0 32 32" role="img" aria-label="AI usage dashboard"><rect width="32" height="32" rx="8" fill="var(--accent)"></rect><!></svg>`);function nn(e,i){V(i,!0);let c=M(i,`size`,3,28),l=[0,1,2,3].flatMap(e=>[0,1,2,3].map(t=>({row:e,column:t,heat:(t+(3-e))/6})));var u=tn(),d=s(o(u));n(d,17,()=>l,e=>`${e.row}-${e.column}`,(e,n)=>{var i=en();t(e=>{k(i,`x`,5+a(n).column*6),k(i,`y`,5+a(n).row*6),k(i,`opacity`,e)},[()=>(.22+a(n).heat*.78).toFixed(2)]),r(e,i)}),N(u),t(()=>{k(u,`width`,c()),k(u,`height`,c())}),r(e,u),O()}var rn=F(`<button type="button" class="reset svelte-1uha8ag">Clear filters</button>`),an=F(`<div class="meters svelte-1uha8ag"></div>`),on=F(`<p class="empty svelte-1uha8ag">No plan windows yet. Sign in with Claude Code or run Codex once and they turn up here.</p>`),sn=F(`<li class="svelte-1uha8ag"><!> <span class="svelte-1uha8ag"> </span> <b class="num svelte-1uha8ag"> </b></li>`),cn=F(`<div class="share svelte-1uha8ag"><!> <ul class="key svelte-1uha8ag"></ul></div>`),ln=F(`<!> <p class="aside svelte-1uha8ag"> </p>`,1),un=F(`<header class="bar svelte-1uha8ag"><a class="brand svelte-1uha8ag" href="/"><!> <span>AI usage</span></a> <div class="filters svelte-1uha8ag"><!> <!> <!> <!> <!> <!></div> <div class="tools svelte-1uha8ag"><button type="button" aria-label="Rescan now"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true" class="svelte-1uha8ag"><path d="M13.4 7A5.5 5.5 0 1 0 12.6 11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M13.8 3.4v3.8h-3.8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon svelte-1uha8ag" aria-label="Settings"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><circle cx="8" cy="8" r="2.3" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M8 1.6v1.8M8 12.6v1.8M14.4 8h-1.8M3.4 8H1.6M12.5 3.5l-1.3 1.3M4.8 11.2l-1.3 1.3M12.5 12.5l-1.3-1.3M4.8 4.8 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></button></div></header> <main class="svelte-1uha8ag"><!> <div class="grid svelte-1uha8ag"><!> <!> <!> <!> <!> <!> <!> <!> <!></div> <footer class="svelte-1uha8ag"><span>Reads the transcripts already on this machine. Nothing is sent anywhere.</span> <span><!> </span></footer></main> <!> <!>`,1);function dn(e,l){V(l,!0);let f=m(()=>l.data),h=S(x(f.usage)),y=S(x(f.settings)),w=S(!1),T=S(!1),E=S(x(f.usage.filters.range)),D=S(x(f.usage.filters.tools)),k=S(x(f.usage.filters.models)),A=S(x(f.usage.filters.projects)),j=S(x(f.settings.metric)),M=S(`tool`),F=S(`share`),I=S(`measure`),L=S(x(f.settings.hiddenColumns)),R=p(()=>new URLSearchParams({range:a(E),tools:a(D).join(`,`),models:a(k).join(`,`),projects:a(A).join(`,`)}).toString()),z=m(()=>a(R));async function te(e){b(w,!0);try{let t=await fetch(`/api/usage?${e}`);t.ok&&b(h,await t.json(),!0)}finally{b(w,!1)}}v(()=>{a(R)!==z&&(z=a(R),W(`?${a(R)}`,{}),te(a(R)))}),v(()=>{let e=setInterval(()=>void te(z),3e4);return()=>clearInterval(e)}),v(()=>{let e=a(y).theme;document.documentElement.dataset.theme=e===`auto`?``:e});async function ne(e){let t=await fetch(`/api/settings`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});t.ok&&b(y,await t.json(),!0)}async function U(){b(w,!0);try{let e=await fetch(`/api/refresh?${z}`,{method:`POST`});e.ok&&b(h,await e.json(),!0)}finally{b(w,!1)}}let G=(e,t)=>e.includes(t)?e.filter(e=>e!==t):[...e,t],K=e=>a(j)===`cost`?e.cost??0:e.total,ae=e=>a(j)===`cost`?Z(e):Y(e),oe=p(()=>new Set(a(h).series.filter(e=>e.total>0).map(e=>e.day)).size),se=p(()=>a(h).byTool.map(e=>({id:e.key,label:St(e.key).label,colour:St(e.key).colour}))),ce=p(()=>a(h).byModel.map(e=>({id:e.key,label:De(e.key),colour:bt(yt(e.key)).colour}))),ue=p(()=>a(M)===`tool`?a(se):a(ce)),de=p(()=>a(h).byModel.map(e=>{let t=bt(yt(e.key));return{id:e.key,label:De(e.key),detail:t.label,value:K(e),display:ae(K(e)),colour:t.colour,mark:t.id,hint:`${e.key} - ${X(e.total)} tokens over ${X(e.events)} requests, ${Z(e.cost)} estimated`}})),fe=p(()=>a(h).byProject.map(e=>({id:e.key,label:Ee(e.key),detail:``,value:a(I)===`sessions`?e.sessions:K(e),display:a(I)===`sessions`?X(e.sessions):ae(K(e)),colour:`var(--accent)`,hint:`${e.key||`unknown`} - ${X(e.total)} tokens, ${X(e.sessions)} sessions`}))),pe=p(()=>a(h).sources.map(e=>{let t=a(h).byTool.find(t=>t.key===e.id),n=St(e.id);return{id:e.id,label:n.label,detail:t?`${X(t.sessions)} sessions`:`not found`,value:t?K(t):0,display:t?ae(K(t)):`--`,colour:n.colour,mark:e.id,hint:e.present?`${X(e.files)} files under ${e.root}`:`Nothing at ${e.root}`}})),me=p(()=>[{id:`input`,label:`Input`,value:a(h).totals.tokens.input,display:Y(a(h).totals.tokens.input),colour:`var(--ramp-4)`,hint:`Fresh prompt tokens, billed at full rate`},{id:`output`,label:`Output`,value:a(h).totals.tokens.output,display:Y(a(h).totals.tokens.output),colour:`var(--ramp-2)`,hint:`Everything the model wrote back, ${Y(a(h).totals.reasoning)} of it reasoning`},{id:`cache_read`,label:`Cache read`,value:a(h).totals.tokens.cache_read,display:Y(a(h).totals.tokens.cache_read),colour:`var(--ramp-1)`,hint:`Context served from cache, usually a tenth of the input price`},{id:`cache_write`,label:`Cache write`,value:a(h).totals.tokens.cache_write,display:Y(a(h).totals.tokens.cache_write),colour:`var(--ramp-3)`,hint:`Putting context into the cache, a premium on the input price`}]),he=p(()=>a(h).totals.total?a(h).totals.tokens.cache_read/a(h).totals.total*100:0);var _e=un();re(`1uha8ag`,e=>{ie(()=>{_.title=`AI usage dashboard`})});var ve=c(_e),ye=o(ve);nn(o(ye),{}),ee(2),N(ye);var be=s(ye,2),xe=o(be);{let e=p(()=>Ut.map(e=>({id:e.id,label:e.label})));le(xe,{get options(){return a(e)},label:`Date range`,size:`sm`,get value(){return a(E)},set value(e){b(E,e,!0)}})}var Ce=s(xe,2);le(Ce,{options:[{id:`tokens`,label:`Tokens`},{id:`cost`,label:`Est. cost`,hint:`At published API rates. Your subscription is billed separately.`}],label:`Measure`,size:`sm`,get value(){return a(j)},set value(e){b(j,e,!0)}});var we=s(Ce,2);ge(we,{label:`Tools`,get options(){return a(h).options.tools},format:e=>St(e).label,get selected(){return a(D)},set selected(e){b(D,e,!0)}});var Te=s(we,2);ge(Te,{label:`Models`,get options(){return a(h).options.models},get format(){return De},get selected(){return a(k)},set selected(e){b(k,e,!0)}});var Oe=s(Te,2);ge(Oe,{label:`Projects`,get options(){return a(h).options.projects},get format(){return Ee},get selected(){return a(A)},set selected(e){b(A,e,!0)}});var ke=s(Oe,2),Ae=e=>{var t=rn();u(`click`,t,()=>{b(D,[],!0),b(k,[],!0),b(A,[],!0)}),r(e,t)};g(ke,e=>{(a(D).length||a(k).length||a(A).length)&&e(Ae)}),N(be);var je=s(be,2),Ne=o(je);let Pe;H(Ne,(e,t)=>q?.(e,t),()=>`Last scan ${Se(a(h).scannedAt)}`);var Fe=s(Ne,2);H(Fe,(e,t)=>q?.(e,t),()=>`Settings`),N(je),N(ve);var Ie=s(ve,2),Le=o(Ie);{let e=p(()=>Wt(a(h).filters.range));Me(Le,{get totals(){return a(h).totals},get previous(){return a(h).previous},get activeDays(){return a(oe)},get rangeLabel(){return a(e)}})}var ze=s(Le,2),Be=o(ze);J(Be,{title:`Every day so far`,span:8,hint:`One square per day, whatever range is picked above. Outlined days are before your records start.`,children:(e,t)=>{Re(e,{get days(){return a(h).calendar},get metric(){return a(j)},get oldest(){return a(h).oldest}})},$$slots:{default:!0}});var Ve=s(Be,2);J(Ve,{title:`Plan windows`,span:4,hint:`Straight from each account, not worked out from tokens`,children:(e,t)=>{var i=d(),o=c(i),s=e=>{var t=an();n(t,21,()=>a(h).windows,e=>e.id,(e,t)=>{gt(e,{get window(){return a(t)}})}),N(t),r(e,t)},l=e=>{var t=on();r(e,t)};g(o,e=>{a(h).windows.length?e(s):e(l,-1)}),r(e,i)},$$slots:{default:!0}});var He=s(Ve,2);J(He,{title:`Day by day`,span:12,hint:`Stacked over the range you picked`,actions:e=>{le(e,{options:[{id:`tool`,label:`By tool`},{id:`model`,label:`By model`}],label:`Trend grouping`,size:`sm`,get value(){return a(M)},set value(e){b(M,e,!0)}})},children:(e,t)=>{{let t=p(()=>a(M)===`tool`?a(h).series:a(h).seriesByModel);Ue(e,{get series(){return a(t)},get keys(){return a(ue)},get metric(){return a(j)}})}},$$slots:{actions:!0,default:!0}});var We=s(He,2);J(We,{title:`Models`,span:5,hint:`Click one to filter the whole page by it`,actions:e=>{le(e,{options:[{id:`share`,label:`Share`},{id:`list`,label:`Ranked`}],label:`Model view`,size:`sm`,get value(){return a(F)},set value(e){b(F,e,!0)}})},children:(e,l)=>{var u=d(),f=c(u),m=e=>{var c=cn(),l=o(c);{let e=p(()=>a(de).map(e=>({id:e.id,label:e.label,value:e.value,colour:e.colour,display:e.display}))),t=p(()=>ae(K(a(h).totals))),n=p(()=>a(j)===`cost`?`estimated`:`tokens`);at(l,{get slices(){return a(e)},get centre(){return a(t)},get caption(){return a(n)}})}var u=s(l,2);n(u,21,()=>a(de),e=>e.id,(e,n)=>{var c=sn(),l=o(c);Ye(l,{get id(){return a(n).mark},get label(){return a(n).detail},get colour(){return a(n).colour},size:14});var u=s(l,2),d=B(u,!0),f=s(u,2),p=B(f,!0);N(c),t(()=>{i(d,a(n).label),i(p,a(n).display)}),r(e,c)}),N(u),N(c),r(e,c)},_=e=>{nt(e,{get rows(){return a(de)},get active(){return a(k)},onpick:e=>b(k,G(a(k),e),!0)})};g(f,e=>{a(F)===`share`?e(m):e(_,-1)}),r(e,u)},$$slots:{actions:!0,default:!0}});var Ge=s(We,2);J(Ge,{title:`Projects`,span:7,hint:`Where the work happened. Click one to filter.`,actions:e=>{{let t=p(()=>[{id:`measure`,label:a(j)===`cost`?`Est. cost`:`Tokens`},{id:`sessions`,label:`Sessions`}]);le(e,{get options(){return a(t)},label:`Project measure`,size:`sm`,get value(){return a(I)},set value(e){b(I,e,!0)}})}},children:(e,t)=>{{let t=p(()=>a(fe).slice(0,8));nt(e,{get rows(){return a(t)},get active(){return a(A)},onpick:e=>b(A,G(a(A),e),!0)})}},$$slots:{actions:!0,default:!0}});var Ke=s(Ge,2);J(Ke,{title:`Where the tokens go`,span:4,hint:`Cache reads are cheap, cache writes are not. This is the split that decides the bill.`,children:(e,n)=>{var o=ln(),l=c(o);lt(l,{get parts(){return a(me)}});var u=s(l,2),d=B(u);t(e=>i(d,`${e??``}% of everything counted was served from cache.`),[()=>a(he).toFixed(0)]),r(e,o)},$$slots:{default:!0}});var qe=s(Ke,2);J(qe,{title:`When you work`,span:5,hint:`Local time, over the range above`,children:(e,t)=>{mt(e,{get points(){return a(h).clock}})},$$slots:{default:!0}});var Je=s(qe,2);J(Je,{title:`Tools`,span:3,hint:`Click one to filter the whole page by it`,children:(e,t)=>{nt(e,{get rows(){return a(pe)},get active(){return a(D)},onpick:e=>b(D,G(a(D),e),!0)})},$$slots:{default:!0}}),J(s(Je,2),{title:`Recent sessions`,span:12,hint:`Click a column heading to sort by it`,actions:e=>{Lt(e,{get options(){return wt},onchange:e=>ne({hiddenColumns:e}),get hidden(){return a(L)},set hidden(e){b(L,e,!0)}})},children:(e,t)=>{Nt(e,{get rows(){return a(h).sessions},get hidden(){return a(L)},onpick:e=>b(A,G(a(A),e),!0)})},$$slots:{actions:!0,default:!0}}),N(ze);var Xe=s(ze,2),Ze=s(o(Xe),2),Qe=o(Ze),$e=e=>{var n=P();t(e=>i(n,`Records from ${e??``} ·`),[()=>new Date(a(h).oldest).toLocaleDateString(`en-GB`)]),r(e,n)};g(Qe,e=>{a(h).oldest&&e($e)});var et=s(Qe);N(Ze),N(Xe),N(Ie);var tt=s(Ie,2);Ht(tt,{get problems(){return a(h).problems}}),$t(s(tt,2),{get saved(){return a(y)},get sources(){return a(h).sources},get dbPath(){return l.data.paths.db},get scannedAt(){return a(h).scannedAt},onsave:ne,onrescan:U,get open(){return a(T)},set open(e){b(T,e,!0)}}),t(e=>{Pe=C(Ne,1,`icon svelte-1uha8ag`,null,Pe,{busy:a(w)}),i(et,` Scanned ${e??``}`)},[()=>Se(a(h).scannedAt)]),u(`click`,Ne,U),u(`click`,Fe,()=>b(T,!0)),r(e,_e),O()}l([`click`]);export{dn as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1791173218530"}
|
|
Binary file
|
|
Binary file
|
package/build/handler.js
CHANGED
|
@@ -2,9 +2,9 @@ import './shims.js';
|
|
|
2
2
|
import 'node:fs';
|
|
3
3
|
import 'node:path';
|
|
4
4
|
import 'node:process';
|
|
5
|
-
export { h as handler } from './server/chunks/handler-
|
|
6
|
-
import './server/chunks/index.js-
|
|
7
|
-
import './server/chunks/manifest.js-
|
|
5
|
+
export { h as handler } from './server/chunks/handler-D8S2N5vX.js';
|
|
6
|
+
import './server/chunks/index.js-BDweEDAt.js';
|
|
7
|
+
import './server/chunks/manifest.js-CUe1IdHJ.js';
|
|
8
8
|
import './env.js';
|
|
9
9
|
import 'node:buffer';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -12,11 +12,11 @@ import 'node:http';
|
|
|
12
12
|
import 'node:timers';
|
|
13
13
|
import 'node:querystring';
|
|
14
14
|
import 'node:stream';
|
|
15
|
-
import './server/chunks/chunks/shared.js-
|
|
16
|
-
import './server/chunks/chunks/server.js-
|
|
17
|
-
import './server/chunks/chunks/utils.js-
|
|
15
|
+
import './server/chunks/chunks/shared.js-Dg3Ewm8t.js';
|
|
16
|
+
import './server/chunks/chunks/server.js-UOanU7fq.js';
|
|
17
|
+
import './server/chunks/chunks/utils.js-DUDFXVFd.js';
|
|
18
18
|
import 'node:url';
|
|
19
|
-
import './server/chunks/chunks/internal.js-
|
|
19
|
+
import './server/chunks/chunks/internal.js-U26BXAw4.js';
|
|
20
20
|
import './server/chunks/chunks/internal2.js-BlXt2rfE.js';
|
|
21
|
-
import './server/chunks/chunks/exports.js-
|
|
21
|
+
import './server/chunks/chunks/exports.js-Bbyr-JtB.js';
|
|
22
22
|
//# sourceMappingURL=handler.js.map
|
package/build/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import fs__default from 'node:fs';
|
|
3
3
|
import process from 'node:process';
|
|
4
|
-
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-
|
|
4
|
+
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-D8S2N5vX.js';
|
|
5
5
|
import { env, timeout_env } from './env.js';
|
|
6
6
|
import { rm } from 'node:fs/promises';
|
|
7
7
|
import './shims.js';
|
|
@@ -11,14 +11,14 @@ import 'node:path';
|
|
|
11
11
|
import 'node:timers';
|
|
12
12
|
import 'node:querystring';
|
|
13
13
|
import 'node:stream';
|
|
14
|
-
import './server/chunks/chunks/shared.js-
|
|
15
|
-
import './server/chunks/chunks/server.js-
|
|
16
|
-
import './server/chunks/chunks/utils.js-
|
|
17
|
-
import './server/chunks/index.js-
|
|
18
|
-
import './server/chunks/chunks/internal.js-
|
|
14
|
+
import './server/chunks/chunks/shared.js-Dg3Ewm8t.js';
|
|
15
|
+
import './server/chunks/chunks/server.js-UOanU7fq.js';
|
|
16
|
+
import './server/chunks/chunks/utils.js-DUDFXVFd.js';
|
|
17
|
+
import './server/chunks/index.js-BDweEDAt.js';
|
|
18
|
+
import './server/chunks/chunks/internal.js-U26BXAw4.js';
|
|
19
19
|
import './server/chunks/chunks/internal2.js-BlXt2rfE.js';
|
|
20
|
-
import './server/chunks/chunks/exports.js-
|
|
21
|
-
import './server/chunks/manifest.js-
|
|
20
|
+
import './server/chunks/chunks/exports.js-Bbyr-JtB.js';
|
|
21
|
+
import './server/chunks/manifest.js-CUe1IdHJ.js';
|
|
22
22
|
import 'node:url';
|
|
23
23
|
|
|
24
24
|
const path = env('SOCKET_PATH', false);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { i as index_server_exports } from './internal.js-
|
|
2
|
-
import './shared.js-
|
|
3
|
-
import './exports.js-
|
|
4
|
-
import { a1 as noop } from './server.js-
|
|
5
|
-
import './utils.js-
|
|
1
|
+
import { i as index_server_exports } from './internal.js-U26BXAw4.js';
|
|
2
|
+
import './shared.js-Dg3Ewm8t.js';
|
|
3
|
+
import './exports.js-Bbyr-JtB.js';
|
|
4
|
+
import { a1 as noop } from './server.js-UOanU7fq.js';
|
|
5
|
+
import './utils.js-DUDFXVFd.js';
|
|
6
6
|
|
|
7
7
|
var is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
|
|
8
8
|
var placeholder_url = "a:";
|
|
@@ -25,4 +25,4 @@ if (is_legacy) {
|
|
|
25
25
|
/** @import { Query } from './remote-functions/query/instance.svelte.js' */
|
|
26
26
|
/** @import { LiveQuery } from './remote-functions/query-live/instance.svelte.js' */
|
|
27
27
|
var { onMount, tick } = index_server_exports;
|
|
28
|
-
//# sourceMappingURL=client.js-
|
|
28
|
+
//# sourceMappingURL=client.js-BQauTa0m.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as noop, ag as safe_not_equal } from './server.js-
|
|
1
|
+
import { a1 as noop, ag as safe_not_equal } from './server.js-UOanU7fq.js';
|
|
2
2
|
|
|
3
3
|
var internal = new URL("sveltekit-internal://");
|
|
4
4
|
/**
|
|
@@ -346,4 +346,4 @@ var validate_layout_server_exports = validator(valid_layout_server_exports);
|
|
|
346
346
|
var validate_page_server_exports = validator(valid_page_server_exports);
|
|
347
347
|
|
|
348
348
|
export { disable_search as a, validate_layout_exports as b, validate_page_server_exports as c, decode_pathname as d, validate_page_exports as e, find_route as f, readable as g, hash as h, make_trackable as m, normalize_path as n, resolve as r, validate_layout_server_exports as v, writable as w };
|
|
349
|
-
//# sourceMappingURL=exports.js-
|
|
349
|
+
//# sourceMappingURL=exports.js-Bbyr-JtB.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as render, s as set, L as LEGACY_PROPS, g as get, f as flushSync, d as define_property, m as mutable_source, i as init_operations, a as get_first_child, b as get_next_sibling, H as HYDRATION_ERROR, c as set_hydrating, e as set_hydrate_node, h as hydration_failed, j as clear_text_content, k as component_root, l as hydrate_node, n as create_text, o as array_from, p as is_passive_event, q as set_active_reaction, t as set_active_effect, u as active_reaction, v as active_effect, w as setContext, x as hydrating, y as block, z as branch, A as queue_micro_task, B as invoke_error_boundary, C as current_batch, D as pause_effect, E as move_effect, F as defer_effect, G as set_component_context, I as Batch, J as component_context, K as internal_set, M as destroy_effect, N as next, O as skip_nodes, P as derived, Q as effect_tracking, R as render_effect, S as svelte_boundary_reset_noop, T as svelte_boundary_reset_onerror, U as source, V as untrack, W as increment, X as hydrate_next, Y as push$1, Z as mark_as_component, _ as hydration_mismatch, $ as pop$1, a0 as run, a1 as noop, a2 as hasContext, a3 as getContext, a4 as getAllContexts, a5 as createContext, a6 as ssr_context, a7 as lifecycle_function_unavailable, a8 as EFFECT_TRANSPARENT, a9 as EFFECT_PRESERVED, aa as experimental_async_required, ab as get_render_context, ac as uneval, ad as hydratable_serialization_failed } from './server.js-
|
|
1
|
+
import { r as render, s as set, L as LEGACY_PROPS, g as get, f as flushSync, d as define_property, m as mutable_source, i as init_operations, a as get_first_child, b as get_next_sibling, H as HYDRATION_ERROR, c as set_hydrating, e as set_hydrate_node, h as hydration_failed, j as clear_text_content, k as component_root, l as hydrate_node, n as create_text, o as array_from, p as is_passive_event, q as set_active_reaction, t as set_active_effect, u as active_reaction, v as active_effect, w as setContext, x as hydrating, y as block, z as branch, A as queue_micro_task, B as invoke_error_boundary, C as current_batch, D as pause_effect, E as move_effect, F as defer_effect, G as set_component_context, I as Batch, J as component_context, K as internal_set, M as destroy_effect, N as next, O as skip_nodes, P as derived, Q as effect_tracking, R as render_effect, S as svelte_boundary_reset_noop, T as svelte_boundary_reset_onerror, U as source, V as untrack, W as increment, X as hydrate_next, Y as push$1, Z as mark_as_component, _ as hydration_mismatch, $ as pop$1, a0 as run, a1 as noop, a2 as hasContext, a3 as getContext, a4 as getAllContexts, a5 as createContext, a6 as ssr_context, a7 as lifecycle_function_unavailable, a8 as EFFECT_TRANSPARENT, a9 as EFFECT_PRESERVED, aa as experimental_async_required, ab as get_render_context, ac as uneval, ad as hydratable_serialization_failed } from './server.js-UOanU7fq.js';
|
|
2
2
|
|
|
3
3
|
//#region \0rolldown/runtime.js
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1176,7 +1176,7 @@ var options = {
|
|
|
1176
1176
|
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\" data-theme=\"%aiusage.theme%\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"color-scheme\" content=\"light dark\" />\n <meta\n name=\"description\"\n content=\"Every token your AI coding tools have spent, from the transcripts already on your machine.\"\n />\n <meta name=\"robots\" content=\"noindex\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" type=\"image/svg+xml\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
|
|
1177
1177
|
error: error_template_default
|
|
1178
1178
|
},
|
|
1179
|
-
version_hash: "
|
|
1179
|
+
version_hash: "1xqpsj"
|
|
1180
1180
|
};
|
|
1181
1181
|
async function get_hooks() {
|
|
1182
1182
|
let handle;
|
|
@@ -1199,4 +1199,4 @@ async function get_hooks() {
|
|
|
1199
1199
|
}
|
|
1200
1200
|
|
|
1201
1201
|
export { set_public_env as a, set_read_implementation as b, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
|
|
1202
|
-
//# sourceMappingURL=internal.js-
|
|
1202
|
+
//# sourceMappingURL=internal.js-U26BXAw4.js.map
|