tokentracker-cli 1.4.7 → 1.4.10

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 (154) hide show
  1. package/README.de.md +2 -2
  2. package/README.ja.md +2 -2
  3. package/README.ko.md +2 -2
  4. package/README.md +11 -3
  5. package/README.zh-CN.md +3 -3
  6. package/bin/tracker.js +6 -0
  7. package/dashboard/dist/assets/{AchievementBadge-DF8q1x6R.js → AchievementBadge-BTqlXUP1.js} +1 -1
  8. package/dashboard/dist/assets/{AchievementsPage-B8Dg5myo.js → AchievementsPage-DbKUhaY-.js} +2 -2
  9. package/dashboard/dist/assets/{AchievementsSection-oPPiyP3y.js → AchievementsSection-El1F-OC7.js} +1 -1
  10. package/dashboard/dist/assets/{BadgeDetailModal-PneMW4B4.js → BadgeDetailModal--8PySLzP.js} +1 -1
  11. package/dashboard/dist/assets/{BotAnimated-GOlSvEiz.js → BotAnimated-DBcOS4vh.js} +1 -1
  12. package/dashboard/dist/assets/{Card-BT5G0GE0.js → Card-CeGs8TaY.js} +1 -1
  13. package/dashboard/dist/assets/{CloudCheckoutPage-BNeL5Muo.js → CloudCheckoutPage-DCg3VVAi.js} +1 -1
  14. package/dashboard/dist/assets/CloudPage-CmeFDrmk.js +2 -0
  15. package/dashboard/dist/assets/{CommandPalette-CiMSYHNK.js → CommandPalette-CrSNoZW9.js} +1 -1
  16. package/dashboard/dist/assets/{CommunityStatsModal-fK3BE9CW.js → CommunityStatsModal-ynB4j0Qb.js} +1 -1
  17. package/dashboard/dist/assets/{ConfirmModal-CrUlEHyZ.js → ConfirmModal-DDTUf-My.js} +1 -1
  18. package/dashboard/dist/assets/{Controls-CbjSwq6k.js → Controls-DXsJjEU1.js} +1 -1
  19. package/dashboard/dist/assets/DashboardPage-fr4sgbLB.js +1 -0
  20. package/dashboard/dist/assets/{DateRangePopover-E-2Z6imh.js → DateRangePopover-gTiPISL_.js} +1 -1
  21. package/dashboard/dist/assets/DevicePage-DvHVjCCH.js +1 -0
  22. package/dashboard/dist/assets/{DialogClose-xJKE22Y6.js → DialogClose-CXwouQe4.js} +1 -1
  23. package/dashboard/dist/assets/DialogDescription-BzbzETUC.js +1 -0
  24. package/dashboard/dist/assets/{DialogTitle-f8vnnH7z.js → DialogTitle-Cd_k-Nyw.js} +1 -1
  25. package/dashboard/dist/assets/{ElectricLogo-Ci9WZfHK.js → ElectricLogo-C4vUNTCI.js} +1 -1
  26. package/dashboard/dist/assets/{FadeIn-BXqtyAmn.js → FadeIn-CGM5RBFy.js} +1 -1
  27. package/dashboard/dist/assets/{HeaderGithubStar-BV5SYJMi.js → HeaderGithubStar-el5-DhVb.js} +1 -1
  28. package/dashboard/dist/assets/{HoverTooltip-D3gpW3Jh.js → HoverTooltip-C7YaWwJx.js} +1 -1
  29. package/dashboard/dist/assets/{IpCheckPage-G7fIWXpL.js → IpCheckPage-EKhbH9hJ.js} +1 -1
  30. package/dashboard/dist/assets/LandingPage-DJYOv1AM.js +2 -0
  31. package/dashboard/dist/assets/{LeaderboardPage-D2_wXazL.js → LeaderboardPage-CwzJxA8p.js} +2 -2
  32. package/dashboard/dist/assets/{LeaderboardProBadge-3xJ-mH2v.js → LeaderboardProBadge-DYLp9pJY.js} +1 -1
  33. package/dashboard/dist/assets/{LeaderboardProfileModal-23pH6Ud7.js → LeaderboardProfileModal-DqD2h9dD.js} +3 -3
  34. package/dashboard/dist/assets/{LeaderboardProfilePage-DSezSR58.js → LeaderboardProfilePage-CarYvpYe.js} +1 -1
  35. package/dashboard/dist/assets/LimitsPage-4T0BpfYS.js +6 -0
  36. package/dashboard/dist/assets/{LocalOnlyNotice-Dsk-d0Hr.js → LocalOnlyNotice-CAR-mqy0.js} +1 -1
  37. package/dashboard/dist/assets/{LoginCard-C7dugIIn.js → LoginCard-Czq-UgAU.js} +1 -1
  38. package/dashboard/dist/assets/{LoginModal-B7RuLsTF.js → LoginModal-D4uxfzZb.js} +1 -1
  39. package/dashboard/dist/assets/{LoginPage-u32vJQN9.js → LoginPage-Bg3BG0Wv.js} +1 -1
  40. package/dashboard/dist/assets/{PetPage-Dbc975oU.js → PetPage-BgwBxRyx.js} +2 -2
  41. package/dashboard/dist/assets/{PopoverPopup-D-yECvH9.js → PopoverPopup-k3o_Jp2b.js} +1 -1
  42. package/dashboard/dist/assets/{ProviderIcon-CHtZiJUN.js → ProviderIcon-Bbw6MUSf.js} +1 -1
  43. package/dashboard/dist/assets/{ResetPasswordPage-ctuIsNk0.js → ResetPasswordPage-DIKPVu5K.js} +1 -1
  44. package/dashboard/dist/assets/{Select-DN4Kq_R1.js → Select-kA0dV5Qw.js} +1 -1
  45. package/dashboard/dist/assets/{SelectItemText-C-HmeD8L.js → SelectItemText-D4YCIn1x.js} +1 -1
  46. package/dashboard/dist/assets/{SelfHostPage-BZOL3JMt.js → SelfHostPage-C3Y9qF3P.js} +1 -1
  47. package/dashboard/dist/assets/{ServiceStatusPage-C0sDYa8c.js → ServiceStatusPage-o1G3SJhV.js} +1 -1
  48. package/dashboard/dist/assets/{SessionsPage-l0-FkcJB.js → SessionsPage-CA-efxhU.js} +3 -3
  49. package/dashboard/dist/assets/SettingsPage-Mr84vxQL.js +5 -0
  50. package/dashboard/dist/assets/{SkillsPage-Cz6G9d3o.js → SkillsPage-BtRhLSpz.js} +1 -1
  51. package/dashboard/dist/assets/TokenGalaxy-CcFjCCuC.js +4426 -0
  52. package/dashboard/dist/assets/TooltipPopup-6aTx3jDf.js +1 -0
  53. package/dashboard/dist/assets/TrendMonitor-DoywXr8h.js +19 -0
  54. package/dashboard/dist/assets/{WidgetsPage-BKo3DBxT.js → WidgetsPage-BuGSzvR0.js} +1 -1
  55. package/dashboard/dist/assets/{WrappedPage-Blm3aPO5.js → WrappedPage-Bm6X-SUZ.js} +1 -1
  56. package/dashboard/dist/assets/__vite-browser-external-C9a2vCBN.css +1 -0
  57. package/dashboard/dist/assets/__vite-browser-external-ClVJNQu3.js +45 -0
  58. package/dashboard/dist/assets/{agent-logos-DMtDEx7_.js → agent-logos-Sc8Sejgx.js} +1 -1
  59. package/dashboard/dist/assets/{arrow-left-Bo9y7VzF.js → arrow-left-Cm1LG2i_.js} +1 -1
  60. package/dashboard/dist/assets/{arrow-right-BLMU8Y5U.js → arrow-right-WP3kIwiy.js} +1 -1
  61. package/dashboard/dist/assets/{arrow-up-right-B4hXO4sc.js → arrow-up-right-CjyprVMj.js} +1 -1
  62. package/dashboard/dist/assets/{calendar-days-D9HaEtgo.js → calendar-days-Bm88-Gcb.js} +1 -1
  63. package/dashboard/dist/assets/{check-BJNGKpX8.js → check-CzIxFg0I.js} +1 -1
  64. package/dashboard/dist/assets/{chevron-down-CoGC_RLK.js → chevron-down-bfGK8629.js} +1 -1
  65. package/dashboard/dist/assets/{cloud-checkout-Du5FoHqV.js → cloud-checkout-C9DFQ7yM.js} +1 -1
  66. package/dashboard/dist/assets/{composite-BfIUPpl8.js → composite-CdExmgTx.js} +1 -1
  67. package/dashboard/dist/assets/copy-CPPdujn2.js +1 -0
  68. package/dashboard/dist/assets/{download-C1K_v0C0.js → download-Cl6_dKeK.js} +1 -1
  69. package/dashboard/dist/assets/{external-link-D-xHhfj5.js → external-link-B0r6Wo4e.js} +1 -1
  70. package/dashboard/dist/assets/{flame-DXD6uvhM.js → flame-wEezvzXx.js} +1 -1
  71. package/dashboard/dist/assets/{format-tokens-B9riGvNj.js → format-tokens-vWpBpKpM.js} +1 -1
  72. package/dashboard/dist/assets/{gift-LPR-nD0J.js → gift-BFjblRqU.js} +1 -1
  73. package/dashboard/dist/assets/host-mode-Bc_iTzHk.js +1 -0
  74. package/dashboard/dist/assets/{icons-DLdtLqEt.js → icons-DX3dCNJP.js} +1 -1
  75. package/dashboard/dist/assets/{index-CXdJ7zMN.js → index-D-TnqdBv.js} +1 -1
  76. package/dashboard/dist/assets/{index-CC3cXeBa.js → index-D1Zdrpom.js} +1 -1
  77. package/dashboard/dist/assets/index-DBF1bJlm.js +502 -0
  78. package/dashboard/dist/assets/{index-BL11MboX.js → index-p8Gt3NFg.js} +1 -1
  79. package/dashboard/dist/assets/{info-tnXKCyuK.js → info-Cqi971MA.js} +1 -1
  80. package/dashboard/dist/assets/{link-2-DOk9Tcg1.js → link-2-79sm__cT.js} +1 -1
  81. package/dashboard/dist/assets/{loader-circle-DIl96Mw-.js → loader-circle-CDoVfOUb.js} +1 -1
  82. package/dashboard/dist/assets/local-usage-transfer-EcXnuwCj.js +1 -0
  83. package/dashboard/dist/assets/{modifiers.esm-2H_1taJ6.js → modifiers.esm-v5_BKSmY.js} +1 -1
  84. package/dashboard/dist/assets/module-C2SOSUuR.js +3 -0
  85. package/dashboard/dist/assets/{monitor-smartphone-tnp-03hs.js → monitor-smartphone-CO67DffO.js} +1 -1
  86. package/dashboard/dist/assets/{play-BGMuGTdN.js → play-CbvuGtc3.js} +1 -1
  87. package/dashboard/dist/assets/{plus-XETAaErq.js → plus-jc2gXlRM.js} +1 -1
  88. package/dashboard/dist/assets/{provider-display-BYNT4zPc.js → provider-display-BK3EbRLM.js} +1 -1
  89. package/dashboard/dist/assets/{react-OW7HALVO.js → react-DMs4C4qS.js} +1 -1
  90. package/dashboard/dist/assets/{safePolygon-CAfS8-ct.js → safePolygon-cY9H0GBN.js} +1 -1
  91. package/dashboard/dist/assets/{search-B7ZJhoau.js → search-fqTJoYYA.js} +1 -1
  92. package/dashboard/dist/assets/{server-CWrP7mtL.js → server-jpBtvTvr.js} +1 -1
  93. package/dashboard/dist/assets/{shield-check-ip5IQEK3.js → shield-check-DQiBlJbN.js} +1 -1
  94. package/dashboard/dist/assets/{skills-api-CpyoNTeB.js → skills-api-CN2r_rmt.js} +1 -1
  95. package/dashboard/dist/assets/{sortable.esm-YvzWzPDu.js → sortable.esm-DrS52yOK.js} +1 -1
  96. package/dashboard/dist/assets/{store-DRK6-JBg.js → store-K2Mk6aMn.js} +1 -1
  97. package/dashboard/dist/assets/{terminal-DQRoJSvh.js → terminal-Q4SruAlh.js} +1 -1
  98. package/dashboard/dist/assets/{trash-8h_26atF.js → trash-C1Ob-g8E.js} +1 -1
  99. package/dashboard/dist/assets/{use-community-stats-DYlhIXsp.js → use-community-stats-C-Gxpp9D.js} +1 -1
  100. package/dashboard/dist/assets/{use-latest-request-guard-AxJF9SEJ.js → use-latest-request-guard-DK-A4bBp.js} +1 -1
  101. package/dashboard/dist/assets/use-limits-display-prefs-ZauQzxE_.js +1 -0
  102. package/dashboard/dist/assets/{use-native-settings-BQgB6_PB.js → use-native-settings-BZLEIUK8.js} +1 -1
  103. package/dashboard/dist/assets/{use-ordered-list-ogi7Okzf.js → use-ordered-list-De_Mcm_H.js} +1 -1
  104. package/dashboard/dist/assets/use-reduced-motion-DatTtp2N.js +1 -0
  105. package/dashboard/dist/assets/{use-transform-BQqoo1et.js → use-transform-XCDD5IrX.js} +1 -1
  106. package/dashboard/dist/assets/use-usage-limits-BncGDhoF.js +1 -0
  107. package/dashboard/dist/assets/{useCurrency-Bv9g8mpq.js → useCurrency-DXPclxBT.js} +1 -1
  108. package/dashboard/dist/assets/{usePositioner-CQiZGknc.js → usePositioner-C-E1npCy.js} +1 -1
  109. package/dashboard/dist/assets/{useTokenFormat-BUVirY0k.js → useTokenFormat-B70xhy9u.js} +1 -1
  110. package/dashboard/dist/assets/{zap-DR3VD0yY.js → zap-D7gRgGCj.js} +1 -1
  111. package/dashboard/dist/index.html +5 -5
  112. package/dashboard/dist/ip-check.html +2 -2
  113. package/dashboard/dist/leaderboard.html +2 -2
  114. package/dashboard/dist/privacy.html +8 -2
  115. package/dashboard/dist/share.html +2 -2
  116. package/package.json +4 -3
  117. package/src/cli.js +10 -0
  118. package/src/commands/sync.js +18 -3
  119. package/src/lib/codex-rollout-parser.js +29 -2
  120. package/src/lib/codex-service-tier.js +13 -0
  121. package/src/lib/commandcode-limits.js +27 -11
  122. package/src/lib/grok-limits.js +1 -0
  123. package/src/lib/local-api.js +122 -11
  124. package/src/lib/local-usage-transfer.js +271 -0
  125. package/src/lib/opencode-go-limits.js +17 -6
  126. package/src/lib/pricing/curated-overrides.json +24 -0
  127. package/src/lib/pricing/index.js +50 -39
  128. package/src/lib/pricing/seed-snapshot.json +1 -1
  129. package/src/lib/provider-api-key-store.js +110 -0
  130. package/src/lib/rollout.js +27 -3
  131. package/src/lib/sentry.js +231 -0
  132. package/src/lib/session-analytics.js +15 -2
  133. package/src/lib/static-server.js +15 -2
  134. package/src/lib/usage-limits.js +74 -24
  135. package/src/lib/workbuddy-ipc.js +191 -0
  136. package/src/lib/workbuddy-limits.js +564 -0
  137. package/dashboard/dist/assets/CloudPage-26bhEYqI.js +0 -2
  138. package/dashboard/dist/assets/DashboardPage-CP_PMMga.js +0 -1
  139. package/dashboard/dist/assets/DevicePage-B0fLd80M.js +0 -1
  140. package/dashboard/dist/assets/DialogDescription-CXDxWzGi.js +0 -1
  141. package/dashboard/dist/assets/LandingPage-BQNOdAkR.js +0 -2
  142. package/dashboard/dist/assets/LimitsPage-BLJsmVVy.js +0 -9
  143. package/dashboard/dist/assets/SettingsPage-CrczfZiZ.js +0 -5
  144. package/dashboard/dist/assets/TokenGalaxy-B5IGaLQK.js +0 -4426
  145. package/dashboard/dist/assets/TooltipPopup-B6FqLWO7.js +0 -1
  146. package/dashboard/dist/assets/TrendMonitor-B4kJUwmF.js +0 -19
  147. package/dashboard/dist/assets/__vite-browser-external--HDUIUZr.js +0 -45
  148. package/dashboard/dist/assets/__vite-browser-external-B0m8a6Te.css +0 -1
  149. package/dashboard/dist/assets/host-mode-C2K0MMOs.js +0 -1
  150. package/dashboard/dist/assets/module-DOCYJaxl.js +0 -3
  151. package/dashboard/dist/assets/use-limits-display-prefs-DOZzuTwo.js +0 -1
  152. package/dashboard/dist/assets/use-reduced-motion-D5PHT_kx.js +0 -1
  153. package/dashboard/dist/assets/use-session-efficiency-pref-DP3hu3Rp.js +0 -1
  154. package/dashboard/dist/assets/use-usage-limits-DAf6O4aZ.js +0 -1
