tokentracker-cli 0.84.8 → 0.85.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 (105) hide show
  1. package/dashboard/dist/assets/{AchievementBadge-DAAenS6A.js → AchievementBadge-DEqbHlmn.js} +1 -1
  2. package/dashboard/dist/assets/{AchievementsPage-DJ9GMKxL.js → AchievementsPage-BOaEu1AQ.js} +2 -2
  3. package/dashboard/dist/assets/{AchievementsSection-DtpLrh2Q.js → AchievementsSection-C370ngO3.js} +1 -1
  4. package/dashboard/dist/assets/{BadgeDetailModal-CkE1DwdN.js → BadgeDetailModal-D7Wkef0K.js} +1 -1
  5. package/dashboard/dist/assets/{Card-Cs2vVMHG.js → Card-mDEVjNdM.js} +1 -1
  6. package/dashboard/dist/assets/{ClawdAnimated-BCSNeob2.js → ClawdAnimated-DdsX-z8n.js} +1 -1
  7. package/dashboard/dist/assets/{CommandPalette-CFDTjp76.js → CommandPalette-DhxRIuHC.js} +1 -1
  8. package/dashboard/dist/assets/{CommunityStatsModal-D2oJpI9i.js → CommunityStatsModal-CG-9JPS6.js} +1 -1
  9. package/dashboard/dist/assets/{ConfirmModal-D0a_xdwF.js → ConfirmModal-COhxErLm.js} +1 -1
  10. package/dashboard/dist/assets/DashboardPage-tX0DKgFE.js +1 -0
  11. package/dashboard/dist/assets/{DevicePage-c9Fk13gJ.js → DevicePage-BsSeHx84.js} +1 -1
  12. package/dashboard/dist/assets/{DialogClose-jsfDvF2n.js → DialogClose-eyOW2cbx.js} +1 -1
  13. package/dashboard/dist/assets/DialogDescription-BwtE4lKl.js +1 -0
  14. package/dashboard/dist/assets/{DialogTitle-Dt835L7T.js → DialogTitle-H8sGiH7c.js} +1 -1
  15. package/dashboard/dist/assets/{FadeIn-DJssGrj8.js → FadeIn-pq2ja50M.js} +1 -1
  16. package/dashboard/dist/assets/{HeaderGithubStar-B9MwwA-P.js → HeaderGithubStar-DWgcpDHr.js} +1 -1
  17. package/dashboard/dist/assets/{HoverTooltip-DPLMJkai.js → HoverTooltip-CcJ_VR65.js} +1 -1
  18. package/dashboard/dist/assets/{IpCheckPage-BXKjxEHe.js → IpCheckPage-CNUN346Q.js} +1 -1
  19. package/dashboard/dist/assets/{LandingPage-BJNMQTec.js → LandingPage-yaoRGsNI.js} +2 -2
  20. package/dashboard/dist/assets/{LeaderboardAvatar-BNwbnOa3.js → LeaderboardAvatar-Ddai4I12.js} +1 -1
  21. package/dashboard/dist/assets/{LeaderboardPage-BOxejyMy.js → LeaderboardPage-Bajkxf63.js} +2 -2
  22. package/dashboard/dist/assets/{LeaderboardProfileModal-BEqUZCOD.js → LeaderboardProfileModal-BGYKDgIi.js} +3 -3
  23. package/dashboard/dist/assets/{LeaderboardProfilePage-CUDV5iyh.js → LeaderboardProfilePage-Ck5vPaeN.js} +1 -1
  24. package/dashboard/dist/assets/LimitsPage-Bqobtsw2.js +4 -0
  25. package/dashboard/dist/assets/{LocalOnlyNotice-B3BSeCHd.js → LocalOnlyNotice-e9KSE3wj.js} +1 -1
  26. package/dashboard/dist/assets/{LoginCard-2mAb696j.js → LoginCard-BhTSm2tb.js} +1 -1
  27. package/dashboard/dist/assets/{LoginModal-cacKhc6U.js → LoginModal-CRwuThde.js} +1 -1
  28. package/dashboard/dist/assets/{LoginPage-rnBlie8p.js → LoginPage-j1i74lcc.js} +1 -1
  29. package/dashboard/dist/assets/{PetPage-D3DhuS6O.js → PetPage-r62ViU1X.js} +1 -1
  30. package/dashboard/dist/assets/{PopoverPopup-CxATX7M9.js → PopoverPopup-DopNTyD4.js} +1 -1
  31. package/dashboard/dist/assets/{ProviderIcon-B5b9LkmM.js → ProviderIcon-c1LkPhYM.js} +1 -1
  32. package/dashboard/dist/assets/{ResetPasswordPage-BGKmQ_JW.js → ResetPasswordPage-DJdDNvtq.js} +1 -1
  33. package/dashboard/dist/assets/{SegmentedControl-BMeYCm2b.js → SegmentedControl-DhWVOTPN.js} +1 -1
  34. package/dashboard/dist/assets/{Select-CYHXq8im.js → Select-DeUmTmsJ.js} +1 -1
  35. package/dashboard/dist/assets/{SelectItemText-DvI4i06h.js → SelectItemText-pX0B5f7h.js} +1 -1
  36. package/dashboard/dist/assets/{ServiceStatusPage-dv26-VvI.js → ServiceStatusPage-ejIPz6oF.js} +1 -1
  37. package/dashboard/dist/assets/{SessionsPage-DBQruqkO.js → SessionsPage-WEbn90GW.js} +2 -2
  38. package/dashboard/dist/assets/{SettingsPage-BWRbQ3Iq.js → SettingsPage-B8t5gCeI.js} +1 -1
  39. package/dashboard/dist/assets/{SkillsPage-BonhKgAt.js → SkillsPage-BWMlzeAp.js} +1 -1
  40. package/dashboard/dist/assets/{TokenGalaxy-BBUD1kpU.js → TokenGalaxy-DIBRBvMj.js} +1 -1
  41. package/dashboard/dist/assets/{ToolbarRootContext-DPMm8uYz.js → ToolbarRootContext-C6KxLvnI.js} +1 -1
  42. package/dashboard/dist/assets/{TrendMonitor-CZVE6gID.js → TrendMonitor-BaMNh67w.js} +1 -1
  43. package/dashboard/dist/assets/{WidgetsPage-Bz9cieeZ.js → WidgetsPage-DDsy4M3x.js} +1 -1
  44. package/dashboard/dist/assets/{WrappedPage-CruMolZd.js → WrappedPage-CiNnUFRI.js} +1 -1
  45. package/dashboard/dist/assets/{__vite-browser-external-C3VH6nS4.js → __vite-browser-external-CM-H8-LW.js} +24 -16
  46. package/dashboard/dist/assets/{agent-logos-HIeYwIqN.js → agent-logos-BjVa6oe7.js} +1 -1
  47. package/dashboard/dist/assets/{arrow-up-right-n7Bi4Tvd.js → arrow-up-right-CCum1mqX.js} +1 -1
  48. package/dashboard/dist/assets/{check-C5Q44G5k.js → check-ySRQc1YP.js} +1 -1
  49. package/dashboard/dist/assets/{chevron-right-BsnptUU0.js → chevron-right-5vFloHew.js} +1 -1
  50. package/dashboard/dist/assets/{copy-BGuL9uFa.js → copy-mhfKVMKo.js} +1 -1
  51. package/dashboard/dist/assets/{download-BljgPwR2.js → download-GdrXglSx.js} +1 -1
  52. package/dashboard/dist/assets/{external-link-B4Oz8hUe.js → external-link-KGFaKc8s.js} +1 -1
  53. package/dashboard/dist/assets/{flame-ChLG_NZE.js → flame-BmNtNoS1.js} +1 -1
  54. package/dashboard/dist/assets/{format-tokens-DjuNk13Z.js → format-tokens-CCpCNw3d.js} +1 -1
  55. package/dashboard/dist/assets/{icons-CkO42M-u.js → icons-XLKZavTf.js} +1 -1
  56. package/dashboard/dist/assets/{index-CEsvYBWY.js → index-CsywTeCQ.js} +1 -1
  57. package/dashboard/dist/assets/{index-CGxawuWx.js → index-IKpmeZte.js} +1 -1
  58. package/dashboard/dist/assets/{index-D87oE_rV.js → index-_xU5U5Ct.js} +1 -1
  59. package/dashboard/dist/assets/{info-et8xtJ4v.js → info-DUV5UpmT.js} +1 -1
  60. package/dashboard/dist/assets/{limits-providers-vO_86yRy.js → limits-providers-DFkCZCZj.js} +1 -1
  61. package/dashboard/dist/assets/{link-2-Dge2rBkr.js → link-2-D7c64yLY.js} +1 -1
  62. package/dashboard/dist/assets/{loader-circle-Cs3wpqJe.js → loader-circle-sMONRK2M.js} +1 -1
  63. package/dashboard/dist/assets/{maximize-2-zn71uZX3.js → maximize-2-CVWRgrk9.js} +1 -1
  64. package/dashboard/dist/assets/{provider-display-CTt6mzLe.js → provider-display-DSKqVjgm.js} +1 -1
  65. package/dashboard/dist/assets/{react-BbHDQe6Q.js → react-c1q4mGkS.js} +1 -1
  66. package/dashboard/dist/assets/{search-3CMhatWb.js → search-CwD3s-_C.js} +1 -1
  67. package/dashboard/dist/assets/{skills-api-Cm1aiqWL.js → skills-api-BRXj8kjT.js} +1 -1
  68. package/dashboard/dist/assets/{store-DclXV77t.js → store-lqTW2gfK.js} +1 -1
  69. package/dashboard/dist/assets/{terminal-BC7uFcA7.js → terminal-DU1_KbKo.js} +1 -1
  70. package/dashboard/dist/assets/{trash-2-BT8V531F.js → trash-2-B8Y5Xc-K.js} +1 -1
  71. package/dashboard/dist/assets/{use-community-stats-DJr59SGu.js → use-community-stats-DYwwimvp.js} +1 -1
  72. package/dashboard/dist/assets/{use-limits-display-prefs-DU8OOFVb.js → use-limits-display-prefs-Bst6ybK3.js} +1 -1
  73. package/dashboard/dist/assets/{use-native-settings-BvSwI4BL.js → use-native-settings-Cqle4lgw.js} +1 -1
  74. package/dashboard/dist/assets/{use-ordered-list-Cq5AyV2x.js → use-ordered-list-Dtze0ahb.js} +1 -1
  75. package/dashboard/dist/assets/use-reduced-motion-CbZDR54N.js +1 -0
  76. package/dashboard/dist/assets/{use-session-efficiency-pref-WS8NhXuW.js → use-session-efficiency-pref-gwbDMHXa.js} +1 -1
  77. package/dashboard/dist/assets/{use-transform-CLYsi8xc.js → use-transform-CU0yxXpX.js} +1 -1
  78. package/dashboard/dist/assets/use-usage-limits-5y1I1T5_.js +1 -0
  79. package/dashboard/dist/assets/{useCurrency-D0GtEoJD.js → useCurrency-BfVNrywe.js} +1 -1
  80. package/dashboard/dist/assets/{useScrollLock-TIUBSeIM.js → useScrollLock-CF1m7AMJ.js} +1 -1
  81. package/dashboard/dist/assets/{useTokenFormat-B0TBL9La.js → useTokenFormat-DiRwVvRr.js} +1 -1
  82. package/dashboard/dist/assets/{zap-D89769CL.js → zap-BZtlWtuN.js} +1 -1
  83. package/dashboard/dist/index.html +1 -1
  84. package/dashboard/dist/ip-check.html +1 -1
  85. package/dashboard/dist/leaderboard.html +1 -1
  86. package/dashboard/dist/share.html +1 -1
  87. package/package.json +1 -1
  88. package/src/commands/status.js +114 -9
  89. package/src/commands/sync.js +151 -46
  90. package/src/lib/claude-categorizer.js +36 -9
  91. package/src/lib/diagnostics.js +86 -13
  92. package/src/lib/doctor.js +17 -0
  93. package/src/lib/grok-context-breakdown.js +794 -0
  94. package/src/lib/install-resolver.js +10 -2
  95. package/src/lib/local-api.js +21 -3
  96. package/src/lib/multi-install-parser.js +9 -1
  97. package/src/lib/pricing/seed-snapshot.json +1 -1
  98. package/src/lib/rollout.js +480 -53
  99. package/src/lib/session-analytics.js +332 -9
  100. package/src/lib/usage-limits.js +47 -2
  101. package/dashboard/dist/assets/DashboardPage-CMCqvpkA.js +0 -1
  102. package/dashboard/dist/assets/DialogDescription-Dwxj5h5w.js +0 -1
  103. package/dashboard/dist/assets/LimitsPage-ejlJN1vi.js +0 -4
  104. package/dashboard/dist/assets/use-reduced-motion-D1_q3aRK.js +0 -1
  105. package/dashboard/dist/assets/use-usage-limits-CGoQQDG-.js +0 -1
