tokentracker-cli 0.57.1 → 0.58.0

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 (55) hide show
  1. package/README.ja.md +6 -5
  2. package/README.ko.md +6 -5
  3. package/README.md +7 -6
  4. package/README.zh-CN.md +6 -5
  5. package/dashboard/dist/assets/{ActivityHeatmap-BvbV3_J7.js → ActivityHeatmap--h7iLeSz.js} +1 -1
  6. package/dashboard/dist/assets/{Card-DJZ6ntik.js → Card-KutJI7Kb.js} +1 -1
  7. package/dashboard/dist/assets/DashboardPage-CZS3KR2C.js +19 -0
  8. package/dashboard/dist/assets/{DevicePage-DW6XIKeU.js → DevicePage-Bvf6grjO.js} +1 -1
  9. package/dashboard/dist/assets/{DialogTitle-BsrlMQVP.js → DialogTitle-Cd8SHRAb.js} +1 -1
  10. package/dashboard/dist/assets/{FadeIn-XjqQkcHf.js → FadeIn-D_0IpM7h.js} +1 -1
  11. package/dashboard/dist/assets/{HeaderGithubStar-DcwDZDfU.js → HeaderGithubStar-wllgUDeU.js} +1 -1
  12. package/dashboard/dist/assets/{IpCheckPage-DwWHgam0.js → IpCheckPage-oUeKrhWf.js} +1 -1
  13. package/dashboard/dist/assets/{LandingPage-BqtWjGwE.js → LandingPage-BqzdZPJZ.js} +1 -1
  14. package/dashboard/dist/assets/{LeaderboardAvatar-BeBtwC-_.js → LeaderboardAvatar-Bib0pX-r.js} +1 -1
  15. package/dashboard/dist/assets/{LeaderboardPage-0TwqZOxu.js → LeaderboardPage-BjLZyZb-.js} +3 -3
  16. package/dashboard/dist/assets/{LeaderboardProfileModal-3HwkYdbM.js → LeaderboardProfileModal-GiTmpwyn.js} +1 -1
  17. package/dashboard/dist/assets/{LeaderboardProfilePage-865y5FBU.js → LeaderboardProfilePage-Df_jL82E.js} +1 -1
  18. package/dashboard/dist/assets/LimitsPage-BhPNmv6R.js +2 -0
  19. package/dashboard/dist/assets/{LocalOnlyNotice-CTKip6yZ.js → LocalOnlyNotice-B01hqlKr.js} +1 -1
  20. package/dashboard/dist/assets/{LoginPage-DhfoXUgm.js → LoginPage-BjqX1wZg.js} +1 -1
  21. package/dashboard/dist/assets/{PopoverPopup-3YotW-4M.js → PopoverPopup-CWyN32rM.js} +1 -1
  22. package/dashboard/dist/assets/{ResetPasswordPage-CqEEo2VL.js → ResetPasswordPage-Bw7tWm1t.js} +1 -1
  23. package/dashboard/dist/assets/{Select-BjnA__CB.js → Select-DbBT6mPJ.js} +1 -1
  24. package/dashboard/dist/assets/{SelectItemText-CoQ0e4TL.js → SelectItemText-XGWezP4M.js} +1 -1
  25. package/dashboard/dist/assets/{SettingsPage-ushnnb65.js → SettingsPage-CrA-jBWs.js} +1 -1
  26. package/dashboard/dist/assets/{SkillsPage-CW4mBNzt.js → SkillsPage-CfYTgQMY.js} +1 -1
  27. package/dashboard/dist/assets/{WidgetsPage-BiwEsW3y.js → WidgetsPage-DjE_NMiT.js} +1 -1
  28. package/dashboard/dist/assets/{WrappedPage-vu2gEGcG.js → WrappedPage-MciuOQFt.js} +1 -1
  29. package/dashboard/dist/assets/{agent-logos-CvsRxSzl.js → agent-logos-JyXME_ur.js} +1 -1
  30. package/dashboard/dist/assets/{arrow-up-right-DwYMKA3i.js → arrow-up-right-U8aUNwfl.js} +1 -1
  31. package/dashboard/dist/assets/{download-BpLBXlyg.js → download-CK8DaHH6.js} +1 -1
  32. package/dashboard/dist/assets/{info-D7gs3LAC.js → info-DF9b_Lut.js} +1 -1
  33. package/dashboard/dist/assets/{main-D2iJg7iA.js → main-4M5oNV2-.js} +15 -11
  34. package/dashboard/dist/assets/{main-Bb0Bwbp7.css → main-xFJe2FDa.css} +1 -1
  35. package/dashboard/dist/assets/use-limits-display-prefs--1a77fnk.js +1 -0
  36. package/dashboard/dist/assets/{use-native-settings-C-JvsUqt.js → use-native-settings-PZ_s8TF_.js} +1 -1
  37. package/dashboard/dist/assets/{use-usage-limits-DfKKdPYm.js → use-usage-limits-B11QqFl7.js} +1 -1
  38. package/dashboard/dist/assets/{useCurrency-CAzf_Pmi.js → useCurrency-CzRjastg.js} +1 -1
  39. package/dashboard/dist/assets/{useScrollLock-DNuJyLo9.js → useScrollLock-BXcNDJbM.js} +1 -1
  40. package/dashboard/dist/brand-logos/zcode.svg +1 -0
  41. package/dashboard/dist/index.html +2 -2
  42. package/dashboard/dist/share.html +2 -2
  43. package/package.json +2 -2
  44. package/src/commands/init.js +9 -2
  45. package/src/commands/status.js +11 -0
  46. package/src/commands/sync.js +45 -0
  47. package/src/lib/pricing/curated-overrides.json +2 -0
  48. package/src/lib/pricing/matcher.js +17 -2
  49. package/src/lib/pricing/seed-snapshot.json +1 -1
  50. package/src/lib/rollout.js +31 -0
  51. package/src/lib/usage-limits.js +6 -1
  52. package/src/lib/zcode-limits.js +213 -0
  53. package/dashboard/dist/assets/DashboardPage-Bu3v5Fm2.js +0 -19
  54. package/dashboard/dist/assets/LimitsPage-CfGYwdDz.js +0 -2
  55. package/dashboard/dist/assets/use-limits-display-prefs-BDCL1zsb.js +0 -1