@@ -1 +0,0 @@
1
- import{c as a,r as c,t as C,H as F,F as H,G as Q}from"./__vite-browser-external--HDUIUZr.js";const W=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo","commandCode","qoder","qoderCn","codingPlan","agentPlan","devin"],X={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY",zcode:"ZCODE",opencodeGo:"OPENCODE",commandCode:"COMMAND-CODE",qoder:"QODER",qoderCn:"QODER-CN",codingPlan:"VOLCANO-ARK",agentPlan:"VOLCANO-ARK",devin:"DEVIN"};function me(e){return X[e]||null}function Se(e){switch(e){case"claude":return a("limits.provider.claude");case"codex":return a("limits.provider.codex");case"cursor":return a("limits.provider.cursor");case"gemini":return a("limits.provider.gemini");case"kimi":return a("limits.provider.kimi");case"kiro":return a("limits.provider.kiro");case"grok":return a("limits.provider.grok");case"copilot":return a("limits.provider.copilot");case"antigravity":return a("limits.provider.antigravity");case"zcode":return a("limits.provider.zcode");case"opencodeGo":return a("limits.provider.opencode_go");case"commandCode":return a("limits.provider.command_code");case"qoder":return a("limits.provider.qoder");case"qoderCn":return a("limits.provider.qoder_cn");case"codingPlan":return a("limits.provider.ark_coding_plan");case"agentPlan":return a("limits.provider.ark_agent_plan");case"devin":return a("limits.provider.devin");default:return String(e||"")}}const f=W,h="tt.limits.providerOrder",I="tt.limits.providerVisibility",A="tt.limits.displayMode",D="tt.limits.showSubscriptions",O="tt.limits.updatedAt",M="limitsPreferences",Z="limitsDisplayMode",$="tt:limits-prefs-changed",w=Object.freeze({USED:"used",REMAINING:"remaining"}),b=new Set(Object.values(w)),_=new Set([h,I,A,D,O]);function E(){return[...f]}const ee=new Set(["devin"]);function g(){return Object.fromEntries(f.map(e=>[e,!ee.has(e)]))}function L(e){const r=[];if(Array.isArray(e))for(const o of e)f.includes(o)&&!r.includes(o)&&r.push(o);for(const o of f)r.includes(o)||r.push(o);return r}function k(e){const r=g();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const o of f)typeof e[o]=="boolean"&&(r[o]=e[o]);return r}function re(e){return b.has(e)?e:w.USED}function P(e){return typeof e=="boolean"?e:!0}function S(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 o=Number(r);return Number.isSafeInteger(o)?o:void 0}}}function y(e={}){const r=e&&typeof e=="object"?e:{};return{displayMode:re(r.displayMode),providerOrder:L(r.providerOrder),providerVisibility:k(r.providerVisibility),showSubscriptions:P(r.showSubscriptions),updatedAt:S(r.updatedAt)}}function te(){if(typeof window>"u")return E();try{const e=window.localStorage.getItem(h);return L(e?JSON.parse(e):void 0)}catch{return E()}}function R(){if(typeof window>"u")return g();try{const e=window.localStorage.getItem(I);return k(e?JSON.parse(e):void 0)}catch{return g()}}function we(e){return e===null||_.has(e)}function ye(){return R().devin===!0}function ie(){if(typeof window>"u")return w.USED;try{const e=window.localStorage.getItem(A);return b.has(e)?e:w.USED}catch{return w.USED}}function ne(){if(typeof window>"u")return!0;try{const e=window.localStorage.getItem(D);return e===null?!0:P(JSON.parse(e))}catch{return!0}}function oe(){if(!(typeof window>"u"))try{return S(window.localStorage.getItem(O))}catch{return}}function se(){if(typeof window>"u")return!1;try{for(const e of _)if(window.localStorage.getItem(e)!==null)return!0}catch{return!1}return!1}function v(){return y({displayMode:ie(),providerOrder:te(),providerVisibility:R(),showSubscriptions:ne(),updatedAt:oe()})}function de(e){if(typeof window>"u")return;const r=y(e);try{window.localStorage.setItem(h,JSON.stringify(r.providerOrder)),window.localStorage.setItem(I,JSON.stringify(r.providerVisibility)),window.localStorage.setItem(A,r.displayMode),window.localStorage.setItem(D,JSON.stringify(r.showSubscriptions)),r.updatedAt===void 0?window.localStorage.removeItem(O):window.localStorage.setItem(O,String(r.updatedAt))}catch(o){console.warn("[tokentracker] limits preferences localStorage write failed:",o)}}function ae(e){const r=y(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},showSubscriptions:r.showSubscriptions,updatedAt:r.updatedAt??null}}function ce(...e){let r;for(const d of e){const l=S(d);l!==void 0&&(r=r===void 0?l:Math.max(r,l))}const o=Date.now();return r!==void 0&&o<=r?r+1:o}function ue(e,r){return e.length===r.length&&e.every((o,d)=>o===r[d])}function le(e,r){return f.every(o=>e[o]===r[o])}function T(e,r){return e.displayMode===r.displayMode&&ue(e.providerOrder,r.providerOrder)&&le(e.providerVisibility,r.providerVisibility)&&e.showSubscriptions===r.showSubscriptions}function pe(e,r){return T(e,r)&&S(e.updatedAt)===S(r.updatedAt)}function N(e,r){const o=S(e.updatedAt),d=S(r.updatedAt);return o!==void 0&&(d===void 0||o>d)}function ve(){const[e,r]=c.useState(v),o=c.useRef(e),d=c.useCallback((i,t={})=>{const n=y(i);return o.current=n,r(n),t.writeLocal&&de(n),typeof window<"u"&&window.dispatchEvent(new CustomEvent($)),n},[]),l=c.useCallback(i=>{C()&&F(M,ae(i))},[]),u=c.useCallback(i=>{const t=v(),n=N(t,o.current)?d(t):o.current,s=y(i(n));if(T(n,s))return;const p=ce(t.updatedAt,n.updatedAt),m=d({...s,updatedAt:p},{writeLocal:!0});l(m)},[d,l]),x=c.useCallback(i=>{b.has(i)&&u(t=>({...t,displayMode:i}))},[u]),K=c.useCallback(i=>{u(t=>({...t,showSubscriptions:!!i}))},[u]),V=c.useCallback(i=>{if(!b.has(i))return;const t=v();if(t.updatedAt!==void 0){d(t);return}d({...t,displayMode:i,updatedAt:void 0},{writeLocal:!0})},[d]);c.useEffect(()=>{if(!C())return;const i=H(t=>{const n=t?.[M];if(n&&typeof n=="object"){const s=y(n);if(!se()){d(s,{writeLocal:!0});return}const p=v();if(N(s,p))d(s,{writeLocal:!0});else{const m=d(p);pe(s,p)||l(m)}return}V(t?.[Z])});return Q(),i},[V,d,l]),c.useEffect(()=>{if(typeof window>"u")return;const i=t=>{(t.key===null||_.has(t.key))&&d(v())};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)},[d]);const U=c.useCallback(i=>{f.includes(i)&&u(t=>({...t,providerVisibility:{...t.providerVisibility,[i]:!t.providerVisibility[i]}}))},[u]),Y=c.useCallback(i=>{u(t=>({...t,providerVisibility:Object.fromEntries(f.map(n=>[n,!!i]))}))},[u]),z=c.useCallback(i=>{u(t=>{const n=t.providerOrder.indexOf(i);if(n<=0)return t;const s=[...t.providerOrder];return[s[n-1],s[n]]=[s[n],s[n-1]],{...t,providerOrder:s}})},[u]),G=c.useCallback(i=>{u(t=>{const n=t.providerOrder.indexOf(i);if(n<0||n>=t.providerOrder.length-1)return t;const s=[...t.providerOrder];return[s[n],s[n+1]]=[s[n+1],s[n]],{...t,providerOrder:s}})},[u]),q=c.useCallback((i,t)=>{i!==t&&u(n=>{const s=n.providerOrder.indexOf(i),p=n.providerOrder.indexOf(t);if(s<0||p<0)return n;const m=[...n.providerOrder],[B]=m.splice(s,1);return m.splice(p,0,B),{...n,providerOrder:m}})},[u]),j=c.useCallback(()=>{u(()=>({displayMode:w.USED,providerOrder:E(),providerVisibility:g(),showSubscriptions:!0}))},[u]),J=c.useMemo(()=>e.providerOrder.filter(i=>e.providerVisibility[i]!==!1),[e.providerOrder,e.providerVisibility]);return{order:e.providerOrder,visibility:e.providerVisibility,displayMode:e.displayMode,showSubscriptions:e.showSubscriptions,setDisplayMode:x,setShowSubscriptions:K,visibleOrdered:J,toggle:U,setAllVisible:Y,moveUp:z,moveDown:G,moveToward:q,reset:j}}export{$ as L,we as a,w as b,W as c,me as d,ye as i,Se as l,ve as u};
@@ -1 +0,0 @@
1
- import{r as o}from"./__vite-browser-external--HDUIUZr.js";import{h as r,i as t,p as s}from"./react-OW7HALVO.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
@@ -1 +0,0 @@
1
- import{o as f,r as n}from"./__vite-browser-external--HDUIUZr.js";const u={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};u.node;const E=f(u),i="tt.qualityPerDollar.enabled";function l(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(i)==="1"}catch{return!1}}function y(){const[r,o]=n.useState(l);n.useEffect(()=>{if(typeof window>"u")return;const t=e=>{(e.key===null||e.key===i)&&o(l())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const a=n.useCallback(t=>{const e=!!t;o(e);try{window.localStorage.setItem(i,e?"1":"0")}catch{}},[]),s=n.useCallback(()=>a(!l()),[a]);return{enabled:r,setEnabled:a,toggle:s}}const d="tt.sessionEfficiency.enabled";function c(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(d)==="1"}catch{return!1}}function g(){const[r,o]=n.useState(c);n.useEffect(()=>{if(typeof window>"u")return;const t=e=>{(e.key===null||e.key===d)&&o(c())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const a=n.useCallback(t=>{const e=!!t;o(e);try{window.localStorage.setItem(d,e?"1":"0")}catch{}},[]),s=n.useCallback(()=>a(!c()),[a]);return{enabled:r,setEnabled:a,toggle:s}}export{E as P,g as a,y as u};
@@ -1 +0,0 @@
1
- import{t as K,w as M,r as w,c as N,aS as O,aT as R,aU as S,aV as q}from"./__vite-browser-external--HDUIUZr.js";import{l as z,i as _,L as F,a as T}from"./use-limits-display-prefs-DOZzuTwo.js";import{u as j}from"./use-latest-request-guard-AxJF9SEJ.js";const L="native:notificationPermission";let A=null;function D(){return typeof window<"u"&&!!window.chrome?.webview}function x(){return K()?A||"unknown":D()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function G(e){if(typeof window>"u")return()=>{};const i=n=>{const l=n?.detail?.status;typeof l=="string"&&(A=l),e(x())};return window.addEventListener(L,i),e(x()),K()&&M({type:"getNotificationStatus"}),()=>window.removeEventListener(L,i)}async function B(){if(K()){M({type:"requestNotificationPermission"});return}D()||typeof Notification<"u"&&Notification.permission==="default"&&await Notification.requestPermission().catch(()=>"denied")}const v="tt.limitAlerts.enabled";function $(){try{return window.localStorage.getItem(v)==="1"}catch{return!1}}function se(){const[e,i]=w.useState($),[n,l]=w.useState("unknown");w.useEffect(()=>G(l),[]);const c=w.useCallback(async t=>{const r=!!t;r&&await B();try{window.localStorage.setItem(v,r?"1":"0")}catch{}i(r)},[]);return{enabled:e,setEnabled:c,permissionBlocked:n==="denied"}}function V(e,i){if(!(e>0))return null;const n=(e-i)/e;return Number.isFinite(n)?Math.min(Math.max(n,0),1):null}function U(e,i,n=.03){return e>i+n}function H(e){const i=Math.max(0,Math.floor(e)),n=Math.floor(i/3600);return n>24?`${Math.floor(n/24)}d`:n>0?`${n}h`:`${Math.floor(i/60)}m`}function W(e,i){if(typeof e.windowSeconds=="number")return e.windowSeconds;if(e.windowSecondsField&&i){const n=i[e.windowSecondsField];return typeof n=="number"&&n>0?n:null}return null}function Y(e){return e==null?NaN:typeof e=="number"?e*1e3:Date.parse(e)}function J({usedPercent:e,windowSeconds:i,resetMs:n,mode:l,now:c=Date.now()}){const t=Math.min(Math.max(Number(e)||0,0),100)/100,r={pacePercent:null,paceOver:!1,expectedPercent:null,runsOutEta:null,projectedEnd:null};if(!(i>0)||!Number.isFinite(n)||n<=c)return r;const a=Math.max(0,(n-c)/1e3),s=V(i,a);if(s==null)return r;if(r.expectedPercent=Math.round(s*100),r.paceOver=U(t,s),t>0){const m=l==="remaining"?1-s:s;r.pacePercent=m*100}if(s>.02&&t>0){const m=i*s,u=t/m,f=t/s;f>=1&&u>0?r.runsOutEta=H((1-t)/u):r.projectedEnd=Math.round(Math.min(f,1)*100)}return r}const Q={claude:{windows(e){const i=Array.isArray(e.weekly_scoped)?e.weekly_scoped.map(n=>({key:`scoped-${n.label}`,label:n.label,window:n,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,windowSecondsField:"limit_window_seconds"},{key:"auto",labelKey:"limits.label.cursor_auto",window:e.secondary_window,windowSecondsField:"limit_window_seconds"},{key:"api",labelKey:"limits.label.cursor_api",window:e.tertiary_window,windowSecondsField:"limit_window_seconds"},{key:"grok-bot",labelKey:"limits.label.cursor_grok_bot",window:e.quaternary_window,windowSecondsField:"limit_window_seconds"}]}},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:{extra:"kiro_credits",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,n=i==="weekly"?"limits.label.grok_week":i==="daily"?"limits.label.grok_day":"limits.label.grok_month",l=i==="weekly"?7*86400:i==="daily"?86400:void 0;return[{key:i==="weekly"?"week":i==="daily"?"day":"month",labelKey:n,window:e.primary_window,windowSeconds:l},{key:"ondemand",labelKey:"limits.label.grok_ondemand",window:e.secondary_window},...Z(e)]}},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:{extra:"zcode_reset_bank",windows(e){if(e.plan_kind==="coding-plan")return[{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}];const i=Array.isArray(e.buckets)?e.buckets.filter(n=>n?.label&&n.window):[];return i.length?i.map((n,l)=>({key:`bucket-${n.entitlement_id||l}`,label:n.label,window:n.window,...n.period==="one_time"?{timeKind:"expiry"}:{}})):[{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"}]}},qoderCn:{windows(e){return[{key:"credits",labelKey:"limits.label.qoder_cn_credits",window:e.primary_window},{key:"addon",labelKey:"limits.label.qoder_cn_addon_credits",window:e.tertiary_window},{key:"ultimate",labelKey:"limits.label.qoder_cn_ultimate",window:e.secondary_window,timeKind:"expiry"}]}},codingPlan:{windows(e){return[{key:"5h",labelKey:"limits.label.ark_coding_plan_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.ark_coding_plan_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.ark_coding_plan_monthly",window:e.tertiary_window}]}},commandCode:{windows(e){return[{key:"5h",labelKey:"limits.label.command_code_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.command_code_weekly",window:e.secondary_window}]}},agentPlan:{windows(e){return[{key:"5h",labelKey:"limits.label.ark_agent_plan_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.ark_agent_plan_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.ark_agent_plan_monthly",window:e.tertiary_window}]}},devin:{windows(e){return[{key:"daily",labelKey:"limits.label.devin_daily",window:e.primary_window,windowSecondsField:"limit_window_seconds"},{key:"weekly",labelKey:"limits.label.devin_weekly",window:e.secondary_window,windowSecondsField:"limit_window_seconds"}]}}},X={GrokBuild:"limits.label.grok_build",GrokBot:"limits.label.grok_bot",GrokChat:"limits.label.grok_chat",GrokImagine:"limits.label.grok_imagine",Cursor:"limits.label.grok_cursor"};function Z(e){if(!Array.isArray(e?.products))return[];const i=[];for(const n of e.products){const l=typeof n?.product=="string"?n.product:"";if(!l||!n?.window)continue;const c=X[l],t=typeof n.label=="string"?n.label.trim():"";!c&&!t||i.push({key:`product-${l}`,...c?{labelKey:c}:{label:t},window:n.window,share:!0})}return i}const I="tt.limitAlerts.cycles.v1";function ee(){try{return JSON.parse(window.localStorage.getItem(I)||"{}")}catch{return{}}}function ie(e){try{window.localStorage.setItem(I,JSON.stringify(e))}catch{}}function ne(e,{now:i=Date.now()}={}){const n=[],l=Q;for(const[c,t]of Object.entries(e||{})){const r=l[c];if(!(!t?.configured||t.error||!r))for(const a of r.windows(t)){if(!a.window)continue;const s=Number(a.pctField==="utilization"?a.window.utilization:a.window.used_percent),m=a.resetField==="resets_at"?a.window.resets_at:a.window.reset_at,u=Y(m),f=J({usedPercent:s,windowSeconds:W(a,a.window),resetMs:u,mode:"used",now:i});!f.runsOutEta||!f.paceOver||s<20||!(u>i)||n.push({id:`${c}:${a.key}:${u}`,providerId:c,windowKey:a.key,resetMs:u,usedPercent:s,runsOutEta:f.runsOutEta})}}return n}function te(e){const i=ee(),n=ne(e);for(const t of n){if(i[t.id])continue;const r=z(t.providerId),a=N("limits.alert.title",{provider:r}),s=N("limits.alert.body",{eta:t.runsOutEta,percent:Math.round(t.usedPercent)});let m=O({title:a,body:s,id:t.id});!m&&typeof Notification<"u"&&Notification.permission==="granted"&&(new Notification(a,{body:s,tag:t.id}),m=!0),m&&(i[t.id]=Date.now())}const l=Date.now()-864e5,c=Object.fromEntries(Object.entries(i).filter(([t,r])=>{const a=Number(t.split(":").at(-1));return Number.isFinite(a)?a>=l:Number(r)>=l}).slice(-100));return ie(c),n.length}function g(e,i){return!e||i||!e.devin||e.devin.configured===!1&&Object.keys(e.devin).length===1?e:{...e,devin:{configured:!1}}}function ae(e){const i=q(),n=i&&!!e?.initialState,[l,c]=w.useState(_),[t,r]=w.useState(()=>n?g(e?.initialState?.data??null,_()):null),[a,s]=w.useState(()=>n?e?.initialState?.error??null:null),[m,u]=w.useState(i&&!n),f=!!e?.initialRefresh,E=!!e?.publishToPreloadCache,b=j([l,i]);w.useEffect(()=>{if(typeof window>"u")return;const d=()=>c(_()),o=y=>{T(y.key)&&d()};return window.addEventListener(F,d),window.addEventListener("storage",o),()=>{window.removeEventListener(F,d),window.removeEventListener("storage",o)}},[]),w.useEffect(()=>{if(!(!i||!t||typeof window>"u"))try{window.localStorage.getItem(v)==="1"&&te(t)}catch{}},[t,i]);const p=w.useCallback((d,o)=>{!i||!E||!d||typeof d!="object"||R(g(d,_()),{source:o})},[i,E]),C=w.useCallback(async()=>{if(!i)return null;const d=b();try{const o=await S({refresh:!0,devinEnabled:_()});if(!d())return null;const k=g(o&&typeof o=="object"?o:null,_());return r(k),s(null),u(!1),p(k,"manual-refresh"),k}catch(o){return d()&&(s(o?.message||String(o)),u(!1)),null}},[b,i,p]),h=w.useCallback(async()=>{if(!i)return;const d=b();try{const o=await S({devinEnabled:_()});if(!d())return;const y=o&&typeof o=="object"?o:null;r(g(y,_())),s(null),u(!1),p(y,"page-load")}catch(o){if(!d())return;s(o?.message||String(o)),u(!1)}},[b,i,p]);w.useEffect(()=>{if(!i||typeof window>"u"||typeof document>"u")return;const d=15e3;let o=Date.now();const y=()=>{if(document.visibilityState!=="visible")return;const k=Date.now();k-o<d||(o=k,h())};return window.addEventListener("focus",y),document.addEventListener("visibilitychange",y),()=>{window.removeEventListener("focus",y),document.removeEventListener("visibilitychange",y)}},[i,h]);const P=w.useRef(l);return w.useEffect(()=>{P.current!==l&&(P.current=l,i&&(l||r(d=>g(d,!1)),h()))},[l,i,h]),w.useEffect(()=>{if(!i){r(null),s(null),u(!1);return}if(n&&!f)return;const d=b();(async()=>{try{const o=await S({devinEnabled:_()});if(!d())return;const y=o&&typeof o=="object"?o:null;r(g(y,_())),s(null),p(y,"page-load")}catch(o){if(!d())return;s(o?.message||String(o))}finally{d()&&u(!1)}})()},[b,n,f,i,p]),{data:t,error:a,isLoading:m,refresh:C}}export{Q as P,W as a,se as b,J as c,Y as r,te as s,ae as u};