@ipv9/tokentracker-cli 0.39.40 → 0.39.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +5 -5
  2. package/dashboard/dist/assets/{Card-JS4gjUZf.js → Card-BwY_Qv6N.js} +1 -1
  3. package/dashboard/dist/assets/DashboardPage-C7b_GjA-.js +60 -0
  4. package/dashboard/dist/assets/{FadeIn-DvLfvwys.js → FadeIn-DiAafUDN.js} +1 -1
  5. package/dashboard/dist/assets/{IpCheckPage-Dcfc0Uts.js → IpCheckPage-CYgWVZJr.js} +1 -1
  6. package/dashboard/dist/assets/{LimitsPage-Vz-GVdi9.js → LimitsPage-C1y75ftN.js} +1 -1
  7. package/dashboard/dist/assets/{LocalOnlyNotice-8xF5couh.js → LocalOnlyNotice-B5_-ydeu.js} +1 -1
  8. package/dashboard/dist/assets/{PopoverPopup-7HrUzeRx.js → PopoverPopup-DDjjQ5CG.js} +1 -1
  9. package/dashboard/dist/assets/{Select-9XDsaO_C.js → Select-BPspkl9p.js} +1 -1
  10. package/dashboard/dist/assets/{SelectItemText-DE5Fs9p6.js → SelectItemText-CX0dWYB1.js} +1 -1
  11. package/dashboard/dist/assets/{SettingsPage-CMnfAptE.js → SettingsPage-9K5ST4D_.js} +1 -1
  12. package/dashboard/dist/assets/{SkillsPage-CbvLHN0L.js → SkillsPage-BpCSS7ls.js} +1 -1
  13. package/dashboard/dist/assets/{WidgetsPage-CeGQlyt7.js → WidgetsPage-aBisLWrM.js} +1 -1
  14. package/dashboard/dist/assets/{WrappedPage-Bux8qLUC.js → WrappedPage-BgkuBG_j.js} +1 -1
  15. package/dashboard/dist/assets/{arrow-up-right-B7rCoZdW.js → arrow-up-right-DPb2FRSP.js} +1 -1
  16. package/dashboard/dist/assets/{download-CtTYpbcx.js → download-CbZ8YL8m.js} +1 -1
  17. package/dashboard/dist/assets/{format-BuQKK6kQ.js → format-aRaCvnht.js} +1 -1
  18. package/dashboard/dist/assets/limitDisplay-1O9-AdgI.js +1 -0
  19. package/dashboard/dist/assets/{main-Ck4SUH4m.js → main-DRcFJLLD.js} +3 -3
  20. package/dashboard/dist/assets/mock-data-sZ3-GZV0.js +1 -0
  21. package/dashboard/dist/assets/{use-limits-display-prefs-BKWYPgeA.js → use-limits-display-prefs-2-qYvffB.js} +1 -1
  22. package/dashboard/dist/assets/{use-native-settings-D7Nj1dXR.js → use-native-settings-C1uhDKdL.js} +1 -1
  23. package/dashboard/dist/assets/{useCurrency-BX3pvyhh.js → useCurrency-BPCF4zUv.js} +1 -1
  24. package/dashboard/dist/index.html +1 -1
  25. package/package.json +3 -2
  26. package/src/commands/serve.js +121 -38
  27. package/src/lib/fs.js +149 -25
  28. package/src/lib/local-api.js +20 -2
  29. package/src/lib/pricing/curated-overrides.json +10 -3
  30. package/src/lib/pricing/index.js +197 -18
  31. package/src/lib/pricing/litellm-fetcher.js +6 -1
  32. package/src/lib/pricing/seed-snapshot.json +1 -1
  33. package/dashboard/dist/assets/DashboardPage-BoXhzJb1.js +0 -60
  34. package/dashboard/dist/assets/limitDisplay-WwuTdS_a.js +0 -1
  35. package/dashboard/dist/assets/mock-data-Bvbe8tYK.js +0 -1