@@ -1,4 +0,0 @@
1
- import{m as H,j as t,e as $,c as r,k as B,r as h,ac as te,d as ae,K as ie,L as re,ad as ne,q as oe,ae as se}from"./__vite-browser-external-C3VH6nS4.js";import{m as A}from"./react-BbHDQe6Q.js";import{P as W,c as le,r as N,a as de,u as ce,b as ue,s as me}from"./use-usage-limits-CGoQQDG-.js";import{L as m,u as xe}from"./use-limits-display-prefs-DU8OOFVb.js";import{C as U}from"./Card-Cs2vVMHG.js";import{F as pe}from"./FadeIn-DJssGrj8.js";import{L as ge,l as w,a as fe}from"./limits-providers-vO_86yRy.js";import{P as he}from"./ProviderIcon-B5b9LkmM.js";import{H as be}from"./HoverTooltip-DPLMJkai.js";import{L as ye}from"./LocalOnlyNotice-B3BSeCHd.js";import{u as ve}from"./use-reduced-motion-D1_q3aRK.js";import"./arrow-up-right-n7Bi4Tvd.js";import"./download-BljgPwR2.js";const ke=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],je=H("bell-off",ke);const Ne=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],_e=H("bell",Ne),we=[3,2,3,3,2,2,3];function f({className:e}){return t.jsx("div",{className:$("rounded bg-oai-gray-200/70 dark:bg-oai-gray-800/70 animate-pulse",e)})}function Me(){return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(f,{className:"h-3 w-12 shrink-0"}),t.jsx(f,{className:"flex-1 h-1.5 rounded-full min-w-0"}),t.jsx(f,{className:"h-3 w-[30px] shrink-0"}),t.jsx(f,{className:"h-3 w-6 shrink-0"})]})}function Ee({bars:e,index:a}){const i=a%3===0?"w-24":a%3===1?"w-20":"w-[4.5rem]";return t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(f,{className:"h-[14px] w-[14px] rounded shrink-0"}),t.jsx(f,{className:$("h-4",i)})]}),Array.from({length:e},(o,n)=>t.jsx(Me,{},n))]})}function Ie(){return t.jsx(U,{children:t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx(f,{className:"h-3.5 w-28"}),we.map((e,a)=>t.jsx(Ee,{bars:e,index:a},a))]})})}const L=100;function D(e){const a=Date.parse(e);return Number.isFinite(a)?a:null}function Le(e){return Math.max(0,Math.min(L,Math.round(e)))}function Pe(e){return new Intl.DateTimeFormat(B(),{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(new Date(e))}function Oe(e,a,i){if(e==null||e>=a)return L;const o=a-e,n=a-i;return Le(n/o*L)}function Se(e){const a=e.available_count;return a===null?null:Number.isInteger(a)&&a>=0?a:void 0}function Re(e,{now:a}={}){if(!e||typeof e!="object")return null;const i=Se(e);if(i===void 0)return null;const o=Array.isArray(e.credits)?e.credits:[],n=a instanceof Date?a.getTime():Number(a??Date.now()),s=[];for(const c of o){const d=D(c?.expires_at);if(d==null)continue;const l=s.length+1;s.push({key:`reset-${l}`,label:r("limits.codex_reset_bank.row_label",{index:l}),expiresAt:Pe(d),expiresMs:d,percent:Oe(D(c?.granted_at),d,n)})}return i===0?null:s.length>0?{kind:"rows",availableCount:i??s.length,rows:s}:i>0?{kind:"count_only",availableCount:i,rows:[]}:null}const Ce="shrink-0 text-oai-black dark:text-oai-white";function Te(e){const a=N(e);if(!Number.isFinite(a))return null;const i=a-Date.now();if(i<=0)return r("shared.time.now");const o=Math.floor(i/6e4);if(o<60)return`${o}m`;const n=Math.floor(o/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function Ae(e,a){const i=a===m.REMAINING?100-e:e;return i>=90?"bg-red-500":i>=70?"bg-amber-500":"bg-emerald-500"}function j(e,a="used_percent"){return e?a==="utilization"?e.utilization:e.used_percent:null}function _(e,a="reset_at"){return e?a==="resets_at"?e.resets_at:e.reset_at:null}function M(e){const a=Math.max(0,Math.min(100,Number(e)||0)),i=Math.round(a);return a>0&&i===0?r("limits.bar.sub_one_percent"):String(i)}function E(e,{useGrouping:a=!0}={}){const i=Number(e);return Number.isFinite(i)?new Intl.NumberFormat(void 0,{minimumFractionDigits:0,maximumFractionDigits:i>=100?0:2,useGrouping:a}).format(i):null}function De(e){if(!e||typeof e!="object"||!(Number(e.limit_credits)>0))return null;const a={useGrouping:e.unit!=="calls"},i=E(e.used_credits,a),o=E(e.limit_credits,a),n=E(e.remaining_credits,a);if(!i||!o||!n)return null;const s=e.unit==="calls"?"limits.qoder_calls.detail":"limits.codex_credits.detail";return r(s,{used:i,limit:o,remaining:n})}function Fe(e,a){return le({usedPercent:j(e.window,e.pctField),windowSeconds:de(e,e.window),resetMs:N(_(e.window,e.resetField)),mode:a})}function q(e){return Number.isFinite(e)?new Intl.DateTimeFormat(B(),{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(new Date(e)):null}function Ge(e,a,i){const o=[z(e,a,i)],n=N(_(e.window,e.resetField)),s=q(n);s&&o.push(r(e.timeKind==="expiry"?"limits.hover.expires_at":"limits.hover.resets_at",{time:s}));const c=De(e.window);return c&&o.push(c),o.join(`
2
- `)}const K=be;function He({label:e,pct:a,reset:i,mode:o=m.USED,pacePercent:n=null,paceOver:s=!1,title:c=null}){const d=Math.max(0,Math.min(100,Number(a)||0)),l=o===m.REMAINING?100-d:d,u=Math.round(l),x=l>0&&u===0?Math.max(l,.35):l;let v=String(u);l>0&&u===0&&(v=r("limits.bar.sub_one_percent"));const p=n==null?null:Math.max(0,Math.min(100,n));return t.jsxs("div",{className:"group relative flex items-center gap-2",children:[t.jsx(K,{text:c}),t.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}),t.jsxs("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:[t.jsx("div",{className:`${Ae(l,o)} rounded-full h-full transition-[width] duration-500 ease-out`,style:{width:`${x}%`,minWidth:l>0?"3px":0}}),p!=null&&t.jsxs(t.Fragment,{children:[t.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"}}),t.jsx("div",{className:`absolute top-0 h-full ${s?"bg-red-500":"bg-emerald-500"}`,style:{left:`calc(${p}% - 1px)`,width:"2px"}})]})]}),t.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:[v,"%"]}),i&&t.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-500 w-6 text-right shrink-0",children:i})]})}function z(e,a,i){const o=e.label??r(e.labelKey),n=i===m.REMAINING,s=l=>n?100-l:l;if(a.expectedPercent==null){const l=Math.max(0,Math.min(100,Number(j(e.window,e.pctField))||0)),u=M(s(l));return n?r("limits.explain.remaining",{label:o,used:u}):r("limits.explain.used",{label:o,used:u})}if(a.paceOver){if(a.runsOutEta)return r("limits.explain.ahead_eta",{label:o,eta:a.runsOutEta});const l=M(s(a.projectedEnd??100));return r(n?"limits.explain.ahead_pct_remaining":"limits.explain.ahead_pct",{label:o,pct:l})}const c=Math.max(0,Math.min(100,Number(j(e.window,e.pctField))||0)),d=M(s(a.projectedEnd??c));return r(n?"limits.explain.on_track_remaining":"limits.explain.on_track",{label:o,pct:d})}function $e({rows:e,mode:a}){if(e.length===0)return null;const i=a===m.REMAINING;return t.jsxs("div",{className:"mt-1 flex flex-col gap-1",children:[e.map(({spec:o,pace:n})=>{const s=q(N(_(o.window,o.resetField)));return t.jsxs("div",{className:"text-[11px] leading-snug text-oai-gray-600 dark:text-oai-gray-300",children:[z(o,n,a),s?t.jsxs("span",{className:"text-oai-gray-400 dark:text-oai-gray-500",children:[" · ",r(o.timeKind==="expiry"?"limits.hover.expires_at":"limits.hover.resets_at",{time:s})]}):null]},o.key)}),t.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:r(i?"limits.explain.body_remaining":"limits.explain.body")})]})}function k(e){if(!e)return null;const a=Date.now()-new Date(e).getTime();if(a<0)return null;const i=Math.floor(a/6e4);if(i<1)return r("shared.time.now");if(i<60)return r("shared.time.m_ago",{n:i});const o=Math.floor(i/60);if(o<24)return r("shared.time.h_ago",{n:o});const n=Math.floor(o/24);return r("shared.time.d_ago",{n})}const F={live:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-emerald-500",pulse:"bg-emerald-400"},stale:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-amber-500",pulse:"bg-amber-400"},cached:{surface:"bg-oai-gray-50 dark:bg-oai-gray-800 border-oai-gray-200/60 dark:border-oai-gray-700/60 text-oai-gray-500 dark:text-oai-gray-400",dot:"bg-amber-500",pulse:"bg-amber-400"}},Be={claude:"claude",codex:"codex"};function b({label:e,age:a=null,tone:i="live",tooltip:o=null}){const n=F[i]||F.live,s=i==="live";return t.jsxs("div",{className:"relative inline-flex items-center group cursor-help ml-1",onClick:c=>c.stopPropagation(),children:[t.jsxs("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[9px] font-semibold uppercase tracking-wider border leading-normal ${n.surface}`,children:[s?t.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[t.jsx("span",{className:`animate-ping absolute inline-flex h-full w-full rounded-full ${n.pulse} opacity-75`}),t.jsx("span",{className:`relative inline-flex rounded-full h-1.5 w-1.5 ${n.dot}`})]}):t.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${n.dot}`}),e,a?t.jsxs(t.Fragment,{children:[" · ",a]}):null]}),o?t.jsxs("span",{className:"pointer-events-none absolute left-1/2 bottom-full z-20 mb-2 -translate-x-1/2 w-48 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-1.5 text-[10px] font-normal text-white text-center opacity-0 scale-95 translate-y-1 group-hover:opacity-100 group-hover:scale-100 group-hover:translate-y-0 transition-all duration-200 cubic-bezier(0.16, 1, 0.3, 1) leading-normal shadow-lg origin-bottom border border-oai-gray-800 dark:border-oai-gray-700",children:[o,t.jsx("span",{className:"absolute left-1/2 top-full -translate-x-1/2 border-4 border-transparent border-t-oai-gray-900 dark:border-t-oai-gray-800"})]}):null]})}function P({name:e,providerId:a,children:i,expandable:o=!1,expanded:n=!1,onToggle:s,badge:c=null}){const d=fe(a),l=t.jsxs("div",{className:"flex items-center gap-1.5",children:[d?t.jsx(he,{provider:d,size:14,className:Ce}):null,t.jsx("span",{className:"text-sm font-medium text-oai-black dark:text-oai-white",children:e}),c]});return o?t.jsxs("div",{role:"button",tabIndex:0,"aria-expanded":n,onClick:s,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),s?.())},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:[l,i]}):t.jsxs("div",{className:"flex flex-col gap-1.5",children:[l,i]})}const We=ge;function y({children:e,tone:a="neutral"}){const i=a==="error"?"text-red-600 dark:text-red-400":"text-oai-gray-500 dark:text-oai-gray-400";return t.jsx("div",{className:`text-[11px] leading-snug ${i}`,children:e})}function Ue({rows:e,mode:a,extra:i=null}){const o=e.length===0&&!i;return t.jsxs(t.Fragment,{children:[e.map(({spec:n,pace:s})=>t.jsx(He,{label:n.label??r(n.labelKey),pct:j(n.window,n.pctField),reset:Te(_(n.window,n.resetField)),mode:a,pacePercent:s.pacePercent,paceOver:s.paceOver,title:Ge(n,s,a)},n.key)),o?t.jsx(y,{children:r("limits.status.no_data")}):null,i]})}function qe(e){if(!Number.isFinite(e.expiresMs))return null;const a=Math.floor((e.expiresMs-Date.now())/864e5);return a<0?null:a===0?r("limits.reset_bank.hover_detail_today",{date:e.expiresAt}):r("limits.reset_bank.hover_detail",{date:e.expiresAt,days:a})}function Ke({row:e}){const a=Math.max(0,Math.min(100,Number(e.percent)||0));return t.jsxs("div",{className:"group relative flex items-center gap-2","data-reset-bank-row":"",children:[t.jsx(K,{text:qe(e)}),t.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}),t.jsx("div",{className:"relative flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:t.jsx("div",{className:"bg-oai-gray-400 dark:bg-oai-gray-500 rounded-full h-full transition-[width] duration-500 ease-out",style:{width:`${a}%`,minWidth:a>0?"3px":0}})}),t.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 ze({model:e}){const a=e.kind==="count_only"?r("limits.codex_reset_bank.count_only",{count:e.availableCount}):null;return t.jsxs("div",{className:"mt-1 flex flex-col gap-1","data-reset-bank-section":e.kind,children:[t.jsx("div",{className:"text-[10.5px] font-medium uppercase tracking-wide text-oai-gray-400 dark:text-oai-gray-500",children:r("limits.codex_reset_bank.title")}),a?t.jsx("div",{className:"text-[11px] leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:a}):e.rows.map(i=>t.jsx(Ke,{row:i},i.key))]})}function Ve(e,a){if(e==="codex_meta"){const i=Re(a.reset_credits);return i?t.jsx(ze,{model:i}):null}return e==="kimi_parallel"&&a.parallel_limit?t.jsx(y,{children:r("limits.label.kimi_parallel",{count:a.parallel_limit})}):e==="copilot_otel"&&!a.otel_has_files&&!a.otel_enabled?t.jsx(Qe,{defaultDir:a.otel_default_dir}):null}function Xe(e,a,i,o,n,s,c=null){const d=W[e];if(!d)return null;const l=d.windows(a).filter(x=>x.window).map(x=>({spec:x,pace:Fe(x,o)})),u=Ve(d.extra,a);return t.jsxs(P,{name:i,providerId:e,expandable:l.length>0,expanded:n,onToggle:s,badge:c,children:[t.jsx(Ue,{mode:o,rows:l,extra:u}),n?t.jsx($e,{rows:l,mode:o}):null]},e)}function Ye(e,a,i,o,n){if(!W[e])return null;if(!a?.configured)return t.jsxs(P,{name:w(e),providerId:e,children:[t.jsx(y,{children:r("limits.status.not_connected")}),e==="opencodeGo"?t.jsx(G,{}):null]},e);if(a.error)return t.jsxs(P,{name:w(e),providerId:e,children:[t.jsx(y,{tone:"error",children:r("shared.error.prefix",{error:a.error})}),e==="opencodeGo"?t.jsx(G,{}):null]},e);const s=w(e),c=a.plan_label?`${s} ${a.plan_label}`:s;let d=null;if(e==="antigravity")if(a.cached){const u=k(a.cached_at);d=t.jsx(b,{label:r("limits.label.antigravity_cached"),age:u,tone:"cached",tooltip:r("limits.tooltip.antigravity_cached")})}else d=t.jsx(b,{label:r("limits.label.antigravity_live"),tone:"live",tooltip:r("limits.tooltip.antigravity_live")});if(e==="qoder"&&a.cached&&(d=t.jsx(b,{label:r("limits.label.antigravity_cached"),age:k(a.cached_at),tone:"cached",tooltip:r("limits.tooltip.qoder_cached")})),!d&&a.auth_action_required==="reauth"){const u=Be[e];d=t.jsx(b,{label:r("limits.reauth.badge"),age:k(a.cached_at),tone:"stale",tooltip:u?r("limits.reauth.tooltip",{command:u}):null})}const l=a.provenance;return l?.stale&&!d&&(d=t.jsx(b,{label:r("limits.provenance.stale"),age:k(l.captured_at),tone:"stale",tooltip:r("limits.provenance.tooltip",{source:l.source,confidence:l.confidence})})),Xe(e,a,c,i,o,n,d)}function Qe({defaultDir:e}){const[a,i]=h.useState(!1),n=["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(`
3
- `),s=async c=>{c.stopPropagation();try{await navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),1600)}catch{}};return t.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:[t.jsx("div",{className:"font-medium text-oai-gray-700 dark:text-oai-gray-200",children:r("limits.copilot.otelHint.title")}),t.jsx("div",{className:"mt-0.5 leading-snug",children:r("limits.copilot.otelHint.body")}),t.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:n}),t.jsx("button",{type:"button",onClick:s,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:a?r("limits.copilot.otelHint.copied"):r("limits.copilot.otelHint.copy")})]})}function I({n:e,children:a}){return t.jsxs("li",{className:"flex gap-2.5",children:[t.jsx("span",{className:"mt-[1px] flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-oai-brand/15 text-[9px] font-semibold text-oai-brand",children:e}),t.jsx("div",{className:"min-w-0 flex-1 leading-snug",children:a})]})}function Je(){return t.jsx("svg",{viewBox:"0 0 12 12","aria-hidden":"true",className:"h-2.5 w-2.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"M4.5 2.75h4.75V7.5M9.25 2.75 3 9"})})}function G(){const[e,a]=h.useState(!1),i=['export OPENCODE_GO_AUTH_COOKIE="..."','# Optional: export OPENCODE_GO_WORKSPACE_ID="wrk_..." (Only if auto-discovery fails)'].join(`
4
- `),o=async n=>{n.stopPropagation();try{await navigator.clipboard.writeText(i),a(!0),setTimeout(()=>a(!1),1600)}catch{}};return t.jsxs("div",{className:"mt-1.5 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700/60 bg-oai-gray-50/50 dark:bg-oai-gray-900/20 p-3 text-[11px] text-oai-gray-600 dark:text-oai-gray-300",children:[t.jsx("div",{className:"text-[12px] font-semibold text-oai-gray-800 dark:text-oai-gray-100",children:r("limits.opencodeGo.setupHint.title")}),t.jsx("div",{className:"mt-0.5 leading-snug text-oai-gray-500 dark:text-oai-gray-400",children:r("limits.opencodeGo.setupHint.subtitle")}),t.jsxs("ol",{className:"mt-2.5 space-y-2.5",children:[t.jsxs(I,{n:"1",children:[t.jsx("div",{children:r("limits.opencodeGo.setupHint.step1")}),t.jsxs("a",{href:"https://opencode.ai",target:"_blank",rel:"noreferrer",onClick:n=>n.stopPropagation(),className:"mt-1 inline-flex items-center gap-1 rounded-md bg-oai-brand/10 px-2 py-1 font-medium text-oai-brand hover:bg-oai-brand/15 transition-colors",children:[r("limits.opencodeGo.setupHint.cta"),t.jsx(Je,{})]})]}),t.jsxs(I,{n:"2",children:[t.jsx("div",{children:r("limits.opencodeGo.setupHint.step2")}),t.jsxs("ul",{className:"mt-1 space-y-0.5 text-oai-gray-500 dark:text-oai-gray-400",children:[t.jsx("li",{children:r("limits.opencodeGo.setupHint.step2_workspace")}),t.jsx("li",{children:r("limits.opencodeGo.setupHint.step2_cookie")})]})]}),t.jsxs(I,{n:"3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:r("limits.opencodeGo.setupHint.step3")}),t.jsx("button",{type:"button",onClick:o,className:"shrink-0 rounded-md border border-oai-gray-300 dark:border-oai-gray-700 px-2 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:e?r("limits.opencodeGo.setupHint.copied"):r("limits.opencodeGo.setupHint.copy")})]}),t.jsx("pre",{className:"mt-1.5 overflow-x-auto rounded-md bg-oai-gray-100 dark:bg-oai-gray-900/60 px-2 py-1.5 font-mono text-[10.5px] leading-relaxed whitespace-pre",children:i}),t.jsx("div",{className:"mt-1 text-[10px] text-oai-gray-400 dark:text-oai-gray-500",children:r("limits.opencodeGo.setupHint.note_app")})]})]})]})}function Ze(e){const[a,i]=h.useState(0);return h.useLayoutEffect(()=>{const o=e.current;if(!o)return;const n=o.querySelectorAll("[data-limit-label]");let s=0,c=null;if(n.length>0)try{c=document.createElement("canvas").getContext("2d")}catch{c=null}if(c){const l=window.getComputedStyle(n[0]);c.font=`${l.fontStyle} ${l.fontWeight} ${l.fontSize} ${l.fontFamily}`;for(const u of n)s=Math.max(s,c.measureText(u.textContent).width)}const d=Math.ceil(s);i(l=>l===d?l:d)}),a}function et({claude:e,codex:a,cursor:i,gemini:o,kimi:n,kiro:s,grok:c,antigravity:d,copilot:l,zcode:u,opencodeGo:x,qoder:v,order:p,visibility:O,displayMode:V}){const X={claude:e,codex:a,cursor:i,gemini:o,kimi:n,kiro:s,grok:c,antigravity:d,copilot:l,zcode:u,opencodeGo:x,qoder:v},S=h.useRef(null),R=Ze(S),[Y,Q]=h.useState(null),J=Array.isArray(p)&&p.length>0?p:We,C=V===m.REMAINING?m.REMAINING:m.USED,Z=C===m.REMAINING?r("limits.settings.display_mode_remaining"):r("limits.settings.display_mode_used"),T=J.filter(g=>!O||O[g]!==!1).map(g=>Ye(g,X[g],C,Y===g,()=>Q(ee=>ee===g?null:g))).filter(Boolean);return t.jsx(pe,{delay:.15,children:t.jsx(U,{children:t.jsxs("div",{ref:S,className:"flex flex-col gap-3",style:R>0?{"--tt-limits-label-w":`${R}px`}:void 0,children:[t.jsxs("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:[r("limits.panel.title"),r("limits.panel.mode_separator"),Z]}),T.length>0?T:t.jsx(y,{children:r("limits.status.all_hidden")})]})})})}const tt=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),at="x-apple.systempreferences:com.apple.preference.notifications";function it(){const e=ve(),a=oe(),i=r("limits.alert.blocked"),o=a?A.button:A.div;return t.jsxs(o,{type:a?"button":void 0,onClick:a?()=>se({type:"action",name:"openURL",value:at}):void 0,initial:e?!1:{opacity:0,x:14,scale:.9},animate:{opacity:1,x:0,scale:1},transition:{type:"spring",stiffness:320,damping:18},title:i,className:`relative hidden sm:inline-flex min-w-0 max-w-[360px] items-center gap-1.5 rounded-full border border-amber-300/70 bg-amber-50 px-3 py-1.5 text-xs text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-300 ${a?"cursor-pointer transition-colors hover:bg-amber-100 dark:hover:bg-amber-500/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-500/60":""}`,children:[t.jsxs("span",{className:"relative flex h-1.5 w-1.5 shrink-0",children:[t.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-amber-400 opacity-75"}),t.jsx("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-amber-500"})]}),t.jsx("span",{className:"truncate",children:i}),t.jsx("span",{"aria-hidden":!0,className:"absolute left-full top-1/2 -translate-y-1/2 border-[5px] border-transparent border-l-amber-300/80 dark:border-l-amber-500/40"})]})}function ht(){const e=te(),{data:a,error:i,isLoading:o}=ce(e?{initialRefresh:!0,initialState:e,publishToPreloadCache:!0}:{initialRefresh:!0,publishToPreloadCache:!0}),n=xe(),s=ue();return ae.useEffect(()=>{s.enabled&&a&&me(a)},[s.enabled,a]),!tt&&!ie()?t.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:t.jsx(ye,{})}):t.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:t.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:t.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[t.jsxs("div",{className:"flex flex-row items-start justify-between gap-4 mb-8",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:r("nav.limits")}),t.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base",children:r("limits.page.subtitle")})]}),t.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.enabled&&s.permissionBlocked?t.jsx(it,{}):null,t.jsx("button",{type:"button",onClick:()=>{s.setEnabled(!s.enabled)},"aria-label":s.enabled?r("limits.alert.disable"):r("limits.alert.enable"),title:s.enabled?r("limits.alert.disable"):r("limits.alert.enable"),className:`inline-flex h-9 w-9 items-center justify-center rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 ${s.enabled&&s.permissionBlocked?"text-amber-600 dark:text-amber-400":"text-oai-gray-600 dark:text-oai-gray-400 hover:text-oai-black dark:hover:text-white"}`,children:s.enabled?t.jsx(_e,{className:"h-4 w-4","aria-hidden":!0}):t.jsx(je,{className:"h-4 w-4","aria-hidden":!0})}),t.jsx(re,{to:"/settings?section=limits","aria-label":r("limits.page.openSettings"),title:r("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:t.jsx(ne,{className:"h-4 w-4","aria-hidden":!0})})]})]}),o?t.jsx(Ie,{}):t.jsxs(t.Fragment,{children:[i?t.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",children:r("shared.error.prefix",{error:i})}):null,t.jsx(et,{claude:a?.claude,codex:a?.codex,cursor:a?.cursor,gemini:a?.gemini,kimi:a?.kimi,kiro:a?.kiro,grok:a?.grok,antigravity:a?.antigravity,copilot:a?.copilot,zcode:a?.zcode,opencodeGo:a?.opencodeGo,qoder:a?.qoder,order:n.order,visibility:n.visibility,displayMode:n.displayMode})]})]})})})}export{ht as LimitsPage};
@@ -1 +0,0 @@
1
- import{r as o}from"./__vite-browser-external-C3VH6nS4.js";import{h as r,i as t,p as s}from"./react-BbHDQe6Q.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
@@ -1 +0,0 @@
1
- import{q as _,ae as K,r as w,c as g,af as F,ag as M,ah as b}from"./__vite-browser-external-C3VH6nS4.js";import{l as x}from"./limits-providers-vO_86yRy.js";const S="native:notificationPermission";let E=null;function N(){return typeof window<"u"&&!!window.chrome?.webview}function v(){return _()?E||"unknown":N()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function L(e){if(typeof window>"u")return()=>{};const i=t=>{const a=t?.detail?.status;typeof a=="string"&&(E=a),e(v())};return window.addEventListener(S,i),e(v()),_()&&K({type:"getNotificationStatus"}),()=>window.removeEventListener(S,i)}async function I(){if(_()){K({type:"requestNotificationPermission"});return}N()||typeof Notification<"u"&&Notification.permission==="default"&&await Notification.requestPermission().catch(()=>"denied")}const p="tt.limitAlerts.enabled";function O(){try{return window.localStorage.getItem(p)==="1"}catch{return!1}}function U(){const[e,i]=w.useState(O),[t,a]=w.useState("unknown");w.useEffect(()=>L(a),[]);const y=w.useCallback(async n=>{const l=!!n;l&&await I();try{window.localStorage.setItem(p,l?"1":"0")}catch{}i(l)},[]);return{enabled:e,setEnabled:y,permissionBlocked:t==="denied"}}function A(e,i){if(!(e>0))return null;const t=(e-i)/e;return Number.isFinite(t)?Math.min(Math.max(t,0),1):null}function z(e,i,t=.03){return e>i+t}function D(e){const i=Math.max(0,Math.floor(e)),t=Math.floor(i/3600);return t>24?`${Math.floor(t/24)}d`:t>0?`${t}h`:`${Math.floor(i/60)}m`}function j(e,i){if(typeof e.windowSeconds=="number")return e.windowSeconds;if(e.windowSecondsField&&i){const t=i[e.windowSecondsField];return typeof t=="number"&&t>0?t:null}return null}function R(e){return e==null?NaN:typeof e=="number"?e*1e3:Date.parse(e)}function C({usedPercent:e,windowSeconds:i,resetMs:t,mode:a,now:y=Date.now()}){const n=Math.min(Math.max(Number(e)||0,0),100)/100,l={pacePercent:null,paceOver:!1,expectedPercent:null,runsOutEta:null,projectedEnd:null};if(!(i>0)||!Number.isFinite(t))return l;const r=Math.max(0,(t-y)/1e3),s=A(i,r);if(s==null)return l;if(l.expectedPercent=Math.round(s*100),l.paceOver=z(n,s),n>=.05){const u=a==="remaining"?1-s:s;l.pacePercent=u*100}if(s>.02&&n>0){const u=i*s,c=n/u,m=n/s;m>=1&&c>0?l.runsOutEta=D((1-n)/c):l.projectedEnd=Math.round(Math.min(m,1)*100)}return l}const T={claude:{windows(e){const i=Array.isArray(e.weekly_scoped)?e.weekly_scoped.map(t=>({key:`scoped-${t.label}`,label:t.label,window:t,pctField:"utilization",resetField:"resets_at",windowSeconds:604800})):[];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},...i]}},codex:{extra:"codex_meta",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:"credits",labelKey:"limits.label.codex_credits",window:e.credit_window},{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){const i=typeof e.period_type=="string"?e.period_type:null,t=i==="weekly"?"limits.label.grok_week":i==="daily"?"limits.label.grok_day":"limits.label.grok_month",a=i==="weekly"?7*86400:i==="daily"?86400:void 0;return[{key:i==="weekly"?"week":i==="daily"?"day":"month",labelKey:t,window:e.primary_window,windowSeconds:a},{key:"ondemand",labelKey:"limits.label.grok_ondemand",window:e.secondary_window}]}},antigravity:{windows(e){return[{key:"claude-weekly",labelKey:"limits.label.antigravity_claude_weekly",window:e.primary_window},{key:"claude-5h",labelKey:"limits.label.antigravity_claude_5h",window:e.secondary_window},{key:"gemini-weekly",labelKey:"limits.label.antigravity_gemini_weekly",window:e.tertiary_window},{key:"gemini-5h",labelKey:"limits.label.antigravity_gemini_5h",window:e.quaternary_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}]}},zcode:{windows(e){return e.plan_kind==="coding-plan"?[{key:"5h",labelKey:"limits.label.zcode_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.zcode_weekly",window:e.secondary_window},{key:"tools",labelKey:"limits.label.zcode_tools",window:e.tertiary_window}]:[{key:"glm52",labelKey:"limits.label.zcode_glm52",window:e.primary_window},{key:"glm5t",labelKey:"limits.label.zcode_glm5t",window:e.secondary_window}]}},opencodeGo:{windows(e){return[{key:"5h",labelKey:"limits.label.opencode_go_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.opencode_go_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.opencode_go_monthly",window:e.tertiary_window}]}},qoder:{windows(e){return[{key:"credits",labelKey:"limits.label.qoder_credits",window:e.primary_window},{key:"ultimate",labelKey:"limits.label.qoder_ultimate",window:e.secondary_window,timeKind:"expiry"}]}}},P="tt.limitAlerts.cycles.v1";function q(){try{return JSON.parse(window.localStorage.getItem(P)||"{}")}catch{return{}}}function $(e){try{window.localStorage.setItem(P,JSON.stringify(e))}catch{}}function B(e,{now:i=Date.now()}={}){const t=[],a=T;for(const[y,n]of Object.entries(e||{})){const l=a[y];if(!(!n?.configured||n.error||!l))for(const r of l.windows(n)){if(!r.window)continue;const s=Number(r.pctField==="utilization"?r.window.utilization:r.window.used_percent),u=r.resetField==="resets_at"?r.window.resets_at:r.window.reset_at,c=R(u),m=C({usedPercent:s,windowSeconds:j(r,r.window),resetMs:c,mode:"used",now:i});!m.runsOutEta||!m.paceOver||s<20||!(c>i)||t.push({id:`${y}:${r.key}:${c}`,providerId:y,windowKey:r.key,resetMs:c,usedPercent:s,runsOutEta:m.runsOutEta})}}return t}function V(e){const i=q(),t=B(e);for(const n of t){if(i[n.id])continue;const l=x(n.providerId),r=g("limits.alert.title",{provider:l}),s=g("limits.alert.body",{eta:n.runsOutEta,percent:Math.round(n.usedPercent)});let u=F({title:r,body:s,id:n.id});!u&&typeof Notification<"u"&&Notification.permission==="granted"&&(new Notification(r,{body:s,tag:n.id}),u=!0),u&&(i[n.id]=Date.now())}const a=Date.now()-864e5,y=Object.fromEntries(Object.entries(i).filter(([n,l])=>{const r=Number(n.split(":").at(-1));return Number.isFinite(r)?r>=a:Number(l)>=a}).slice(-100));return $(y),t.length}function W(e){const i=!!e?.initialState,[t,a]=w.useState(()=>i?e?.initialState?.data??null:null),[y,n]=w.useState(()=>i?e?.initialState?.error??null:null),[l,r]=w.useState(!i),s=!!e?.initialRefresh,u=!!e?.publishToPreloadCache;w.useEffect(()=>{if(!(!t||typeof window>"u"))try{window.localStorage.getItem(p)==="1"&&V(t)}catch{}},[t]);const c=w.useCallback((o,d)=>{!u||!o||typeof o!="object"||M(o,{source:d})},[u]),m=w.useCallback(async()=>{try{const o=await b({refresh:!0}),d=o&&typeof o=="object"?o:null;a(d),n(null),c(d,"manual-refresh")}catch(o){n(o?.message||String(o))}},[c]),k=w.useCallback(async()=>{try{const o=await b(),d=o&&typeof o=="object"?o:null;a(d),n(null),c(d,"page-load")}catch(o){n(o?.message||String(o))}},[c]);return w.useEffect(()=>{if(typeof window>"u"||typeof document>"u")return;const o=15e3;let d=Date.now();const f=()=>{if(document.visibilityState!=="visible")return;const h=Date.now();h-d<o||(d=h,k())};return window.addEventListener("focus",f),document.addEventListener("visibilitychange",f),()=>{window.removeEventListener("focus",f),document.removeEventListener("visibilitychange",f)}},[k]),w.useEffect(()=>{if(i&&!s)return;let o=!1;return(async()=>{try{const d=await b();if(o)return;const f=d&&typeof d=="object"?d:null;a(f),n(null),c(f,"page-load")}catch(d){if(o)return;n(d?.message||String(d))}finally{o||r(!1)}})(),()=>{o=!0}},[i,s,c]),{data:t,error:y,isLoading:l,refresh:m}}export{T as P,j as a,U as b,C as c,R as r,V as s,W as u};