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.
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dashboard/dist/assets/{AchievementBadge-DJK8AWBF.js → AchievementBadge-CSXb26DC.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-Cle78oKH.js → AchievementsPage-Bs6vIpd0.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-BPqXDoPP.js → AchievementsSection-BO4u-574.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-HsH_Pwsu.js → BadgeDetailModal-ic60vrZX.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-BWy2-z4Q.js → BotAnimated-BHHAUEQL.js} +1 -1
- package/dashboard/dist/assets/{Card-DPGBuBDb.js → Card-8t2FYLJV.js} +1 -1
- package/dashboard/dist/assets/{CloudCheckoutPage-ohIQnIhe.js → CloudCheckoutPage-CXaDDial.js} +1 -1
- package/dashboard/dist/assets/{CloudPage-OYiiZ4c4.js → CloudPage-DN6s_UrT.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-BmDZmpMi.js → CommandPalette-D7dHMpHK.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-L86uJgyp.js → CommunityStatsModal-C55r20Vb.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-COQfPXos.js → ConfirmModal-jSEqSSnW.js} +1 -1
- package/dashboard/dist/assets/{Controls-BkKlT6Dz.js → Controls-CqmoR37l.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-3dlQBOjz.js → DashboardPage-BLr2XmyZ.js} +1 -1
- package/dashboard/dist/assets/{DateRangePopover-D0UeP8ig.js → DateRangePopover-z89rKqjK.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-K3CdWKaf.js → DevicePage-Ddm5uKOw.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-DKQ2ZVA0.js → DialogClose-imfpTM8a.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-BE5CNMW0.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-ufFnN-8D.js → DialogTitle-Ca1-hka8.js} +1 -1
- package/dashboard/dist/assets/{ElectricLogo-Bb79UnTo.js → ElectricLogo-CrnDjhtG.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-DlAKIU4I.js → FadeIn-CAr2EMcK.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-CzwSyhEY.js → HeaderGithubStar-UK7qFFNh.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-BEpwekkd.js → HoverTooltip-fs1HBOXB.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-C7kpZ9JX.js → IpCheckPage-Bk-MlPWf.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-CfYk0Jzy.js → LandingPage-DJnPCdqP.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardPage-XgjAHwpy.js → LeaderboardPage-wVjwsqyc.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProBadge-wSlqVjBb.js → LeaderboardProBadge-BaQdHu06.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfileModal-DaQrNYnu.js → LeaderboardProfileModal-D5ZZtIPl.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-3SWjG8FQ.js → LeaderboardProfilePage-BZsBL2jT.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-DvM57ri3.js → LimitsPage-Cks_mKSL.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-CY6eDJEk.js → LocalOnlyNotice-DLnC_Tq4.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-4bdpPQeD.js → LoginCard-FXZbjmOY.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-Bmw7-b3f.js → LoginModal-_R-0ZtpQ.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-CEI4nnlT.js → LoginPage-MzDRyv1Q.js} +1 -1
- package/dashboard/dist/assets/{PetPage-7Udtc9GY.js → PetPage-DJ58EiPT.js} +2 -2
- package/dashboard/dist/assets/{PopoverPopup-r2BvRKLO.js → PopoverPopup-uQa7G-IO.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-Cy_pKLdw.js → ProviderIcon-xSNRuia-.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-QKUaLtO3.js → ResetPasswordPage-BcVcWbsW.js} +1 -1
- package/dashboard/dist/assets/{Select-BsUrn8Ui.js → Select-Dwix4ZFd.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-Nis0uGZT.js → SelectItemText-Bz5cn5Gk.js} +1 -1
- package/dashboard/dist/assets/{SelfHostPage-DF8EzBEV.js → SelfHostPage-BLocCkUo.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-BYmKzI_v.js → ServiceStatusPage-CzMjS7EQ.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-BsCVe75l.js → SessionsPage-Dqzuthrd.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-CIZ6WmNR.js → SettingsPage-DEdNhzKR.js} +3 -3
- package/dashboard/dist/assets/{SkillsPage-cwHyK0Hp.js → SkillsPage-CqocOQID.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-2S-ud67v.js → TokenGalaxy-B2sMNsM0.js} +1 -1
- package/dashboard/dist/assets/{TooltipPopup-GG7xjDOP.js → TooltipPopup-LzbtjRSA.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-CrbXrVMe.js → TrendMonitor-DpMcMWVh.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-HrhnI3C-.js → WidgetsPage-aKfztwsk.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-sm7UVFon.js → WrappedPage-NoY2hqbF.js} +1 -1
- package/dashboard/dist/assets/__vite-browser-external-BnGukaND.js +45 -0
- package/dashboard/dist/assets/{agent-logos-DGrrmPth.js → agent-logos-Oh8CLAYk.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DOzsdmqR.js → arrow-left-Mwggxctm.js} +1 -1
- package/dashboard/dist/assets/{arrow-right-CHb0kJou.js → arrow-right-Crx-kuck.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-CH8vEEN1.js → arrow-up-right-uwoo8I0B.js} +1 -1
- package/dashboard/dist/assets/{calendar-days-_D5qnyH_.js → calendar-days-C6MeKaqh.js} +1 -1
- package/dashboard/dist/assets/{check-DZLesnNy.js → check-dsWQRYNj.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-QL4xkUtL.js → chevron-down-BIf5bhyB.js} +1 -1
- package/dashboard/dist/assets/{cloud-checkout-DiCcWJVl.js → cloud-checkout-GnFRQdnr.js} +1 -1
- package/dashboard/dist/assets/{composite-DObGcQmb.js → composite-lINFdwLI.js} +1 -1
- package/dashboard/dist/assets/{download-BKp8pusR.js → download-B7eyvOxn.js} +1 -1
- package/dashboard/dist/assets/{external-link-B3p_TVGc.js → external-link-RNTsFDG4.js} +1 -1
- package/dashboard/dist/assets/{flame-Df9OTUym.js → flame-uwCJ6brb.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-DXrEDEYs.js → format-tokens-Bf7JxB4E.js} +1 -1
- package/dashboard/dist/assets/{gift-DtWubiuR.js → gift-BY7kCGBK.js} +1 -1
- package/dashboard/dist/assets/{host-mode-C069A_hB.js → host-mode-Bs-UHw-7.js} +1 -1
- package/dashboard/dist/assets/{icons-lB1kfROy.js → icons-CrLu8vlW.js} +1 -1
- package/dashboard/dist/assets/{index-DsXIWrJx.js → index-CXQag63s.js} +1 -1
- package/dashboard/dist/assets/{index-D356L-jw.js → index-DYIIk93n.js} +1 -1
- package/dashboard/dist/assets/{index-M5BiC0jx.js → index-DieuzFHA.js} +1 -1
- package/dashboard/dist/assets/{info-CSG8OkG4.js → info-BteHQN_N.js} +1 -1
- package/dashboard/dist/assets/{link-2-BkBGu7FX.js → link-2-C1RSbOHv.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-BERDkbsP.js → loader-circle-BM3x6_YL.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-Ce5IvVw2.js → modifiers.esm-BHzOJfH3.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-zKuoJldz.js → monitor-smartphone-Ps3VptSt.js} +1 -1
- package/dashboard/dist/assets/{play-C0x-pxft.js → play-7MpFYU7a.js} +1 -1
- package/dashboard/dist/assets/{plus-DJvks-CX.js → plus-Dk-p9OaZ.js} +1 -1
- package/dashboard/dist/assets/{provider-display-C0e4tAFu.js → provider-display-Czwv4ClR.js} +1 -1
- package/dashboard/dist/assets/{react-Bg0_YfGs.js → react-D9vco0ZF.js} +1 -1
- package/dashboard/dist/assets/{safePolygon-CptquMWZ.js → safePolygon-Ca2iBTNb.js} +1 -1
- package/dashboard/dist/assets/{search-CLESf2Tg.js → search-Z2Hfw99-.js} +1 -1
- package/dashboard/dist/assets/{server-Cdwhp-2m.js → server-Dh_OraRG.js} +1 -1
- package/dashboard/dist/assets/{shield-check-8U4XqmW3.js → shield-check-59NUSZvk.js} +1 -1
- package/dashboard/dist/assets/{skills-api-ioDaxLLo.js → skills-api-Bguk8iPD.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-CEohF5EK.js → sortable.esm-C9M-1k5o.js} +1 -1
- package/dashboard/dist/assets/{store-CyOeiGFE.js → store-nR9Ah4fr.js} +1 -1
- package/dashboard/dist/assets/{terminal-BjgwEAH-.js → terminal-DKTXh9tj.js} +1 -1
- package/dashboard/dist/assets/{trash-Skj6z7D1.js → trash-CQRRKbCs.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-Cworqjzy.js → use-community-stats-BoOd2Hhq.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-DMVWXXHE.js → use-latest-request-guard-vQtFEBIX.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DKJZcYfE.js → use-limits-display-prefs-BRTj9_xd.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-CQF4BLQl.js → use-native-settings-CC6uEn3j.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-B9yoUGUU.js → use-ordered-list-BUx6eIN7.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-BZBrXeyc.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-K00bK2sQ.js → use-session-efficiency-pref-BsUypXPb.js} +1 -1
- package/dashboard/dist/assets/{use-transform-Cfw11yOU.js → use-transform-oomGXI86.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-BE2dJXFd.js → use-usage-limits-CXeCKJZ_.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-BW7y9Tdv.js → useCurrency-DIZEXq5g.js} +1 -1
- package/dashboard/dist/assets/{usePositioner-DhtQcPOC.js → usePositioner-Drh2sy7w.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-BnvzUc-t.js → useTokenFormat-DKURSOqb.js} +1 -1
- package/dashboard/dist/assets/{zap-BQ3BR9On.js → zap-BQ8nGK7b.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/pricing.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/dashboard/dist/terms.html +1 -1
- package/package.json +1 -1
- package/src/lib/pricing/curated-overrides.json +47 -0
- package/src/lib/pricing/matcher.js +11 -3
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/dashboard/dist/assets/DialogDescription-MbuaPFlj.js +0 -1
- package/dashboard/dist/assets/__vite-browser-external-C7JgMYNl.js +0 -45
- 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.
|
|
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
|
|
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;
|