@@ -1,2 +0,0 @@
1
- import{j as i,V as S,G as d,N as C,r as h,U as $,aG as W,i as B,L as G,aH as U}from"./main-D2iJg7iA.js";import{u as H}from"./use-usage-limits-DfKKdPYm.js";import{L as m,a as z,l as b,b as V,u as X}from"./use-limits-display-prefs-BDCL1zsb.js";import{C as I}from"./Card-DJZ6ntik.js";import{F as Y}from"./FadeIn-XjqQkcHf.js";import{L as q}from"./LocalOnlyNotice-CTKip6yZ.js";import"./arrow-up-right-DwYMKA3i.js";import"./download-BpLBXlyg.js";const J=[3,2,3,3,2,2,3];function f({className:e}){return i.jsx("div",{className:S("rounded bg-oai-gray-200/70 dark:bg-oai-gray-800/70 animate-pulse",e)})}function Q(){return i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(f,{className:"h-3 w-12 shrink-0"}),i.jsx(f,{className:"flex-1 h-1.5 rounded-full min-w-0"}),i.jsx(f,{className:"h-3 w-[30px] shrink-0"}),i.jsx(f,{className:"h-3 w-6 shrink-0"})]})}function Z({bars:e,index:t}){const n=t%3===0?"w-24":t%3===1?"w-20":"w-[4.5rem]";return i.jsxs("div",{className:"flex flex-col gap-1.5",children:[i.jsxs("div",{className:"flex items-center gap-1.5",children:[i.jsx(f,{className:"h-[14px] w-[14px] rounded shrink-0"}),i.jsx(f,{className:S("h-4",n)})]}),Array.from({length:e},(a,r)=>i.jsx(Q,{},r))]})}function ee(){return i.jsx(I,{children:i.jsxs("div",{className:"flex flex-col gap-3",children:[i.jsx(f,{className:"h-3.5 w-28"}),J.map((e,t)=>i.jsx(Z,{bars:e,index:t},t))]})})}function te(e,t){if(!(e>0))return null;const n=(e-t)/e;return Number.isFinite(n)?Math.min(Math.max(n,0),1):null}function ie(e,t,n=.03){return e>t+n}function ne(e){const t=Math.max(0,Math.floor(e)),n=Math.floor(t/3600);return n>24?`${Math.floor(n/24)}d`:n>0?`${n}h`:`${Math.floor(t/60)}m`}function re(e,t){if(typeof e.windowSeconds=="number")return e.windowSeconds;if(e.windowSecondsField&&t){const n=t[e.windowSecondsField];return typeof n=="number"&&n>0?n:null}return null}function P(e){return e==null?NaN:typeof e=="number"?e*1e3:Date.parse(e)}function ae({usedPercent:e,windowSeconds:t,resetMs:n,mode:a,now:r=Date.now()}){const o=Math.min(Math.max(Number(e)||0,0),100)/100,s={pacePercent:null,paceOver:!1,expectedPercent:null,runsOutEta:null,projectedEnd:null};if(!(t>0)||!Number.isFinite(n))return s;const c=Math.max(0,(n-r)/1e3),l=te(t,c);if(l==null)return s;if(s.expectedPercent=Math.round(l*100),s.paceOver=ie(o,l),o>=.05){const u=a==="remaining"?1-l:l;s.pacePercent=u*100}if(l>.02&&o>0){const u=t*l,x=o/u,p=o/l;p>=1&&x>0?s.runsOutEta=ne((1-o)/x):s.projectedEnd=Math.round(Math.min(p,1)*100)}return s}const _=100;function E(e){const t=Date.parse(e);return Number.isFinite(t)?t:null}function le(e){return Math.max(0,Math.min(_,Math.round(e)))}function oe(e){return new Intl.DateTimeFormat(C(),{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(new Date(e))}function se(e,t,n){if(e==null||e>=t)return _;const a=t-e,r=t-n;return le(r/a*_)}function de(e){const t=e.available_count;return t===null?null:Number.isInteger(t)&&t>=0?t:void 0}function ce(e,{now:t}={}){if(!e||typeof e!="object")return null;const n=de(e);if(n===void 0)return null;const a=Array.isArray(e.credits)?e.credits:[],r=t instanceof Date?t.getTime():Number(t??Date.now()),o=[];for(const s of a){const c=E(s?.expires_at);if(c==null)continue;const l=o.length+1;o.push({key:`reset-${l}`,label:d("limits.codex_reset_bank.row_label",{index:l}),expiresAt:oe(c),percent:se(E(s?.granted_at),c,r)})}return n===0?null:o.length>0?{kind:"rows",availableCount:n??o.length,rows:o}:n>0?{kind:"count_only",availableCount:n,rows:[]}:null}const L={claude:{windows(e){return[{key:"5h",labelKey:"limits.label.claude_5h",window:e.five_hour,pctField:"utilization",resetField:"resets_at",windowSeconds:5*3600},{key:"7d",labelKey:"limits.label.claude_7d",window:e.seven_day,pctField:"utilization",resetField:"resets_at",windowSeconds:7*86400},{key:"opus",labelKey:"limits.label.claude_opus",window:e.seven_day_opus,pctField:"utilization",resetField:"resets_at",windowSeconds:7*86400}]}},codex:{extra:"codex_reset_bank",windows(e){return[{key:"5h",labelKey:"limits.label.codex_5h",window:e.primary_window,windowSecondsField:"limit_window_seconds"},{key:"7d",labelKey:"limits.label.codex_7d",window:e.secondary_window,windowSecondsField:"limit_window_seconds"},{key:"spark-5h",labelKey:"limits.label.codex_spark_5h",window:e.spark_primary_window,windowSecondsField:"limit_window_seconds"},{key:"spark-7d",labelKey:"limits.label.codex_spark_7d",window:e.spark_secondary_window,windowSecondsField:"limit_window_seconds"}]}},cursor:{windows(e){return[{key:"plan",labelKey:"limits.label.cursor_plan",window:e.primary_window},{key:"auto",labelKey:"limits.label.cursor_auto",window:e.secondary_window},{key:"api",labelKey:"limits.label.cursor_api",window:e.tertiary_window}]}},gemini:{windows(e){return[{key:"pro",labelKey:"limits.label.gemini_pro",window:e.primary_window},{key:"flash",labelKey:"limits.label.gemini_flash",window:e.secondary_window},{key:"lite",labelKey:"limits.label.gemini_lite",window:e.tertiary_window}]}},kimi:{extra:"kimi_parallel",windows(e){return[{key:"weekly",labelKey:"limits.label.kimi_weekly",window:e.primary_window,windowSeconds:7*86400},{key:"5h",labelKey:"limits.label.kimi_5h",window:e.secondary_window,windowSeconds:5*3600},{key:"total",labelKey:"limits.label.kimi_total",window:e.tertiary_window}]}},kiro:{windows(e){return[{key:"month",labelKey:"limits.label.kiro_month",window:e.primary_window},{key:"bonus",labelKey:"limits.label.kiro_bonus",window:e.secondary_window}]}},grok:{windows(e){return[{key:"month",labelKey:"limits.label.grok_month",window:e.primary_window},{key:"ondemand",labelKey:"limits.label.grok_ondemand",window:e.secondary_window}]}},antigravity:{windows(e){return[{key:"claude",labelKey:"limits.label.antigravity_claude",window:e.primary_window},{key:"gpro",labelKey:"limits.label.antigravity_gpro",window:e.secondary_window},{key:"flash",labelKey:"limits.label.antigravity_flash",window:e.tertiary_window}]}},copilot:{extra:"copilot_otel",windows(e){return[{key:"premium",labelKey:"limits.label.copilot_premium",window:e.primary_window},{key:"chat",labelKey:"limits.label.copilot_chat",window:e.secondary_window}]}}},ue="shrink-0 text-oai-black dark:text-oai-white";function me(e){const t=P(e);if(!Number.isFinite(t))return null;const n=t-Date.now();if(n<=0)return d("shared.time.now");const a=Math.floor(n/6e4);if(a<60)return`${a}m`;const r=Math.floor(a/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function xe(e,t){const n=t===m.REMAINING?100-e:e;return n>=90?"bg-red-500":n>=70?"bg-amber-500":"bg-emerald-500"}function g(e,t="used_percent"){return e?t==="utilization"?e.utilization:e.used_percent:null}function R(e,t="reset_at"){return e?t==="resets_at"?e.resets_at:e.reset_at:null}function pe(e,t){return ae({usedPercent:g(e.window,e.pctField),windowSeconds:re(e,e.window),resetMs:P(R(e.window,e.resetField)),mode:t})}function we({label:e,pct:t,reset:n,mode:a=m.USED,pacePercent:r=null,paceOver:o=!1}){const s=Math.max(0,Math.min(100,Number(t)||0)),c=a===m.REMAINING?100-s:s,l=Math.round(c),u=c>0&&l===0?Math.max(c,.35):c;let x=String(l);c>0&&l===0&&(x=d("limits.bar.sub_one_percent"));const p=r==null?null:Math.max(0,Math.min(100,r));return i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{"data-limit-label":"",className:"text-[11px] text-oai-gray-500 dark:text-oai-gray-400 shrink-0 whitespace-nowrap",style:{width:"var(--tt-limits-label-w)"},children:e}),i.jsxs("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:[i.jsx("div",{className:`${xe(c,a)} rounded-full h-full transition-[width] duration-500 ease-out`,style:{width:`${u}%`,minWidth:c>0?"3px":0}}),p!=null&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"absolute top-0 h-full bg-oai-gray-100 dark:bg-oai-gray-700/50",style:{left:`calc(${p}% - 3px)`,width:"6px"}}),i.jsx("div",{className:`absolute top-0 h-full ${o?"bg-red-500":"bg-emerald-500"}`,style:{left:`calc(${p}% - 1px)`,width:"2px"}})]})]}),i.jsxs("span",{className:"text-[11px] tabular-nums text-oai-gray-500 dark:text-oai-gray-400 w-9 text-right shrink-0 whitespace-nowrap",children:[x,"%"]}),n&&i.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-500 w-6 text-right shrink-0",children:n})]})}function fe(e,t,n){const a=d(e.labelKey),r=n===m.REMAINING,o=l=>r?100-l:l;if(t.expectedPercent==null){const l=Math.round(Math.max(0,Math.min(100,Number(g(e.window,e.pctField))||0)));return r?d("limits.explain.remaining",{label:a,used:o(l)}):d("limits.explain.used",{label:a,used:l})}if(t.paceOver){if(t.runsOutEta)return d("limits.explain.ahead_eta",{label:a,eta:t.runsOutEta});const l=o(t.projectedEnd??100);return d(r?"limits.explain.ahead_pct_remaining":"limits.explain.ahead_pct",{label:a,pct:l})}const s=Math.round(Math.max(0,Math.min(100,Number(g(e.window,e.pctField))||0))),c=o(t.projectedEnd??s);return d(r?"limits.explain.on_track_remaining":"limits.explain.on_track",{label:a,pct:c})}function he({rows:e,mode:t}){if(e.length===0)return null;const n=t===m.REMAINING;return i.jsxs("div",{className:"mt-1 flex flex-col gap-1",children:[e.map(({spec:a,pace:r})=>i.jsx("div",{className:"text-[11px] leading-snug text-oai-gray-600 dark:text-oai-gray-300",children:fe(a,r,t)},a.key)),i.jsx("div",{className:"mt-1 pt-1.5 border-t border-oai-gray-200/70 dark:border-oai-gray-700/50 text-[10.5px] leading-snug text-oai-gray-400 dark:text-oai-gray-500",children:d(n?"limits.explain.body_remaining":"limits.explain.body")})]})}function k({name:e,providerId:t,children:n,expandable:a=!1,expanded:r=!1,onToggle:o}){const s=V(t),c=i.jsxs("div",{className:"flex items-center gap-1.5",children:[s?i.jsx($,{provider:s,size:14,className:ue}):null,i.jsx("span",{className:"text-sm font-medium text-oai-black dark:text-oai-white",children:e})]});return a?i.jsxs("div",{role:"button",tabIndex:0,"aria-expanded":r,onClick:o,onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),o?.())},className:"flex flex-col gap-1.5 -mx-1.5 px-1.5 py-1 rounded-lg cursor-pointer transition-colors hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/40 aria-expanded:bg-oai-gray-50 dark:aria-expanded:bg-oai-gray-800/40",children:[c,n]}):i.jsxs("div",{className:"flex flex-col gap-1.5",children:[c,n]})}const ye=z;function y({children:e,tone:t="neutral"}){const n=t==="error"?"text-red-600 dark:text-red-400":"text-oai-gray-500 dark:text-oai-gray-400";return i.jsx("div",{className:`text-[11px] leading-snug ${n}`,children:e})}function ge({rows:e,mode:t,extra:n=null}){const a=e.length===0&&!n;return i.jsxs(i.Fragment,{children:[e.map(({spec:r,pace:o})=>i.jsx(we,{label:d(r.labelKey),pct:g(r.window,r.pctField),reset:me(R(r.window,r.resetField)),mode:t,pacePercent:o.pacePercent,paceOver:o.paceOver},r.key)),a?i.jsx(y,{children:d("limits.status.no_data")}):null,n]})}function be({row:e}){const t=Math.max(0,Math.min(100,Number(e.percent)||0));return i.jsxs("div",{className:"flex items-center gap-2","data-reset-bank-row":"",children:[i.jsx("span",{"data-limit-label":"",className:"text-[11px] text-oai-gray-500 dark:text-oai-gray-400 shrink-0 whitespace-nowrap",style:{width:"var(--tt-limits-label-w)"},children:e.label}),i.jsx("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:i.jsx("div",{className:"bg-oai-gray-400 dark:bg-oai-gray-500 rounded-full h-full transition-[width] duration-500 ease-out",style:{width:`${t}%`,minWidth:t>0?"3px":0}})}),i.jsx("span",{className:"text-[10px] tabular-nums text-oai-gray-400 dark:text-oai-gray-500 w-[4.25rem] text-right shrink-0 whitespace-nowrap",children:e.expiresAt})]})}function _e({model:e}){const t=e.kind==="count_only"?d("limits.codex_reset_bank.count_only",{count:e.availableCount}):null;return i.jsxs("div",{className:"mt-1 flex flex-col gap-1","data-reset-bank-section":e.kind,children:[i.jsx("div",{className:"text-[10.5px] font-medium uppercase tracking-wide text-oai-gray-400 dark:text-oai-gray-500",children:d("limits.codex_reset_bank.title")}),t?i.jsx("div",{className:"text-[11px] leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:t}):e.rows.map(n=>i.jsx(be,{row:n},n.key))]})}function ke(e,t){if(e==="codex_reset_bank"){const n=ce(t.reset_credits);return n?i.jsx(_e,{model:n}):null}return e==="kimi_parallel"&&t.parallel_limit?i.jsx(y,{children:d("limits.label.kimi_parallel",{count:t.parallel_limit})}):e==="copilot_otel"&&!t.otel_has_files&&!t.otel_enabled?i.jsx(Ne,{defaultDir:t.otel_default_dir}):null}function je(e,t,n,a,r,o){const s=L[e];if(!s)return null;const c=s.windows(t).filter(u=>u.window).map(u=>({spec:u,pace:pe(u,a)})),l=ke(s.extra,t);return i.jsxs(k,{name:n,providerId:e,expandable:c.length>0,expanded:r,onToggle:o,children:[i.jsx(ge,{mode:a,rows:c,extra:l}),r?i.jsx(he,{rows:c,mode:a}):null]},e)}function ve(e,t,n,a,r){if(!L[e])return null;if(!t?.configured)return i.jsx(k,{name:b(e),providerId:e,children:i.jsx(y,{children:d("limits.status.not_connected")})},e);if(t.error)return i.jsx(k,{name:b(e),providerId:e,children:i.jsx(y,{tone:"error",children:d("shared.error.prefix",{error:t.error})})},e);const o=b(e),s=t.plan_label?`${o} ${t.plan_label}`:o;return je(e,t,s,n,a,r)}function Ne({defaultDir:e}){const[t,n]=h.useState(!1),r=["export COPILOT_OTEL_ENABLED=true","export COPILOT_OTEL_EXPORTER_TYPE=file",`export COPILOT_OTEL_FILE_EXPORTER_PATH="${e||"$HOME/.copilot/otel"}/copilot-otel-$(date +%Y%m%d).jsonl"`].join(`
2
- `),o=async s=>{s.stopPropagation();try{await navigator.clipboard.writeText(r),n(!0),setTimeout(()=>n(!1),1600)}catch{}};return i.jsxs("div",{className:"mt-1 rounded-md border border-amber-300/60 dark:border-amber-700/40 bg-amber-50/50 dark:bg-amber-900/10 px-2.5 py-2 text-[11px] text-oai-gray-600 dark:text-oai-gray-300",children:[i.jsx("div",{className:"font-medium text-oai-gray-700 dark:text-oai-gray-200",children:d("limits.copilot.otelHint.title")}),i.jsx("div",{className:"mt-0.5 leading-snug",children:d("limits.copilot.otelHint.body")}),i.jsx("pre",{className:"mt-1.5 overflow-x-auto rounded bg-oai-gray-100 dark:bg-oai-gray-900/60 px-2 py-1.5 font-mono text-[10.5px] leading-tight whitespace-pre",children:r}),i.jsx("button",{type:"button",onClick:o,className:"mt-1 inline-flex items-center gap-1 rounded border border-oai-gray-300 dark:border-oai-gray-700 px-1.5 py-0.5 text-[10.5px] text-oai-gray-700 dark:text-oai-gray-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors",children:t?d("limits.copilot.otelHint.copied"):d("limits.copilot.otelHint.copy")})]})}function Me(e){const[t,n]=h.useState(0);return h.useLayoutEffect(()=>{const a=e.current;if(!a)return;const r=a.querySelectorAll("[data-limit-label]");let o=0,s=null;if(r.length>0)try{s=document.createElement("canvas").getContext("2d")}catch{s=null}if(s){const l=window.getComputedStyle(r[0]);s.font=`${l.fontStyle} ${l.fontWeight} ${l.fontSize} ${l.fontFamily}`;for(const u of r)o=Math.max(o,s.measureText(u.textContent).width)}const c=Math.ceil(o);n(l=>l===c?l:c)}),t}function Ee({claude:e,codex:t,cursor:n,gemini:a,kimi:r,kiro:o,grok:s,antigravity:c,copilot:l,order:u,visibility:x,displayMode:p}){const F={claude:e,codex:t,cursor:n,gemini:a,kimi:r,kiro:o,grok:s,antigravity:c,copilot:l},j=h.useRef(null),v=Me(j),[O,K]=h.useState(null),T=Array.isArray(u)&&u.length>0?u:ye,N=p===m.REMAINING?m.REMAINING:m.USED,D=N===m.REMAINING?d("limits.settings.display_mode_remaining"):d("limits.settings.display_mode_used"),M=T.filter(w=>!x||x[w]!==!1).map(w=>ve(w,F[w],N,O===w,()=>K(A=>A===w?null:w))).filter(Boolean);return i.jsx(Y,{delay:.15,children:i.jsx(I,{children:i.jsxs("div",{ref:j,className:"flex flex-col gap-3",style:v>0?{"--tt-limits-label-w":`${v}px`}:void 0,children:[i.jsxs("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:[d("limits.panel.title"),d("limits.panel.mode_separator"),D]}),M.length>0?M:i.jsx(y,{children:d("limits.status.all_hidden")})]})})})}const Se=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");function De(){const e=W(),{data:t,error:n,isLoading:a}=H(e?{initialRefresh:!0,initialState:e,publishToPreloadCache:!0}:{initialRefresh:!0,publishToPreloadCache:!0}),r=X();return!Se&&!B()?i.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:i.jsx(q,{})}):i.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:i.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:i.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[i.jsxs("div",{className:"flex flex-row items-start justify-between gap-4 mb-8",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:d("nav.limits")}),i.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base",children:d("limits.page.subtitle")})]}),i.jsx(G,{to:"/settings","aria-label":d("limits.page.openSettings"),title:d("limits.page.openSettings"),className:"shrink-0 inline-flex h-9 w-9 items-center justify-center rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:i.jsx(U,{className:"h-4 w-4","aria-hidden":!0})})]}),a?i.jsx(ee,{}):i.jsxs(i.Fragment,{children:[n?i.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",children:d("shared.error.prefix",{error:n})}):null,i.jsx(Ee,{claude:t?.claude,codex:t?.codex,cursor:t?.cursor,gemini:t?.gemini,kimi:t?.kimi,kiro:t?.kiro,grok:t?.grok,antigravity:t?.antigravity,copilot:t?.copilot,order:r.order,visibility:r.visibility,displayMode:r.displayMode})]})]})})})}export{De as LimitsPage};
@@ -1 +0,0 @@
1
- import{G as u,r as a,a_ as M,a$ as j,b0 as G,b1 as J}from"./main-D2iJg7iA.js";const B=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity"],q={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY"};function se(e){return q[e]||null}function ae(e){switch(e){case"claude":return u("limits.provider.claude");case"codex":return u("limits.provider.codex");case"cursor":return u("limits.provider.cursor");case"gemini":return u("limits.provider.gemini");case"kimi":return u("limits.provider.kimi");case"kiro":return u("limits.provider.kiro");case"grok":return u("limits.provider.grok");case"copilot":return u("limits.provider.copilot");case"antigravity":return u("limits.provider.antigravity");default:return String(e||"")}}const y=B,A="tt.limits.providerOrder",E="tt.limits.providerVisibility",h="tt.limits.displayMode",O="tt.limits.updatedAt",V="limitsPreferences",F="limitsDisplayMode",v=Object.freeze({USED:"used",REMAINING:"remaining"}),g=new Set(Object.values(v)),L=new Set([A,E,h,O]);function I(){return[...y]}function b(){return Object.fromEntries(y.map(e=>[e,!0]))}function _(e){const r=[];if(Array.isArray(e))for(const n of e)y.includes(n)&&!r.includes(n)&&r.push(n);for(const n of y)r.includes(n)||r.push(n);return r}function N(e){const r=b();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const n of y)typeof e[n]=="boolean"&&(r[n]=e[n]);return r}function X(e){return g.has(e)?e:v.USED}function m(e){if(e!=null){if(typeof e=="number")return Number.isSafeInteger(e)?e:void 0;if(typeof e=="string"){const r=e.trim();if(r==="")return;const n=Number(r);return Number.isSafeInteger(n)?n:void 0}}}function w(e={}){const r=e&&typeof e=="object"?e:{};return{displayMode:X(r.displayMode),providerOrder:_(r.providerOrder),providerVisibility:N(r.providerVisibility),updatedAt:m(r.updatedAt)}}function $(){if(typeof window>"u")return I();try{const e=window.localStorage.getItem(A);return _(e?JSON.parse(e):void 0)}catch{return I()}}function H(){if(typeof window>"u")return b();try{const e=window.localStorage.getItem(E);return N(e?JSON.parse(e):void 0)}catch{return b()}}function Q(){if(typeof window>"u")return v.USED;try{const e=window.localStorage.getItem(h);return g.has(e)?e:v.USED}catch{return v.USED}}function W(){if(!(typeof window>"u"))try{return m(window.localStorage.getItem(O))}catch{return}}function Z(){if(typeof window>"u")return!1;try{for(const e of L)if(window.localStorage.getItem(e)!==null)return!0}catch{return!1}return!1}function S(){return w({displayMode:Q(),providerOrder:$(),providerVisibility:H(),updatedAt:W()})}function ee(e){if(typeof window>"u")return;const r=w(e);try{window.localStorage.setItem(A,JSON.stringify(r.providerOrder)),window.localStorage.setItem(E,JSON.stringify(r.providerVisibility)),window.localStorage.setItem(h,r.displayMode),r.updatedAt===void 0?window.localStorage.removeItem(O):window.localStorage.setItem(O,String(r.updatedAt))}catch(n){console.warn("[tokentracker] limits preferences localStorage write failed:",n)}}function re(e){const r=w(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},updatedAt:r.updatedAt??null}}function te(...e){let r;for(const s of e){const l=m(s);l!==void 0&&(r=r===void 0?l:Math.max(r,l))}const n=Date.now();return r!==void 0&&n<=r?r+1:n}function ie(e,r){return e.length===r.length&&e.every((n,s)=>n===r[s])}function ne(e,r){return y.every(n=>e[n]===r[n])}function R(e,r){return e.displayMode===r.displayMode&&ie(e.providerOrder,r.providerOrder)&&ne(e.providerVisibility,r.providerVisibility)}function oe(e,r){return R(e,r)&&m(e.updatedAt)===m(r.updatedAt)}function k(e,r){const n=m(e.updatedAt),s=m(r.updatedAt);return n!==void 0&&(s===void 0||n>s)}function ce(){const[e,r]=a.useState(S),n=a.useRef(e),s=a.useCallback((o,t={})=>{const i=w(o);return n.current=i,r(i),t.writeLocal&&ee(i),i},[]),l=a.useCallback(o=>{M()&&j(V,re(o))},[]),c=a.useCallback(o=>{const t=S(),i=k(t,n.current)?s(t):n.current,d=w(o(i));if(R(i,d))return;const f=te(t.updatedAt,i.updatedAt),p=s({...d,updatedAt:f},{writeLocal:!0});l(p)},[s,l]),P=a.useCallback(o=>{g.has(o)&&c(t=>({...t,displayMode:o}))},[c]),D=a.useCallback(o=>{if(!g.has(o))return;const t=S();if(t.updatedAt!==void 0){s(t);return}s({...t,displayMode:o,updatedAt:void 0},{writeLocal:!0})},[s]);a.useEffect(()=>{if(!M())return;const o=G(t=>{const i=t?.[V];if(i&&typeof i=="object"){const d=w(i);if(!Z()){s(d,{writeLocal:!0});return}const f=S();if(k(d,f))s(d,{writeLocal:!0});else{const p=s(f);oe(d,f)||l(p)}return}D(t?.[F])});return J(),o},[D,s,l]),a.useEffect(()=>{if(typeof window>"u")return;const o=t=>{(t.key===null||L.has(t.key))&&s(S())};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[s]);const x=a.useCallback(o=>{y.includes(o)&&c(t=>({...t,providerVisibility:{...t.providerVisibility,[o]:!t.providerVisibility[o]}}))},[c]),C=a.useCallback(o=>{c(t=>{const i=t.providerOrder.indexOf(o);if(i<=0)return t;const d=[...t.providerOrder];return[d[i-1],d[i]]=[d[i],d[i-1]],{...t,providerOrder:d}})},[c]),U=a.useCallback(o=>{c(t=>{const i=t.providerOrder.indexOf(o);if(i<0||i>=t.providerOrder.length-1)return t;const d=[...t.providerOrder];return[d[i],d[i+1]]=[d[i+1],d[i]],{...t,providerOrder:d}})},[c]),T=a.useCallback((o,t)=>{o!==t&&c(i=>{const d=i.providerOrder.indexOf(o),f=i.providerOrder.indexOf(t);if(d<0||f<0)return i;const p=[...i.providerOrder],[z]=p.splice(d,1);return p.splice(f,0,z),{...i,providerOrder:p}})},[c]),Y=a.useCallback(()=>{c(()=>({displayMode:v.USED,providerOrder:I(),providerVisibility:b()}))},[c]),K=a.useMemo(()=>e.providerOrder.filter(o=>e.providerVisibility[o]!==!1),[e.providerOrder,e.providerVisibility]);return{order:e.providerOrder,visibility:e.providerVisibility,displayMode:e.displayMode,setDisplayMode:P,visibleOrdered:K,toggle:x,moveUp:C,moveDown:U,moveToward:T,reset:Y}}export{v as L,B as a,se as b,ae as l,ce as u};