tokentracker-cli 1.3.14 → 1.3.15

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 (115) hide show
  1. package/README.md +1 -1
  2. package/README.zh-CN.md +1 -1
  3. package/dashboard/dist/assets/{AchievementBadge-DJK8AWBF.js → AchievementBadge-CSXb26DC.js} +1 -1
  4. package/dashboard/dist/assets/{AchievementsPage-Cle78oKH.js → AchievementsPage-Bs6vIpd0.js} +2 -2
  5. package/dashboard/dist/assets/{AchievementsSection-BPqXDoPP.js → AchievementsSection-BO4u-574.js} +1 -1
  6. package/dashboard/dist/assets/{BadgeDetailModal-HsH_Pwsu.js → BadgeDetailModal-ic60vrZX.js} +1 -1
  7. package/dashboard/dist/assets/{BotAnimated-BWy2-z4Q.js → BotAnimated-BHHAUEQL.js} +1 -1
  8. package/dashboard/dist/assets/{Card-DPGBuBDb.js → Card-8t2FYLJV.js} +1 -1
  9. package/dashboard/dist/assets/{CloudCheckoutPage-ohIQnIhe.js → CloudCheckoutPage-CXaDDial.js} +1 -1
  10. package/dashboard/dist/assets/{CloudPage-OYiiZ4c4.js → CloudPage-DN6s_UrT.js} +2 -2
  11. package/dashboard/dist/assets/{CommandPalette-BmDZmpMi.js → CommandPalette-D7dHMpHK.js} +1 -1
  12. package/dashboard/dist/assets/{CommunityStatsModal-L86uJgyp.js → CommunityStatsModal-C55r20Vb.js} +1 -1
  13. package/dashboard/dist/assets/{ConfirmModal-COQfPXos.js → ConfirmModal-jSEqSSnW.js} +1 -1
  14. package/dashboard/dist/assets/{Controls-BkKlT6Dz.js → Controls-CqmoR37l.js} +1 -1
  15. package/dashboard/dist/assets/{DashboardPage-3dlQBOjz.js → DashboardPage-BLr2XmyZ.js} +1 -1
  16. package/dashboard/dist/assets/{DateRangePopover-D0UeP8ig.js → DateRangePopover-z89rKqjK.js} +1 -1
  17. package/dashboard/dist/assets/{DevicePage-K3CdWKaf.js → DevicePage-Ddm5uKOw.js} +1 -1
  18. package/dashboard/dist/assets/{DialogClose-DKQ2ZVA0.js → DialogClose-imfpTM8a.js} +1 -1
  19. package/dashboard/dist/assets/DialogDescription-BE5CNMW0.js +1 -0
  20. package/dashboard/dist/assets/{DialogTitle-ufFnN-8D.js → DialogTitle-Ca1-hka8.js} +1 -1
  21. package/dashboard/dist/assets/{ElectricLogo-Bb79UnTo.js → ElectricLogo-CrnDjhtG.js} +1 -1
  22. package/dashboard/dist/assets/{FadeIn-DlAKIU4I.js → FadeIn-CAr2EMcK.js} +1 -1
  23. package/dashboard/dist/assets/{HeaderGithubStar-CzwSyhEY.js → HeaderGithubStar-UK7qFFNh.js} +1 -1
  24. package/dashboard/dist/assets/{HoverTooltip-BEpwekkd.js → HoverTooltip-fs1HBOXB.js} +1 -1
  25. package/dashboard/dist/assets/{IpCheckPage-C7kpZ9JX.js → IpCheckPage-Bk-MlPWf.js} +1 -1
  26. package/dashboard/dist/assets/{LandingPage-CfYk0Jzy.js → LandingPage-DJnPCdqP.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardPage-XgjAHwpy.js → LeaderboardPage-wVjwsqyc.js} +2 -2
  28. package/dashboard/dist/assets/{LeaderboardProBadge-wSlqVjBb.js → LeaderboardProBadge-BaQdHu06.js} +1 -1
  29. package/dashboard/dist/assets/{LeaderboardProfileModal-DaQrNYnu.js → LeaderboardProfileModal-D5ZZtIPl.js} +3 -3
  30. package/dashboard/dist/assets/{LeaderboardProfilePage-3SWjG8FQ.js → LeaderboardProfilePage-BZsBL2jT.js} +1 -1
  31. package/dashboard/dist/assets/{LimitsPage-DvM57ri3.js → LimitsPage-Cks_mKSL.js} +1 -1
  32. package/dashboard/dist/assets/{LocalOnlyNotice-CY6eDJEk.js → LocalOnlyNotice-DLnC_Tq4.js} +1 -1
  33. package/dashboard/dist/assets/{LoginCard-4bdpPQeD.js → LoginCard-FXZbjmOY.js} +1 -1
  34. package/dashboard/dist/assets/{LoginModal-Bmw7-b3f.js → LoginModal-_R-0ZtpQ.js} +1 -1
  35. package/dashboard/dist/assets/{LoginPage-CEI4nnlT.js → LoginPage-MzDRyv1Q.js} +1 -1
  36. package/dashboard/dist/assets/{PetPage-7Udtc9GY.js → PetPage-DJ58EiPT.js} +2 -2
  37. package/dashboard/dist/assets/{PopoverPopup-r2BvRKLO.js → PopoverPopup-uQa7G-IO.js} +1 -1
  38. package/dashboard/dist/assets/{ProviderIcon-Cy_pKLdw.js → ProviderIcon-xSNRuia-.js} +1 -1
  39. package/dashboard/dist/assets/{ResetPasswordPage-QKUaLtO3.js → ResetPasswordPage-BcVcWbsW.js} +1 -1
  40. package/dashboard/dist/assets/{Select-BsUrn8Ui.js → Select-Dwix4ZFd.js} +1 -1
  41. package/dashboard/dist/assets/{SelectItemText-Nis0uGZT.js → SelectItemText-Bz5cn5Gk.js} +1 -1
  42. package/dashboard/dist/assets/{SelfHostPage-DF8EzBEV.js → SelfHostPage-BLocCkUo.js} +1 -1
  43. package/dashboard/dist/assets/{ServiceStatusPage-BYmKzI_v.js → ServiceStatusPage-CzMjS7EQ.js} +1 -1
  44. package/dashboard/dist/assets/{SessionsPage-BsCVe75l.js → SessionsPage-Dqzuthrd.js} +1 -1
  45. package/dashboard/dist/assets/{SettingsPage-CIZ6WmNR.js → SettingsPage-DEdNhzKR.js} +3 -3
  46. package/dashboard/dist/assets/{SkillsPage-cwHyK0Hp.js → SkillsPage-CqocOQID.js} +1 -1
  47. package/dashboard/dist/assets/{TokenGalaxy-2S-ud67v.js → TokenGalaxy-B2sMNsM0.js} +1 -1
  48. package/dashboard/dist/assets/{TooltipPopup-GG7xjDOP.js → TooltipPopup-LzbtjRSA.js} +1 -1
  49. package/dashboard/dist/assets/{TrendMonitor-CrbXrVMe.js → TrendMonitor-DpMcMWVh.js} +1 -1
  50. package/dashboard/dist/assets/{WidgetsPage-HrhnI3C-.js → WidgetsPage-aKfztwsk.js} +1 -1
  51. package/dashboard/dist/assets/{WrappedPage-sm7UVFon.js → WrappedPage-NoY2hqbF.js} +1 -1
  52. package/dashboard/dist/assets/__vite-browser-external-BnGukaND.js +45 -0
  53. package/dashboard/dist/assets/{agent-logos-DGrrmPth.js → agent-logos-Oh8CLAYk.js} +1 -1
  54. package/dashboard/dist/assets/{arrow-left-DOzsdmqR.js → arrow-left-Mwggxctm.js} +1 -1
  55. package/dashboard/dist/assets/{arrow-right-CHb0kJou.js → arrow-right-Crx-kuck.js} +1 -1
  56. package/dashboard/dist/assets/{arrow-up-right-CH8vEEN1.js → arrow-up-right-uwoo8I0B.js} +1 -1
  57. package/dashboard/dist/assets/{calendar-days-_D5qnyH_.js → calendar-days-C6MeKaqh.js} +1 -1
  58. package/dashboard/dist/assets/{check-DZLesnNy.js → check-dsWQRYNj.js} +1 -1
  59. package/dashboard/dist/assets/{chevron-down-QL4xkUtL.js → chevron-down-BIf5bhyB.js} +1 -1
  60. package/dashboard/dist/assets/{cloud-checkout-DiCcWJVl.js → cloud-checkout-GnFRQdnr.js} +1 -1
  61. package/dashboard/dist/assets/{composite-DObGcQmb.js → composite-lINFdwLI.js} +1 -1
  62. package/dashboard/dist/assets/{download-BKp8pusR.js → download-B7eyvOxn.js} +1 -1
  63. package/dashboard/dist/assets/{external-link-B3p_TVGc.js → external-link-RNTsFDG4.js} +1 -1
  64. package/dashboard/dist/assets/{flame-Df9OTUym.js → flame-uwCJ6brb.js} +1 -1
  65. package/dashboard/dist/assets/{format-tokens-DXrEDEYs.js → format-tokens-Bf7JxB4E.js} +1 -1
  66. package/dashboard/dist/assets/{gift-DtWubiuR.js → gift-BY7kCGBK.js} +1 -1
  67. package/dashboard/dist/assets/{host-mode-C069A_hB.js → host-mode-Bs-UHw-7.js} +1 -1
  68. package/dashboard/dist/assets/{icons-lB1kfROy.js → icons-CrLu8vlW.js} +1 -1
  69. package/dashboard/dist/assets/{index-DsXIWrJx.js → index-CXQag63s.js} +1 -1
  70. package/dashboard/dist/assets/{index-D356L-jw.js → index-DYIIk93n.js} +1 -1
  71. package/dashboard/dist/assets/{index-M5BiC0jx.js → index-DieuzFHA.js} +1 -1
  72. package/dashboard/dist/assets/{info-CSG8OkG4.js → info-BteHQN_N.js} +1 -1
  73. package/dashboard/dist/assets/{link-2-BkBGu7FX.js → link-2-C1RSbOHv.js} +1 -1
  74. package/dashboard/dist/assets/{loader-circle-BERDkbsP.js → loader-circle-BM3x6_YL.js} +1 -1
  75. package/dashboard/dist/assets/{modifiers.esm-Ce5IvVw2.js → modifiers.esm-BHzOJfH3.js} +1 -1
  76. package/dashboard/dist/assets/{monitor-smartphone-zKuoJldz.js → monitor-smartphone-Ps3VptSt.js} +1 -1
  77. package/dashboard/dist/assets/{play-C0x-pxft.js → play-7MpFYU7a.js} +1 -1
  78. package/dashboard/dist/assets/{plus-DJvks-CX.js → plus-Dk-p9OaZ.js} +1 -1
  79. package/dashboard/dist/assets/{provider-display-C0e4tAFu.js → provider-display-Czwv4ClR.js} +1 -1
  80. package/dashboard/dist/assets/{react-Bg0_YfGs.js → react-D9vco0ZF.js} +1 -1
  81. package/dashboard/dist/assets/{safePolygon-CptquMWZ.js → safePolygon-Ca2iBTNb.js} +1 -1
  82. package/dashboard/dist/assets/{search-CLESf2Tg.js → search-Z2Hfw99-.js} +1 -1
  83. package/dashboard/dist/assets/{server-Cdwhp-2m.js → server-Dh_OraRG.js} +1 -1
  84. package/dashboard/dist/assets/{shield-check-8U4XqmW3.js → shield-check-59NUSZvk.js} +1 -1
  85. package/dashboard/dist/assets/{skills-api-ioDaxLLo.js → skills-api-Bguk8iPD.js} +1 -1
  86. package/dashboard/dist/assets/{sortable.esm-CEohF5EK.js → sortable.esm-C9M-1k5o.js} +1 -1
  87. package/dashboard/dist/assets/{store-CyOeiGFE.js → store-nR9Ah4fr.js} +1 -1
  88. package/dashboard/dist/assets/{terminal-BjgwEAH-.js → terminal-DKTXh9tj.js} +1 -1
  89. package/dashboard/dist/assets/{trash-Skj6z7D1.js → trash-CQRRKbCs.js} +1 -1
  90. package/dashboard/dist/assets/{use-community-stats-Cworqjzy.js → use-community-stats-BoOd2Hhq.js} +1 -1
  91. package/dashboard/dist/assets/{use-latest-request-guard-DMVWXXHE.js → use-latest-request-guard-vQtFEBIX.js} +1 -1
  92. package/dashboard/dist/assets/{use-limits-display-prefs-DKJZcYfE.js → use-limits-display-prefs-BRTj9_xd.js} +1 -1
  93. package/dashboard/dist/assets/{use-native-settings-CQF4BLQl.js → use-native-settings-CC6uEn3j.js} +1 -1
  94. package/dashboard/dist/assets/{use-ordered-list-B9yoUGUU.js → use-ordered-list-BUx6eIN7.js} +1 -1
  95. package/dashboard/dist/assets/use-reduced-motion-BZBrXeyc.js +1 -0
  96. package/dashboard/dist/assets/{use-session-efficiency-pref-K00bK2sQ.js → use-session-efficiency-pref-BsUypXPb.js} +1 -1
  97. package/dashboard/dist/assets/{use-transform-Cfw11yOU.js → use-transform-oomGXI86.js} +1 -1
  98. package/dashboard/dist/assets/{use-usage-limits-BE2dJXFd.js → use-usage-limits-CXeCKJZ_.js} +1 -1
  99. package/dashboard/dist/assets/{useCurrency-BW7y9Tdv.js → useCurrency-DIZEXq5g.js} +1 -1
  100. package/dashboard/dist/assets/{usePositioner-DhtQcPOC.js → usePositioner-Drh2sy7w.js} +1 -1
  101. package/dashboard/dist/assets/{useTokenFormat-BnvzUc-t.js → useTokenFormat-DKURSOqb.js} +1 -1
  102. package/dashboard/dist/assets/{zap-BQ3BR9On.js → zap-BQ8nGK7b.js} +1 -1
  103. package/dashboard/dist/index.html +1 -1
  104. package/dashboard/dist/ip-check.html +1 -1
  105. package/dashboard/dist/leaderboard.html +1 -1
  106. package/dashboard/dist/pricing.html +1 -1
  107. package/dashboard/dist/share.html +1 -1
  108. package/dashboard/dist/terms.html +1 -1
  109. package/package.json +1 -1
  110. package/src/lib/pricing/curated-overrides.json +47 -0
  111. package/src/lib/pricing/matcher.js +11 -3
  112. package/src/lib/pricing/seed-snapshot.json +1 -1
  113. package/dashboard/dist/assets/DialogDescription-MbuaPFlj.js +0 -1
  114. package/dashboard/dist/assets/__vite-browser-external-C7JgMYNl.js +0 -45
  115. package/dashboard/dist/assets/use-reduced-motion-DPUViCfp.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "1.3.14",