@@ -1 +0,0 @@
1
- import{H as L,r as w,F as j,j as p,p as _}from"./main-Ck4SUH4m.js";import{i as m,n as z,o as U,p as I,q as N,r as v,s as C,t as D,u as E}from"./mock-data-Bvbe8tYK.js";import{L as k}from"./use-limits-display-prefs-BKWYPgeA.js";const f={usageSummary:"tokentracker-usage-summary",usageDaily:"tokentracker-usage-daily",usageHourly:"tokentracker-usage-hourly",usageMonthly:"tokentracker-usage-monthly",usageHeatmap:"tokentracker-usage-heatmap",usageModelBreakdown:"tokentracker-usage-model-breakdown",usageCategoryBreakdown:"tokentracker-usage-category-breakdown",projectUsageSummary:"tokentracker-project-usage-summary",userStatus:"tokentracker-user-status",localSync:"tokentracker-local-sync",usageLimits:"tokentracker-usage-limits"};async function g(t,e,a){const r=new URL(`/functions/${t}`,window.location.origin);if(e)for(const[i,l]of Object.entries(e))l!=null&&l!==""&&r.searchParams.set(i,String(l));const{accessToken:n,...s}=a||{},o=await fetch(r.toString(),{headers:{Accept:"application/json"},cache:"no-store",...s});if(!o.ok){const i=new Error(`Request failed with HTTP ${o.status}`);throw i.status=o.status,i}return o.json()}function y({timeZone:t,tzOffsetMinutes:e}={}){const a={},r=typeof t=="string"?t.trim():"";return r&&(a.tz=r),Number.isFinite(e)&&(a.tz_offset_minutes=String(Math.trunc(e))),a}function b({source:t,model:e}={}){const a={},r=typeof t=="string"?t.trim().toLowerCase():"";r&&(a.source=r);const n=typeof e=="string"?e.trim():"";return n&&(a.model=n),a}async function W({from:t,to:e,source:a,model:r,timeZone:n,tzOffsetMinutes:s,rolling:o=!1,accessToken:i}={}){if(m())return U({from:t,to:e,seed:i,rolling:o});const l=y({timeZone:n,tzOffsetMinutes:s}),u=b({source:a,model:r}),h=o?{rolling:"1"}:{};return g(f.usageSummary,{from:t,to:e,...u,...l,...h},{accessToken:i})}async function J({from:t,to:e,source:a,limit:r,timeZone:n,tzOffsetMinutes:s,accessToken:o}={}){if(m())return v({seed:o,limit:r});const i=y({timeZone:n,tzOffsetMinutes:s}),u={...b({source:a}),...i};return t&&(u.from=t),e&&(u.to=e),r!=null&&(u.limit=String(r)),g(f.projectUsageSummary,u)}async function O(t={}){if(m()){const e=new Date().toISOString();return{user_id:"local-user",created_at:e,pro:{active:!1,sources:[],expires_at:null,partial:!1,as_of:e},subscriptions:{partial:!1,as_of:e,items:[]}}}return g(f.userStatus)}async function Y({signal:t}={}){const e=await L(),a=await fetch(`/functions/${f.localSync}`,{method:"POST",headers:{Accept:"application/json",...e},cache:"no-store",signal:t}),r=await a.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${a.status}`}));if(!a.ok||r?.ok===!1){const n=r?.error||r?.message||`Local sync request failed with HTTP ${a.status}`,s=new Error(n);throw s.status=a.status,s}return r}async function Q({from:t,to:e,source:a,timeZone:r,tzOffsetMinutes:n,accessToken:s}={}){if(m())return I({from:t,to:e,seed:s});const o=y({timeZone:r,tzOffsetMinutes:n}),i=b({source:a});return g(f.usageModelBreakdown,{from:t,to:e,...i,...o},{accessToken:s})}async function V({from:t,to:e,source:a="claude",timeZone:r,tzOffsetMinutes:n}={}){if(m())return E({from:t,to:e,source:a});const s=y({timeZone:r,tzOffsetMinutes:n});return g(f.usageCategoryBreakdown,{from:t,to:e,source:a,...s})}async function X({from:t,to:e,source:a,model:r,timeZone:n,tzOffsetMinutes:s,accessToken:o}={}){if(m())return z({from:t,to:e,seed:o});const i=y({timeZone:n,tzOffsetMinutes:s}),l=b({source:a,model:r});return g(f.usageDaily,{from:t,to:e,...l,...i},{accessToken:o})}async function Z({day:t,source:e,model:a,timeZone:r,tzOffsetMinutes:n,accessToken:s}={}){if(m())return N({day:t,seed:s});const o=y({timeZone:r,tzOffsetMinutes:n}),i=b({source:e,model:a}),l=t?{day:t,...i,...o}:{...i,...o};return g(f.usageHourly,l,{accessToken:s})}async function ee({months:t,to:e,source:a,model:r,timeZone:n,tzOffsetMinutes:s,accessToken:o}={}){if(m())return C({months:t,to:e,seed:o});const i=y({timeZone:n,tzOffsetMinutes:s}),l=b({source:a,model:r});return g(f.usageMonthly,{...t?{months:String(t)}:{},...e?{to:e}:{},...l,...i},{accessToken:o})}async function P(t={}){const e=t?.refresh?{refresh:"1"}:void 0;return g(f.usageLimits,e)}async function te({weeks:t,to:e,weekStartsOn:a,source:r,model:n,timeZone:s,tzOffsetMinutes:o,accessToken:i}={}){if(m())return D({weeks:t,to:e,weekStartsOn:a,seed:i});const l=y({timeZone:s,tzOffsetMinutes:o}),u=b({source:r,model:n});return g(f.usageHeatmap,{weeks:String(t),to:e,week_starts_on:a,...u,...l},{accessToken:i})}function ae(t){const e=!!t?.initialState,[a,r]=w.useState(()=>e?t?.initialState?.data??null:null),[n,s]=w.useState(()=>e?t?.initialState?.error??null:null),[o,i]=w.useState(!e),l=!!t?.initialRefresh,u=!!t?.publishToPreloadCache,h=w.useCallback((c,d)=>{!u||!c||typeof c!="object"||j(c,{source:d})},[u]),x=w.useCallback(async()=>{try{const c=await P({refresh:!0}),d=c&&typeof c=="object"?c:null;r(d),s(null),h(d,"manual-refresh")}catch(c){s(c?.message||String(c))}},[h]);return w.useEffect(()=>{if(e&&!l)return;let c=!1;return(async()=>{try{const d=await P(l?{refresh:!0}:{});if(c)return;const S=d&&typeof d=="object"?d:null;r(S),s(null),h(S,"page-load")}catch(d){if(c)return;s(d?.message||String(d))}finally{c||i(!1)}})(),()=>{c=!0}},[e,l,h]),{data:a,error:n,isLoading:o,refresh:x}}function H(t){if(!t)return null;const e=typeof t=="number"?t*1e3:Date.parse(t);if(!Number.isFinite(e))return null;const a=e-Date.now();if(a<=0)return _("shared.time.now");const r=Math.floor(a/6e4);if(r<60)return`${r}m`;const n=Math.floor(r/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}const A=["claude","codex","cursor","gemini","kimi","zai","kiro","copilot","antigravity"],M={githubcopilot:"copilot",zhipu:"zai",glm:"zai"};function F(t){const e=String(t||"").toLowerCase().replace(/[^a-z0-9]/g,"");return A.includes(e)?e:M[e]?M[e]:null}const B={claude:[{field:"five_hour",label:"5h",pctField:"utilization",resetField:"resets_at"},{field:"seven_day",label:"7d",pctField:"utilization",resetField:"resets_at"}],codex:[{field:"primary_window",label:"5h"},{field:"secondary_window",label:"7d"}],cursor:[{field:"primary_window",labelKey:"limits.label.cursor_plan"},{field:"secondary_window",labelKey:"limits.label.cursor_auto"}],gemini:[{field:"primary_window",label:"Pro"},{field:"secondary_window",label:"Flash"}],kimi:[{field:"primary_window",labelKey:"limits.label.kimi_weekly"},{field:"secondary_window",labelKey:"limits.label.kimi_5h"}],zai:[{field:"primary_window",labelKey:"limits.label.zai_5h"},{field:"secondary_window",labelKey:"limits.label.zai_weekly"}],kiro:[{field:"primary_window",labelKey:"limits.label.kiro_month"},{field:"secondary_window",labelKey:"limits.label.kiro_bonus"}],antigravity:[{field:"primary_window",label:"Claude"},{field:"secondary_window",label:"G Pro"}],copilot:[{field:"primary_window",labelKey:"limits.label.copilot_premium"},{field:"secondary_window",labelKey:"limits.label.copilot_chat"}]};function K(t,e,a){const r=B[t];if(!r||!e)return[];const n=[];for(const s of r){const o=e[s.field];if(!o)continue;const i=Number(o[s.pctField||"used_percent"]);if(!Number.isFinite(i))continue;const l=Math.max(0,Math.min(100,i)),u=a===k.REMAINING?100-l:l;n.push({label:s.labelKey?_(s.labelKey):s.label,displayPct:u,reset:H(o[s.resetField||"reset_at"])})}return n}function R(t,e){const a=e===k.REMAINING?100-t:t;return a>=90?{dot:"bg-red-500",chip:"border-red-500/30 bg-red-500/10"}:a>=75?{dot:"bg-orange-500",chip:"border-orange-500/30 bg-orange-500/10"}:a>=50?{dot:"bg-amber-500",chip:"border-amber-500/30 bg-amber-500/10"}:{dot:"bg-oai-gray-400 dark:bg-oai-gray-500",chip:"border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-100/70 dark:bg-oai-gray-800/40"}}function $({label:t,displayPct:e,reset:a,mode:r}){const n=R(e,r),s=Math.round(e),o=_("usage.overview.model_percent",{percent:s}),i=a?_("usage.overview.provider_limit_reset",{label:t,percent:s,reset:a}):_("usage.overview.provider_limit",{label:t,percent:s});return p.jsxs("span",{className:`inline-flex items-center gap-1.5 rounded-full border px-2 py-1 text-[11px] leading-none ${n.chip}`,title:i,"aria-label":i,children:[p.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${n.dot}`,"aria-hidden":"true"}),p.jsx("span",{className:"text-oai-gray-500 dark:text-oai-gray-400",children:t}),p.jsx("span",{className:"font-semibold tabular-nums text-oai-black dark:text-oai-white",children:o})]})}function re({label:t,usageLimits:e,mode:a=k.USED}){if(!e||typeof e!="object")return null;const r=F(t);if(!r)return null;const n=e[r];if(!n||!n.configured)return null;const s=a===k.REMAINING?k.REMAINING:k.USED;if(n.error)return p.jsx("div",{className:"mt-2.5 pt-2.5 border-t border-dashed border-oai-gray-200 dark:border-oai-gray-700 text-[11px] leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:_("shared.error.prefix",{error:n.error})});const o=K(r,n,s);return o.length===0?null:p.jsx("div",{className:"mt-2.5 pt-2.5 border-t border-dashed border-oai-gray-200 dark:border-oai-gray-700 flex flex-wrap items-center gap-1.5",children:o.map(i=>p.jsx($,{label:i.label,displayPct:i.displayPct,reset:i.reset,mode:s},i.label))})}export{re as L,X as a,J as b,ee as c,Z as d,W as e,Q as f,te as g,V as h,O as i,H as j,Y as t,ae as u};
@@ -1 +0,0 @@
1
- import{t as A}from"./format-BuQKK6kQ.js";function ht(){if(typeof Intl>"u"||!Intl.DateTimeFormat)return null;try{return Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{return null}}function kt(t=new Date){const e=t instanceof Date?t:new Date(t);if(!Number.isFinite(e.getTime()))return 0;const n=e.getTimezoneOffset();return Number.isFinite(n)?-n:0}function q(t){if(!Number.isFinite(t)||t===0)return"UTC";const e=t>=0?"+":"-",n=Math.abs(t),o=String(Math.floor(n/60)).padStart(2,"0"),a=String(n%60).padStart(2,"0");return`UTC${e}${o}:${a}`}function Dt({timeZone:t,offsetMinutes:e}={}){const n=q(e);return t&&t!=="UTC"?`${t} (${n})`:n}function bt({timeZone:t,offsetMinutes:e}={}){return Number.isFinite(e)?q(e):t||"UTC"}function wt({timeZone:t,offsetMinutes:e,date:n=new Date}={}){const o=n instanceof Date?n:new Date(n);if(!Number.isFinite(o.getTime()))return"";if(t&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const s=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(o).reduce((m,c)=>(c.type&&c.value&&(m[c.type]=c.value),m),{}),u=s.year,i=s.month,_=s.day;if(u&&i&&_)return`${u}-${i}-${_}`}catch{}if(typeof e=="number"&&Number.isFinite(e)){const a=new Date(o.getTime()+e*6e4);return G(a)}return Q(o)}function J({timeZone:t,offsetMinutes:e,date:n=new Date}={}){const o=n instanceof Date?n:new Date(n);if(!Number.isFinite(o.getTime()))return null;if(t&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const s=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(o).reduce((m,c)=>(c.type&&c.value&&(m[c.type]=c.value),m),{}),u=Number(s.year),i=Number(s.month),_=Number(s.day);if(Number.isFinite(u)&&Number.isFinite(i)&&Number.isFinite(_))return{year:u,month:i,day:_}}catch{}if(typeof e=="number"&&Number.isFinite(e)){const a=new Date(o.getTime()+e*6e4);return{year:a.getUTCFullYear(),month:a.getUTCMonth()+1,day:a.getUTCDate()}}return{year:o.getFullYear(),month:o.getMonth()+1,day:o.getDate()}}function yt({timeZone:t,offsetMinutes:e}={}){return t?`tz:${t}`:typeof e=="number"&&Number.isFinite(e)?`offset:${Math.trunc(e)}`:"utc"}function G(t){const e=t.getUTCFullYear(),n=String(t.getUTCMonth()+1).padStart(2,"0"),o=String(t.getUTCDate()).padStart(2,"0");return`${e}-${n}-${o}`}function Q(t){const e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${o}`}function g(t){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())).toISOString().slice(0,10)}function F(t){const e=t instanceof Date?t:new Date(t);if(!Number.isFinite(e.getTime()))return"";const n=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${n}-${o}-${a}`}function X(t){if(!t)return null;const e=String(t).trim(),n=e.split("-");if(n.length!==3)return null;const o=Number(n[0]),a=Number(n[1])-1,r=Number(n[2]);if(!Number.isFinite(o)||!Number.isFinite(a)||!Number.isFinite(r))return null;const s=new Date(Date.UTC(o,a,r));return Number.isFinite(s.getTime())&&g(s)===e?s:null}function Z(t){if(!t)return"";const e=t.year,n=String(t.month).padStart(2,"0"),o=String(t.day).padStart(2,"0");return!e||!n||!o?"":`${e}-${n}-${o}`}function tt(t,{timeZone:e,offsetMinutes:n,now:o}={}){const a=o instanceof Date&&Number.isFinite(o.getTime())?o:new Date,r=J({timeZone:e,offsetMinutes:n,date:a});if(!r){const i=F(new Date);return{from:i,to:i}}const s=Z(r),u=X(s);if(!u)return{from:s,to:s};if(t==="day")return{from:s,to:s};if(t==="24h"){const i=new Date(u);return i.setUTCDate(i.getUTCDate()-1),{from:g(i),to:s}}if(t==="week"){const i=new Date(u);return i.setUTCDate(i.getUTCDate()-6),{from:g(i),to:s}}if(t==="month"){const i=new Date(u);return i.setUTCDate(i.getUTCDate()-29),{from:g(i),to:s}}if(t==="total"){const i=new Date(Date.UTC(u.getUTCFullYear(),u.getUTCMonth()-23,1));return{from:g(i),to:s}}return tt("week")}function Y(t){if(typeof t!="string")return null;const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t.trim());if(!e)return null;const n=Number(e[1]),o=Number(e[2])-1,a=Number(e[3]),r=new Date(Date.UTC(n,o,a));return Number.isFinite(r.getTime())&&g(r)===t.trim()?r:null}function v(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+e))}function et(t,e){const n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())-Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor(n/864e5)}function L(t,e){if(!Array.isArray(t)||t.length===0)return 0;const n=t.length,o=(n-1)*e,a=Math.floor(o),r=o-a,s=t[a]??t[n-1],u=t[Math.min(n-1,a+1)]??t[n-1];return Math.round(s+(u-s)*r)}function nt(t){return t<=0?0:t>=4?4:t}function z({weeks:t=52,now:e,weekStartsOn:n="sun"}={}){const o=e instanceof Date&&Number.isFinite(e.getTime())?e:new Date,a=F(o),r=Y(a)||new Date(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate())),s=n==="mon"?1:0,u=r.getUTCDay(),i=v(r,-((u-s+7)%7)),_=v(i,-7*(Math.max(1,t)-1));return{from:g(_),to:a}}function ot({dailyRows:t,weeks:e=52,to:n,weekStartsOn:o="sun"}={}){const a=Y(n)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),{from:r}=z({weeks:e,now:a,weekStartsOn:o}),s=Y(r)||v(a,-(e*7-1)),u=(()=>{const h=(s.getUTCDay()-(o==="mon"?1:0)+7)%7;return v(s,-h)})(),i=new Map;for(const l of Array.isArray(t)?t:[]){const d=typeof l?.day=="string"?l.day:null;if(!d)continue;const h=A(l?.conversation_count)??0,y=A(l?.billable_total_tokens??l?.total_tokens)??0;i.set(d,{value:Math.max(0,h),tokens:Math.max(0,y),models:l?.models||null})}const _=et(u,a)+1,m=Math.ceil(_/7),c=[];for(let l=0;l<_;l++){const d=v(u,l),h=g(d),y=i.get(h),D=y?y.value:0;D>0&&c.push(D)}c.sort((l,d)=>l-d);const p=L(c,.5),C=L(c,.75),w=L(c,.9);function S(l){return!l||l<=0?0:l<=p?1:l<=C?2:l<=w?3:4}const f=[];for(let l=0;l<m;l++){const d=[];for(let h=0;h<7;h++){const y=l*7+h,D=v(u,y);if(D.getTime()>a.getTime()){d.push(null);continue}const T=g(D),b=i.get(T),M=b?b.value:0,N=b?b.tokens:0,x=b?b.models:null;d.push({day:T,value:M,total_tokens:N,level:nt(S(M)),models:x})}f.push(d)}const k=f.length>e?f.slice(f.length-e):f;return{from:r,to:g(a),weeks:k,thresholds:{t1:p,t2:C,t3:w}}}function at({dailyRows:t,to:e}={}){const n=Y(e)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),o=new Map;for(const r of Array.isArray(t)?t:[]){const s=typeof r?.day=="string"?r.day:null;if(!s)continue;const u=A(r?.conversation_count??r?.billable_total_tokens??r?.total_tokens)??0;o.set(s,Math.max(0,u))}let a=0;for(let r=0;r<370;r++){const s=g(v(n,-r));if((o.get(s)??0)>0){a+=1;continue}break}return a}const P={},H="tokentracker",st=["tokentracker/tokentracker","spacedriveapp/spacedrive","acme/alpha","acme/beta","neo/nebula","signal/flux","matrix/terminal","orbit/atlas","lumen/core","delta/horizon"];function rt(){if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock")||"").toLowerCase();if(e==="0"||e==="false"||e==="off"||e==="no")return!1;if(e==="1"||e==="true"||e==="on"||e==="yes")return!0}if(typeof import.meta<"u"&&P){const t="".toLowerCase();if(t==="1"||t==="true")return!0}return!1}function ut(){if(typeof import.meta<"u"&&P){const t="".trim();if(t)return t;const e="".trim();if(e)return e}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_now")||"").trim();if(e)return e;const n=String(t.get("mock_today")||"").trim();if(n)return n}return""}function it(t){if(!t)return null;const e=String(t).trim();if(!e)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const[o,a,r]=e.split("-").map(Number);if(!Number.isFinite(o)||!Number.isFinite(a)||!Number.isFinite(r))return null;const s=new Date(o,a-1,r,12,0,0);return Number.isFinite(s.getTime())?s:null}const n=new Date(e);return Number.isFinite(n.getTime())?n:null}function Mt(){return rt()?it(ut()):null}function ct(){if(typeof import.meta<"u"&&P){const t="".trim();if(t)return t}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_seed")||"").trim();if(e)return e}return H}function lt(){if(typeof import.meta<"u"&&P){const t="".trim(),e=Number(t);if(Number.isFinite(e)&&e>0)return Math.floor(e)}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_missing")||"").trim(),n=Number(e);if(Number.isFinite(n)&&n>0)return Math.floor(n)}return 0}function I(t){return(t==null?ct():String(t)).trim()||H}function R(t){let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}function U(t){if(typeof t!="string")return null;const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t.trim());if(!e)return null;const n=Number(e[1]),o=Number(e[2])-1,a=Number(e[3]),r=new Date(Date.UTC(n,o,a));return Number.isFinite(r.getTime())&&g(r)===t.trim()?r:null}function K(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+e))}function W(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+e,1))}function _t(t){return`${t.getUTCFullYear()}-${String(t.getUTCMonth()+1).padStart(2,"0")}`}function $({from:t,to:e,seed:n}){const o=U(F(new Date))||new Date,a=U(t)||o,r=U(e)||a,s=[],u=I(n),i=Math.floor((Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate())-Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))/864e5)+1;for(let _=0;_<i;_+=1){const m=K(a,_),c=g(m),p=R(`${u}:${c}`),C=p%1e3/1e3,w=.6+.4*Math.sin(_/6*Math.PI*.5),S=m.getUTCDay()===0||m.getUTCDay()===6?.65:1,f=18e3+Math.round(12e3*C),k=Math.max(0,Math.round(f*w*S)),l=Math.round(k*.46),d=Math.round(k*.34),h=Math.round(k*.14),y=Math.max(0,k-l-d-h),D={};if(k>0){const T=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],b=1+p%3;let M=k;for(let N=0;N<b;N++){const x=T[(p+N)%T.length];if(N===b-1)D[x]=M;else{const j=Math.round(M*(.3+.4*((p+N*17)%10)/10));D[x]=j,M-=j}}}s.push({day:c,total_tokens:k,billable_total_tokens:k,input_tokens:l,output_tokens:d,cached_input_tokens:h,reasoning_output_tokens:y,conversation_count:1+p%5,models:D})}return s}function mt({day:t,seed:e}){const n=U(t)||U(F(new Date))||new Date,o=g(n),a=I(e),r=Array.from({length:48},(u,i)=>{const _=Math.floor(i/2),m=i%2===0?0:30,c=R(`${a}:${o}:${_}:${m}`),p=c%1e3/1e3,C=(_+m/60)/24,w=.4+.6*Math.sin(C*Math.PI*2),S=900+Math.round(700*p),f=Math.max(0,Math.round(S*w)),k=Math.round(f*.46),l=Math.round(f*.34),d=Math.round(f*.14),h=Math.max(0,f-k-l-d),y={};if(f>0){const D=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],T=1+c%2;let b=f;for(let M=0;M<T;M++){const N=D[(c+M)%D.length];if(M===T-1)y[N]=b;else{const x=Math.round(b*(.3+.4*((c+M*17)%10)/10));y[N]=x,b-=x}}}return{hour:`${o}T${String(_).padStart(2,"0")}:${String(m).padStart(2,"0")}:00`,total_tokens:f,billable_total_tokens:f,input_tokens:k,output_tokens:l,cached_input_tokens:d,reasoning_output_tokens:h,models:y}}),s=Math.max(0,Math.min(48,lt()));if(s>0){const u=Date.now(),i=r.map((c,p)=>{const C=Date.parse(c.hour);return Number.isFinite(C)&&C<=u?{index:p,ts:C}:null}).filter(Boolean),_=Math.max(0,i.length-s),m=i.slice(_);for(const c of m){const p=r[c.index];p&&(r[c.index]={...p,missing:!0})}}return r}function dt({months:t=24,to:e,seed:n}){const o=U(e)||U(F(new Date))||new Date,a=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),1)),r=I(n),s=[];for(let u=t-1;u>=0;u-=1){const i=W(a,-u),_=_t(i),m=R(`${r}:${_}`),c=m%1e3/1e3,p=.7+.3*Math.sin(s.length/6*Math.PI*.5),C=36e4+Math.round(2e5*c),w=Math.max(0,Math.round(C*p)),S=Math.round(w*.46),f=Math.round(w*.34),k=Math.round(w*.14),l=Math.max(0,w-S-f-k),d={};if(w>0){const h=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],y=1+m%3;let D=w;for(let T=0;T<y;T++){const b=h[(m+T)%h.length];if(T===y-1)d[b]=D;else{const M=Math.round(D*(.3+.4*((m+T*17)%10)/10));d[b]=M,D-=M}}}s.push({month:_,total_tokens:w,billable_total_tokens:w,input_tokens:S,output_tokens:f,cached_input_tokens:k,reasoning_output_tokens:l,models:d})}return s}function O(t){return t.reduce((e,n)=>(e.total_tokens+=Number(n.total_tokens||0),e.billable_total_tokens+=Number(n.billable_total_tokens||n.total_tokens||0),e.input_tokens+=Number(n.input_tokens||0),e.output_tokens+=Number(n.output_tokens||0),e.cached_input_tokens+=Number(n.cached_input_tokens||0),e.reasoning_output_tokens+=Number(n.reasoning_output_tokens||0),e.conversation_count+=Number(n.conversation_count||0),e),{total_tokens:0,billable_total_tokens:0,input_tokens:0,output_tokens:0,cached_input_tokens:0,reasoning_output_tokens:0,conversation_count:0})}function gt(t,e=1.75){const n=Number(t||0);return!Number.isFinite(n)||n<=0?"0.000000":(n*e/1e6).toFixed(6)}function E(t,e){const n=Number.isFinite(e)?e:0;return{total_tokens:Math.max(0,Math.round(t.total_tokens*n)),billable_total_tokens:Math.max(0,Math.round((t.billable_total_tokens??t.total_tokens)*n)),input_tokens:Math.max(0,Math.round(t.input_tokens*n)),output_tokens:Math.max(0,Math.round(t.output_tokens*n)),cached_input_tokens:Math.max(0,Math.round(t.cached_input_tokens*n)),reasoning_output_tokens:Math.max(0,Math.round(t.reasoning_output_tokens*n))}}function B(t){return{...t,total_cost_usd:gt(t.total_tokens)}}function Tt({from:t,to:e,seed:n}={}){const o=$({from:t,to:e,seed:n});return{from:t,to:e,data:o}}function Ut({day:t,seed:e}={}){const n=U(t)||new Date,o=g(n),a=mt({day:o,seed:e});return{day:o,data:a}}function Ct({months:t=24,to:e,seed:n}={}){const o=U(e)||U(F(new Date))||new Date,a=g(o),r=dt({months:t,to:a,seed:n}),s=W(new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),1)),-(t-1));return{from:g(s),to:a,months:t,data:r}}function Nt({from:t,to:e,seed:n,rolling:o=!0}={}){const a=$({from:t,to:e,seed:n}),r=O(a),s=B(r),u=o?ft({to:e,seed:n}):null;return{from:t,to:e,days:a.length,totals:s,...u?{rolling:u}:{}}}function ft({to:t,seed:e}={}){const n=U(t)||U(F(new Date))||new Date,o=g(n),a=g(K(n,-6)),r=g(K(n,-29)),s=$({from:a,to:o,seed:e}),u=$({from:r,to:o,seed:e});return{last_7d:V({rows:s,from:a,to:o}),last_30d:V({rows:u,from:r,to:o})}}function V({rows:t,from:e,to:n}={}){const o=O(t||[]),a=(t||[]).filter(s=>Number(s.billable_total_tokens??s.total_tokens)>0).length,r=a>0?Math.floor(o.billable_total_tokens/a):0;return{from:e,to:n,totals:{billable_total_tokens:o.billable_total_tokens,conversation_count:o.conversation_count},active_days:a,avg_per_active_day:r}}function Ft({seed:t,limit:e=3}={}){const n=I(t),o=st.map((a,r)=>{const u=12e4+R(`${n}:${a}`)%9e5,i=r%4*4200,_=Math.max(0,u+i),m=Math.max(0,Math.round(_*.96));return{project_key:a,project_ref:`https://github.com/${a}`,total_tokens:String(_),billable_total_tokens:String(m)}}).sort((a,r)=>Number(r.billable_total_tokens)-Number(a.billable_total_tokens)).slice(0,Math.max(1,Math.min(10,Math.floor(Number(e)||3))));return{generated_at:new Date().toISOString(),entries:o}}function St({weeks:t=52,to:e,weekStartsOn:n="sun",seed:o}={}){const a=z({weeks:t,now:U(e)||U(F(new Date))||new Date,weekStartsOn:n}),r=$({from:a.from,to:a.to,seed:o});return{...ot({dailyRows:r,weeks:t,to:a.to,weekStartsOn:n}),week_starts_on:n,active_days:r.filter(u=>Number(u.billable_total_tokens??u.total_tokens)>0).length,streak_days:at({dailyRows:r,to:a.to})}}function xt({from:t,to:e,seed:n}={}){const o=$({from:t,to:e,seed:n}),a=O(o),s=[{source:"codex",weight:.7,models:[{model:"gpt-5.2-codex",model_id:"gpt-5.2-codex",weight:.2},{model:"unknown",model_id:"unknown",weight:.8}]},{source:"claude",weight:.2,models:[{model:"claude-3.5",model_id:"claude-3.5",weight:.3},{model:"unknown",model_id:"unknown",weight:.7}]},{source:"every-code",weight:.1,models:[{model:"unknown",model_id:"unknown",weight:1}]}].map(u=>{const i=E(a,u.weight),_=u.models.map(m=>{const c=E(i,m.weight);return{model:m.model,model_id:m.model_id||m.model,totals:B(c)}});return{source:u.source,totals:B(i),models:_}});return{from:t,to:e,days:o.length,sources:s,pricing:{model:"mock",pricing_mode:"add",source:"mock",effective_from:F(new Date),rates_per_million_usd:{input:"1.750000",cached_input:"0.175000",output:"14.000000",reasoning_output:"14.000000"}}}}function vt({from:t,to:e,source:n="claude"}={}){if(n==="codex")return{from:t,to:e,source:"codex",scope:"supported",totals:{input_tokens:142e4,cached_input_tokens:588e4,cache_creation_input_tokens:92e4,output_tokens:256e4,reasoning_output_tokens:61e4,total_tokens:1078e4},session_count:188,message_count:5436,tool_calls_breakdown:{categories:[{name:"Execution",calls:742,totals:{input_tokens:32e4,cached_input_tokens:104e4,cache_creation_input_tokens:11e4,output_tokens:46e4,reasoning_output_tokens:12e4,total_tokens:193e4},tools:[{name:"exec_command",calls:510,totals:{input_tokens:25e4,cached_input_tokens:82e4,cache_creation_input_tokens:8e4,output_tokens:37e4,reasoning_output_tokens:9e4,total_tokens:152e4}},{name:"write_stdin",calls:232,totals:{input_tokens:7e4,cached_input_tokens:22e4,cache_creation_input_tokens:3e4,output_tokens:9e4,reasoning_output_tokens:3e4,total_tokens:41e4}}]},{name:"Browser",calls:406,totals:{input_tokens:21e4,cached_input_tokens:88e4,cache_creation_input_tokens:9e4,output_tokens:42e4,reasoning_output_tokens:1e5,total_tokens:17e5},tools:[{name:"take_snapshot",calls:180,totals:{input_tokens:1e5,cached_input_tokens:4e5,cache_creation_input_tokens:4e4,output_tokens:18e4,reasoning_output_tokens:4e4,total_tokens:76e4}},{name:"click",calls:126,totals:{input_tokens:6e4,cached_input_tokens:25e4,cache_creation_input_tokens:3e4,output_tokens:12e4,reasoning_output_tokens:35e3,total_tokens:495e3}},{name:"evaluate_script",calls:100,totals:{input_tokens:5e4,cached_input_tokens:23e4,cache_creation_input_tokens:2e4,output_tokens:12e4,reasoning_output_tokens:25e3,total_tokens:445e3}}]}],tools_total:363e4,privacy:{includes_inputs:!1,note:"Aggregated tool names only; no tool arguments or outputs are included."}},exec_command_breakdown:{by_type:[{name:"test",calls:168,failures:14,duration_ms:482e3,max_duration_ms:18400,output_chars:45e4,output_lines:8600,totals:{input_tokens:9e4,cached_input_tokens:32e4,output_tokens:16e4,reasoning_output_tokens:42e3,total_tokens:612e3}},{name:"build",calls:116,failures:9,duration_ms:392e3,max_duration_ms:22100,output_chars:31e4,output_lines:5200,totals:{input_tokens:7e4,cached_input_tokens:24e4,output_tokens:13e4,reasoning_output_tokens:3e4,total_tokens:47e4}}],by_exit:[{name:"completed:0",calls:438,failures:0,duration_ms:104e4,max_duration_ms:22100,output_chars:83e4,output_lines:13100,totals:{input_tokens:22e4,cached_input_tokens:78e4,output_tokens:35e4,reasoning_output_tokens:82e3,total_tokens:1432e3}},{name:"completed:1",calls:72,failures:72,duration_ms:155e3,max_duration_ms:11800,output_chars:12e4,output_lines:2300,totals:{input_tokens:3e4,cached_input_tokens:11e4,output_tokens:55e3,reasoning_output_tokens:8e3,total_tokens:195e3}}]}};if(n!=="claude")return{from:t,to:e,source:n,scope:"unsupported",totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},categories:["system_prefix","conversation_history","user_input","tool_calls","subagents","reasoning","assistant_response"].map(s=>({key:s,totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},percent:0})),session_count:0,message_count:0};const o=[{key:"system_prefix",total:12896539},{key:"conversation_history",total:320207200},{key:"user_input",total:998025},{key:"tool_calls",total:4808739},{key:"subagents",total:1022828},{key:"reasoning",total:11073118},{key:"assistant_response",total:1289174}],a=o.reduce((s,u)=>s+u.total,0),r=o.map(({key:s,total:u})=>({key:s,totals:{input_tokens:s==="user_input"?u:0,cached_input_tokens:s==="conversation_history"?Math.round(u*.95):0,cache_creation_input_tokens:s==="system_prefix"?u:s==="conversation_history"?Math.round(u*.05):0,output_tokens:["tool_calls","subagents","reasoning","assistant_response"].includes(s)?u:0,reasoning_output_tokens:s==="reasoning"?u:0,total_tokens:u},percent:Number((u/a*100).toFixed(2))}));return{from:t,to:e,source:"claude",scope:"supported",totals:{input_tokens:998025,cached_input_tokens:Math.round(320207200*.95),cache_creation_input_tokens:12896539+Math.round(320207200*.05),output_tokens:18193859,reasoning_output_tokens:11073118,total_tokens:a},categories:r,session_count:312,message_count:12046}}export{yt as a,ot as b,at as c,wt as d,kt as e,g as f,z as g,ht as h,rt as i,Mt as j,tt as k,Dt as l,bt as m,Tt as n,Nt as o,xt as p,Ut as q,Ft as r,Ct as s,St as t,vt as u};