tokentracker-cli 1.4.9 → 1.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +3 -3
- package/README.ja.md +3 -3
- package/README.ko.md +3 -3
- package/README.md +2 -2
- package/README.zh-CN.md +3 -3
- package/dashboard/dist/assets/{AchievementBadge-_dRLgxnp.js → AchievementBadge-DALWiLQQ.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-DtvlZLlv.js → AchievementsPage-CjWobmn1.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-OgzKkbes.js → AchievementsSection-CTryGWII.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-D4Rlm_um.js → BadgeDetailModal-D4lMxewA.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-errJ5IvB.js → BotAnimated-CsLNf9WH.js} +1 -1
- package/dashboard/dist/assets/{Card-esELVQcD.js → Card-BOnNTrmF.js} +1 -1
- package/dashboard/dist/assets/{CloudCheckoutPage-3sH4Dbx9.js → CloudCheckoutPage-CrY15xqT.js} +1 -1
- package/dashboard/dist/assets/{CloudPage-Bi_vgiqE.js → CloudPage-hNSCMzVG.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-I0aze2EJ.js → CommandPalette-CE4UfPXk.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-CEn2g4J9.js → CommunityStatsModal-CLUegC6z.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-D7SfFCaf.js → ConfirmModal-D3wwfiYB.js} +1 -1
- package/dashboard/dist/assets/{Controls-Dyb5Vmk_.js → Controls-B_ta_8zw.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-CMHX8zDq.js → DashboardPage-RevVPZFt.js} +1 -1
- package/dashboard/dist/assets/{DateRangePopover-CgmxsHVR.js → DateRangePopover-CYud1FKu.js} +1 -1
- package/dashboard/dist/assets/DevicePage-D_eSLfM3.js +1 -0
- package/dashboard/dist/assets/{DialogClose-DzR109OA.js → DialogClose-Bu1ct4DA.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-GUHQVNGf.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-BLH1MgOX.js → DialogTitle-BJxM52J1.js} +1 -1
- package/dashboard/dist/assets/{ElectricLogo-DcpBcJIy.js → ElectricLogo-DYVZebgD.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-CBAXe_zb.js → FadeIn-CVaq5ALh.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-BZjQ3uJo.js → HeaderGithubStar-BCwYSguq.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-Bq4HuWOZ.js → HoverTooltip-YsG-TdOX.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-Oiah1-YB.js → IpCheckPage-C0qiyZXr.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-Cc1FfkWg.js → LandingPage-BlRJWwvx.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardPage-Bc2j_DQY.js → LeaderboardPage-DcCCKL2q.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProBadge-w1olVHVp.js → LeaderboardProBadge-I_oW0KCc.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfileModal-mgG7mdl8.js → LeaderboardProfileModal-DM5Vc7MB.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-DqxyooT5.js → LeaderboardProfilePage-DnYBBGNe.js} +1 -1
- package/dashboard/dist/assets/LimitsPage-Cyy3PI8p.js +6 -0
- package/dashboard/dist/assets/{LocalOnlyNotice-DZLgI75v.js → LocalOnlyNotice-083BoEX9.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-DVNU_QtS.js → LoginCard-CN1db2Rj.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-yxi5pCwC.js → LoginModal-Dfi7_ory.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-CW9pu4mf.js → LoginPage-BzMdiYlx.js} +1 -1
- package/dashboard/dist/assets/{PetPage-DwZsq4nC.js → PetPage-CsE95lfJ.js} +2 -2
- package/dashboard/dist/assets/{PopoverPopup-DYGmmoD8.js → PopoverPopup-U7DTTTE0.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-BKfj89GN.js → ProviderIcon-CnLfT5d9.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-gQdgCp9s.js → ResetPasswordPage-De2RzCj-.js} +1 -1
- package/dashboard/dist/assets/{Select-DvSR56Lj.js → Select-BS5MWHdB.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-DXo30s3O.js → SelectItemText-D3i379K-.js} +1 -1
- package/dashboard/dist/assets/{SelfHostPage-jA51Nckw.js → SelfHostPage-CTL0dnp5.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-DEkRRPx8.js → ServiceStatusPage-BmEvOk3B.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-J7hvGPCj.js → SessionsPage-DIog3JA_.js} +2 -2
- package/dashboard/dist/assets/{SettingsPage-ewH1Mzsm.js → SettingsPage-Cgpiwh-C.js} +3 -3
- package/dashboard/dist/assets/{SkillsPage-BaeBHhU7.js → SkillsPage-DpagshiB.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-D52pHpzj.js → TokenGalaxy-Do1U_-E3.js} +1 -1
- package/dashboard/dist/assets/{TooltipPopup-mLpESQcv.js → TooltipPopup-MOAnEqf3.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-ErowR5GE.js → TrendMonitor-B55RUbQm.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-Bf1uuKE7.js → WidgetsPage-CehbGk-6.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-C8qacvpR.js → WrappedPage-Cqt-U0Zx.js} +1 -1
- package/dashboard/dist/assets/__vite-browser-external-C9a2vCBN.css +1 -0
- package/dashboard/dist/assets/{__vite-browser-external-CIpYjfAT.js → __vite-browser-external-CR0vo15z.js} +3 -3
- package/dashboard/dist/assets/{agent-logos-tmdKvCcK.js → agent-logos-DuW-DWAl.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-CRKi420c.js → arrow-left-DIvQjuji.js} +1 -1
- package/dashboard/dist/assets/{arrow-right-C_o_iQbK.js → arrow-right-BURLycHb.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-N5YqKKnI.js → arrow-up-right-Bl1QMMkY.js} +1 -1
- package/dashboard/dist/assets/{calendar-days-BJh4FDj9.js → calendar-days-CmIWJC3A.js} +1 -1
- package/dashboard/dist/assets/{check-BfHGb92g.js → check-DB2ZTWor.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-D1pO8Xgc.js → chevron-down-BflN3NJt.js} +1 -1
- package/dashboard/dist/assets/{cloud-checkout-Ds13TmYz.js → cloud-checkout-BugQolSC.js} +1 -1
- package/dashboard/dist/assets/{composite-DDEsQKPD.js → composite-DJsqXsjA.js} +1 -1
- package/dashboard/dist/assets/{copy-CJTosYLe.js → copy-CtB-GPN2.js} +1 -1
- package/dashboard/dist/assets/{download-Bkqx3c3y.js → download-x5Botpqc.js} +1 -1
- package/dashboard/dist/assets/{external-link-IYUo5LcK.js → external-link-DH9sRkJW.js} +1 -1
- package/dashboard/dist/assets/{flame-BD_hiMfM.js → flame-DEcsokoL.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-DxwbhPag.js → format-tokens-BH0jc1MG.js} +1 -1
- package/dashboard/dist/assets/{gift-DLzFdL-1.js → gift-BZk9muk9.js} +1 -1
- package/dashboard/dist/assets/{icons-CbrWeFPS.js → icons-BMf9-bfS.js} +1 -1
- package/dashboard/dist/assets/{index-Dj1QnoPF.js → index-BEtrik3j.js} +1 -1
- package/dashboard/dist/assets/{index-DfzCE-FL.js → index-Cm-9apOR.js} +1 -1
- package/dashboard/dist/assets/{index-AVEWo-aY.js → index-TErx-xPb.js} +1 -1
- package/dashboard/dist/assets/{index-3xGpnZnP.js → index-axJYocSc.js} +1 -1
- package/dashboard/dist/assets/{info-odlIlCnm.js → info-DWdPAxu8.js} +1 -1
- package/dashboard/dist/assets/{link-2-Bt28Ey9r.js → link-2-c3ZZd-w-.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-lGnIhIFS.js → loader-circle-BKdtxfky.js} +1 -1
- package/dashboard/dist/assets/{local-usage-transfer-DSS0WaL-.js → local-usage-transfer-BFTJyQl3.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-CitRa_Z1.js → modifiers.esm-C3yIfOiP.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-1T0GFcOz.js → monitor-smartphone-DbdL7Mei.js} +1 -1
- package/dashboard/dist/assets/{play-d6YYOmED.js → play-qtWt2ArI.js} +1 -1
- package/dashboard/dist/assets/{plus-GrGV9Fkm.js → plus-C_-__5vi.js} +1 -1
- package/dashboard/dist/assets/{provider-display-D1v3cgDm.js → provider-display-IKHnhvaj.js} +1 -1
- package/dashboard/dist/assets/{react-DYCAyQbo.js → react-H6DfeMUm.js} +1 -1
- package/dashboard/dist/assets/{safePolygon-iPu060Qe.js → safePolygon-OEQJQTVa.js} +1 -1
- package/dashboard/dist/assets/{search-AQhOTwzm.js → search-MZE76qNU.js} +1 -1
- package/dashboard/dist/assets/{server-uYTbWPMd.js → server-CUWYLMjG.js} +1 -1
- package/dashboard/dist/assets/{shield-check-DB1NVCDf.js → shield-check-lA0Ja0RB.js} +1 -1
- package/dashboard/dist/assets/{skills-api-D7X10n0t.js → skills-api-CJJIPvSe.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-B13KhrCd.js → sortable.esm-DTnvt1IN.js} +1 -1
- package/dashboard/dist/assets/{store-D6XHiq8o.js → store-CC0YKrxA.js} +1 -1
- package/dashboard/dist/assets/{terminal-t37F8qyF.js → terminal-yc2l_-3m.js} +1 -1
- package/dashboard/dist/assets/{trash-CDHRwGsy.js → trash-Dl9f-o2h.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats--kaGg0EW.js → use-community-stats-CZCKWCO7.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-ChyODWU3.js → use-latest-request-guard-DTrOu0gD.js} +1 -1
- package/dashboard/dist/assets/use-limits-display-prefs-DGqP231e.js +1 -0
- package/dashboard/dist/assets/{use-native-settings-i3O4GTY1.js → use-native-settings-BEATnxB6.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-BtewEEX_.js → use-ordered-list-C_HTFP5C.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-CfCWjE-a.js +1 -0
- package/dashboard/dist/assets/{use-transform-NBAyuphu.js → use-transform-DM0QGq_O.js} +1 -1
- package/dashboard/dist/assets/use-usage-limits-BnjBG2fM.js +1 -0
- package/dashboard/dist/assets/{useCurrency-BdsxkAID.js → useCurrency-xQrRFokb.js} +1 -1
- package/dashboard/dist/assets/{usePositioner-BAN79miB.js → usePositioner-DkVdsypM.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-CGEO_mX1.js → useTokenFormat-CvA_kIPe.js} +1 -1
- package/dashboard/dist/assets/{zap-BDHWp-gL.js → zap-BJNS4i_u.js} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/dashboard/dist/ip-check.html +2 -2
- package/dashboard/dist/leaderboard.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +2 -2
- package/src/lib/grok-limits.js +1 -0
- package/src/lib/omp-session.js +480 -0
- package/src/lib/pricing/curated-overrides.json +35 -0
- package/src/lib/pricing/matcher.js +44 -15
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/session-analytics.js +54 -8
- package/src/lib/usage-limits.js +20 -8
- package/src/lib/workbuddy-ipc.js +191 -0
- package/src/lib/workbuddy-limits.js +564 -0
- package/dashboard/dist/assets/DevicePage-9R2MfK2Z.js +0 -1
- package/dashboard/dist/assets/DialogDescription-CdNjUDLZ.js +0 -1
- package/dashboard/dist/assets/LimitsPage-BIvK0GFj.js +0 -6
- package/dashboard/dist/assets/__vite-browser-external-CnVnsbqV.css +0 -1
- package/dashboard/dist/assets/use-limits-display-prefs-katFAxOA.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-DPacKl9n.js +0 -1
- package/dashboard/dist/assets/use-usage-limits-hsv-93TF.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-CIpYjfAT.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-CIpYjfAT.js";import{h as r,i as t,p as s}from"./react-DYCAyQbo.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as K,w as M,r as w,c as N,aT as O,aU as R,aV as S,aW as q}from"./__vite-browser-external-CIpYjfAT.js";import{l as z,i as _,L as F,a as T}from"./use-limits-display-prefs-katFAxOA.js";import{u as j}from"./use-latest-request-guard-ChyODWU3.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 W(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 H(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=W((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:H(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,H as a,se as b,J as c,Y as r,te as s,ae as u};
|