3
+ "version": "1.3.15",
4
4
  "description": "Local-first AI coding token usage and cost tracker for 45 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -201,6 +201,25 @@
201
201
  "output": 7.5,
202
202
  "cache_read": 0.15
203
203
  },
204
+ "composer-2.5": {
205
+ "input": 0.5,
206
+ "output": 2.5,
207
+ "cache_read": 0.2,
208
+ "note": "Cursor Composer 2.5. Cursor Models & Pricing: $0.50/M input, $0.20/M cached input, $2.50/M output; no cache-write rate is published. https://cursor.com/docs/models-and-pricing"
209
+ },
210
+ "composer-2.5-fast": {
211
+ "input": 3.0,
212
+ "output": 15.0,
213
+ "cache_read": 0.5,
214
+ "note": "Cursor Composer 2.5 Fast. Cursor Models & Pricing: $3/M input, $0.50/M cached input, $15/M output. Kept separate from the cheaper base SKU."
215
+ },
216
+ "gemini-4-argon": {
217
+ "input": 2.0,
218
+ "output": 10.0,
219
+ "cache_read": 0.1,
220
+ "cache_write": 0,
221
+ "note": "Google Gemini 4 Argon introductory list rate (through 2026-11-30) matching Cursor Other Models pool: $2/M input, $0.10/M cached input, $10/M output. Effort suffixes (-high/-medium/-low/-minimal) are stripped by normalizeCursorModel. Sources: https://cursor.com/docs/models-and-pricing and https://ai.google.dev/gemini-api/docs/pricing"
222
+ },
204
223
  "MiniMax-M2.7": {
205
224
  "input": 0.3,
206
225
  "output": 1.2,
@@ -277,6 +296,34 @@
277
296
  "cache_write": 0,
278
297
  "note": "Cursor Grok 4.5 Fast rate. Cursor publishes $4/M input and $18/M output; the Cursor usage breakdown reports $1/M cached input. Kept separate from the cheaper base SKU."
279
298
  },
