@ipv9/tokentracker-cli 0.39.44 → 0.39.45
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/dashboard/dist/assets/{Card-C_H8B1rI.js → Card-2-TQg7P7.js} +1 -1
- package/dashboard/dist/assets/DashboardPage-yb9ss9uE.js +60 -0
- package/dashboard/dist/assets/{FadeIn-BE8I9B4-.js → FadeIn-BOc6XtOK.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-DQ9gR343.js → IpCheckPage-C2tIb68P.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-Balfhw3-.js → LimitsPage-BsuLQ9co.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-hxi161Wl.js → LocalOnlyNotice-C8R9KLef.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-B4zbh-jA.js → PopoverPopup-BpfseoI7.js} +1 -1
- package/dashboard/dist/assets/{Select-DLYT4NCO.js → Select-Ctk8zze5.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-DUyZrDnS.js → SelectItemText-BKZlFyFs.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-BySJoulk.js → SettingsPage-CQXM8qGU.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-DpiMLTPo.js → SkillsPage-4EMm0eBX.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-C6je8upG.js → WidgetsPage-C2sdX5g6.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-ByarX-vY.js → WrappedPage-CLiuEcQZ.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-C-WAJGZ8.js → arrow-up-right-BDkp93DX.js} +1 -1
- package/dashboard/dist/assets/{download-BhOg_qb4.js → download-DZ6SoCSn.js} +1 -1
- package/dashboard/dist/assets/{format-Co2okzG-.js → format-CaW9kvsA.js} +1 -1
- package/dashboard/dist/assets/limitDisplay-DNU_w4O7.js +1 -0
- package/dashboard/dist/assets/{main-q9UoIq7C.js → main-DgyymGht.js} +7 -3
- package/dashboard/dist/assets/{mock-data-0XiGBeUV.js → mock-data-D6C7Fba3.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DmEIJPtg.js → use-limits-display-prefs-B7cHBa7Y.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-QLM3Sd2C.js → use-native-settings-BKAzGuxw.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-Dtize6Tx.js → useCurrency-BVr6Ajuu.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/commands/doctor.js +6 -0
- package/src/lib/doctor.js +164 -10
- package/src/lib/local-api.js +79 -20
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/process-list.js +91 -0
- package/src/lib/rollout.js +5 -2
- package/src/lib/single-flight.js +59 -0
- package/src/lib/transcript-suppression.js +133 -0
- package/src/lib/usage-limits.js +79 -19
- package/dashboard/dist/assets/DashboardPage-DOa3N76u.js +0 -60
- package/dashboard/dist/assets/limitDisplay-CPMQA7lm.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{H as v,r as k,F as L,j as y,p as _}from"./main-q9UoIq7C.js";import{i as g,n as N,o as j,p as U,q as z,r as I,s as C,t as E,u as D,v as A}from"./mock-data-0XiGBeUV.js";import{L as b}from"./use-limits-display-prefs-DmEIJPtg.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 m(t,e,r){const a=new URL(`/functions/${t}`,window.location.origin);if(e)for(const[o,l]of Object.entries(e))l!=null&&l!==""&&a.searchParams.set(o,String(l));const{accessToken:s,...i}=r||{},n=await fetch(a.toString(),{headers:{Accept:"application/json"},cache:"no-store",...i});if(!n.ok){const o=new Error(`Request failed with HTTP ${n.status}`);throw o.status=n.status,o}return n.json()}function p({timeZone:t,tzOffsetMinutes:e}={}){const r={},a=typeof t=="string"?t.trim():"";return a&&(r.tz=a),Number.isFinite(e)&&(r.tz_offset_minutes=String(Math.trunc(e))),r}function h({source:t,model:e}={}){const r={},a=typeof t=="string"?t.trim().toLowerCase():"";a&&(r.source=a);const s=typeof e=="string"?e.trim():"";return s&&(r.model=s),r}async function O({from:t,to:e,source:r,model:a,timeZone:s,tzOffsetMinutes:i,rolling:n=!1,accessToken:o}={}){if(g())return j({from:t,to:e,seed:o,rolling:n});const l=p({timeZone:s,tzOffsetMinutes:i}),c=h({source:r,model:a}),w=n?{rolling:"1"}:{};return m(f.usageSummary,{from:t,to:e,...c,...l,...w},{accessToken:o})}async function Y({from:t,to:e,source:r,limit:a,timeZone:s,tzOffsetMinutes:i,accessToken:n}={}){if(g())return I({seed:n,limit:a});const o=p({timeZone:s,tzOffsetMinutes:i}),c={...h({source:r}),...o};return t&&(c.from=t),e&&(c.to=e),a!=null&&(c.limit=String(a)),m(f.projectUsageSummary,c)}async function Q(t={}){if(g()){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 m(f.userStatus)}async function V({signal:t}={}){const e=await v(),r=await fetch(`/functions/${f.localSync}`,{method:"POST",headers:{Accept:"application/json",...e},cache:"no-store",signal:t}),a=await r.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${r.status}`}));if(!r.ok||a?.ok===!1){const s=a?.error||a?.message||`Local sync request failed with HTTP ${r.status}`,i=new Error(s);throw i.status=r.status,i}return a}async function X({from:t,to:e,source:r,timeZone:a,tzOffsetMinutes:s,accessToken:i}={}){if(g())return U({from:t,to:e,seed:i});const n=p({timeZone:a,tzOffsetMinutes:s}),o=h({source:r});return m(f.usageModelBreakdown,{from:t,to:e,...o,...n},{accessToken:i})}async function Z({from:t,to:e,source:r="claude",timeZone:a,tzOffsetMinutes:s}={}){if(g())return A({from:t,to:e,source:r});const i=p({timeZone:a,tzOffsetMinutes:s});return m(f.usageCategoryBreakdown,{from:t,to:e,source:r,...i})}async function ee({from:t,to:e,source:r,model:a,timeZone:s,tzOffsetMinutes:i,accessToken:n}={}){if(g())return N({from:t,to:e,seed:n});const o=p({timeZone:s,tzOffsetMinutes:i}),l=h({source:r,model:a});return m(f.usageDaily,{from:t,to:e,...l,...o},{accessToken:n})}async function te({day:t,source:e,model:r,timeZone:a,tzOffsetMinutes:s,accessToken:i}={}){if(g())return z({day:t,seed:i});const n=p({timeZone:a,tzOffsetMinutes:s}),o=h({source:e,model:r}),l=t?{day:t,...o,...n}:{...o,...n};return m(f.usageHourly,l,{accessToken:i})}async function re({months:t,to:e,source:r,model:a,timeZone:s,tzOffsetMinutes:i,accessToken:n}={}){if(g())return C({months:t,to:e,seed:n});const o=p({timeZone:s,tzOffsetMinutes:i}),l=h({source:r,model:a});return m(f.usageMonthly,{...t?{months:String(t)}:{},...e?{to:e}:{},...l,...o},{accessToken:n})}async function M(t={}){if(g())return D();const e=t?.refresh?{refresh:"1"}:void 0;return m(f.usageLimits,e)}async function ae({weeks:t,to:e,weekStartsOn:r,source:a,model:s,timeZone:i,tzOffsetMinutes:n,accessToken:o}={}){if(g())return E({weeks:t,to:e,weekStartsOn:r,seed:o});const l=p({timeZone:i,tzOffsetMinutes:n}),c=h({source:a,model:s});return m(f.usageHeatmap,{weeks:String(t),to:e,week_starts_on:r,...c,...l},{accessToken:o})}function se(t){const e=!!t?.initialState,[r,a]=k.useState(()=>e?t?.initialState?.data??null:null),[s,i]=k.useState(()=>e?t?.initialState?.error??null:null),[n,o]=k.useState(!e),l=!!t?.initialRefresh,c=!!t?.publishToPreloadCache,w=k.useCallback((u,d)=>{!c||!u||typeof u!="object"||L(u,{source:d})},[c]),x=k.useCallback(async()=>{try{const u=await M({refresh:!0}),d=u&&typeof u=="object"?u:null;a(d),i(null),w(d,"manual-refresh")}catch(u){i(u?.message||String(u))}},[w]);return k.useEffect(()=>{if(e&&!l)return;let u=!1;return(async()=>{try{const d=await M(l?{refresh:!0}:{});if(u)return;const S=d&&typeof d=="object"?d:null;a(S),i(null),w(S,"page-load")}catch(d){if(u)return;i(d?.message||String(d))}finally{u||o(!1)}})(),()=>{u=!0}},[e,l,w]),{data:r,error:s,isLoading:n,refresh:x}}function F(t){if(!t)return null;const e=typeof t=="number"?t*1e3:Date.parse(t);if(!Number.isFinite(e))return null;const r=e-Date.now();if(r<=0)return _("shared.time.now");const a=Math.floor(r/6e4);if(a<60)return`${a}m`;const s=Math.floor(a/60);return s<24?`${s}h`:`${Math.floor(s/24)}d`}const H=["claude","codex","cursor","gemini","kimi","zai","kiro","copilot","antigravity"],P={githubcopilot:"copilot",zhipu:"zai",glm:"zai"};function K(t){const e=String(t||"").toLowerCase().replace(/[^a-z0-9]/g,"");return H.includes(e)?e:P[e]?P[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 R(t,e){const r=Number(t?.used),a=Number(t?.limit);if(!Number.isFinite(r)||!Number.isFinite(a)||a<=0)return null;const s=Math.max(0,Math.min(a,r)),i=e===b.REMAINING?a-s:s;return{used:Math.round(i),limit:Math.round(a)}}function $(t,e,r){const a=B[t];if(!a||!e)return[];const s=[];for(const i of a){const n=e[i.field];if(!n)continue;const o=Number(n[i.pctField||"used_percent"]);if(!Number.isFinite(o))continue;const l=Math.max(0,Math.min(100,o)),c=r===b.REMAINING?100-l:l;s.push({label:i.labelKey?_(i.labelKey):i.label,displayPct:c,counts:R(n,r),reset:F(n[i.resetField||"reset_at"])})}return s}function T(t,e){const r=e===b.REMAINING?100-t:t;return r>=90?{dot:"bg-red-500",chip:"border-red-500/30 bg-red-500/10"}:r>=75?{dot:"bg-orange-500",chip:"border-orange-500/30 bg-orange-500/10"}:r>=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 G({label:t,displayPct:e,counts:r,reset:a,mode:s}){const i=T(e,s),n=Math.round(e),o=r?_("usage.overview.provider_limit_count",{used:r.used,limit:r.limit}):_("usage.overview.model_percent",{percent:n}),c=_(r?a?"usage.overview.provider_limit_counted_reset":"usage.overview.provider_limit_counted":a?"usage.overview.provider_limit_reset":"usage.overview.provider_limit",{label:t,percent:n,reset:a,...r?{used:r.used,limit:r.limit}:{}});return y.jsxs("span",{className:`inline-flex items-center gap-1.5 rounded-full border px-2 py-1 text-[11px] leading-none ${i.chip}`,title:c,"aria-label":c,children:[y.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${i.dot}`,"aria-hidden":"true"}),y.jsx("span",{className:"text-oai-gray-500 dark:text-oai-gray-400",children:t}),y.jsx("span",{className:"font-semibold tabular-nums text-oai-black dark:text-oai-white",children:o})]})}function ie({label:t,usageLimits:e,mode:r=b.USED}){if(!e||typeof e!="object")return null;const a=K(t);if(!a)return null;const s=e[a];if(!s||!s.configured)return null;const i=r===b.REMAINING?b.REMAINING:b.USED;if(s.error)return y.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:s.error})});const n=$(a,s,i);return n.length===0&&s.notice?y.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:s.notice}):n.length===0?null:y.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:n.map(o=>y.jsx(G,{label:o.label,displayPct:o.displayPct,counts:o.counts,reset:o.reset,mode:i},o.label))})}export{ie as L,ee as a,Y as b,re as c,te as d,O as e,X as f,ae as g,Z as h,Q as i,F as j,R as k,V as t,se as u};
|