299
+ "cursor-grok-4.6": {
300
+ "input": 2.0,
301
+ "output": 6.0,
302
+ "cache_read": 0.5,
303
+ "cache_write": 0,
304
+ "note": "Cursor Grok 4.6 base rate. Cursor Models & Pricing: $2/M input, $0.50/M cached input, $6/M output; no cache-write rate is published."
305
+ },
306
+ "cursor-grok-4.6-fast": {
307
+ "input": 4.0,
308
+ "output": 12.0,
309
+ "cache_read": 1.0,
310
+ "cache_write": 0,
311
+ "note": "Cursor Grok 4.6 Fast rate. Cursor publishes $4/M input, $1/M cached input, $12/M output. Kept separate from the cheaper base SKU."
312
+ },
313
+ "cursor-grok-4.7": {
314
+ "input": 2.0,
315
+ "output": 6.0,
316
+ "cache_read": 0.5,
317
+ "cache_write": 0,
318
+ "note": "Cursor Grok 4.7 base rate. Cursor Models & Pricing: $2/M input, $0.50/M cached input, $6/M output. Long-context (>256k) premiums are not applied here yet because Cursor CSV rows do not expose per-request long-context flags."
319
+ },
320
+ "cursor-grok-4.7-fast": {
321
+ "input": 4.0,
322
+ "output": 12.0,
323
+ "cache_read": 1.0,
324
+ "cache_write": 0,
325
+ "note": "Cursor Grok 4.7 Fast rate. Cursor publishes $4/M input, $1/M cached input, $12/M output. Kept separate from the cheaper base SKU."
326
+ },
280
327
  "grok-4-0709": {
281
328
  "input": 3.0,
282
329
  "output": 15.0,
@@ -122,7 +122,9 @@ function normalizeClaudeModel(model) {
122
122
 
123
123
  // Cursor decorates model ids with reasoning effort and sometimes places the
124
124
  // Claude version before the tier. Normalize those lookup-only aliases while
125
- // preserving Grok 4.5's distinct Fast SKU (its rate is not the base rate).
125
+ // preserving Cursor Grok Fast SKUs (4.5/4.6/4.7 Fast rates are not the base
126
+ // rates). Gemini 4 Argon effort suffixes (-high/-medium/-low/-minimal) are
127
+ // stripped with the shared decorations set below.
126
128
  function normalizeCursorModel(model) {
127
129
  if (!model || typeof model !== "string") return model;
128
130
  let m = model
@@ -135,6 +137,12 @@ function normalizeCursorModel(model) {
135
137
  const parts = m.split("-");
136
138
  const isFast = parts.includes("fast");
137
139
 
140
+ if (/^(?:cursor-)?grok-4[.-]7(?:-|$)/.test(m)) {
141
+ return isFast ? "cursor-grok-4.7-fast" : "cursor-grok-4.7";
142
+ }
143
+ if (/^(?:cursor-)?grok-4[.-]6(?:-|$)/.test(m)) {
144
+ return isFast ? "cursor-grok-4.6-fast" : "cursor-grok-4.6";
145
+ }
138
146
  if (/^(?:cursor-)?grok-4[.-]5(?:-|$)/.test(m)) {
139
147
  return isFast ? "cursor-grok-4.5-fast" : "cursor-grok-4.5";
140
148
  }
@@ -142,8 +150,8 @@ function normalizeCursorModel(model) {
142
150
  // `fast` can be a separately priced SKU (for example composer-2-fast and
143
151
  // claude-opus-5-fast). Preserve it for the exact lookups below; when it is
144
152
  // merely a decoration, lookupPricing's later suffix-strip still falls back
145
- // to the base LiteLLM model.
146
- const decorations = new Set(["thinking", "xhigh", "high", "medium", "low"]);
153
+ // to the base LiteLLM model. Gemini Argon uses "minimal" as an effort level.
154
+ const decorations = new Set(["thinking", "xhigh", "high", "medium", "low", "minimal"]);
147
155
  m = parts.filter((part) => !decorations.has(part)).join("-");
148
156
  if (m.startsWith("claude-")) return normalizeClaudeModel(m);
149
157
  return m;