tokentracker-cli 1.3.14 → 1.3.16
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-D5sRTMmp.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-Cle78oKH.js → AchievementsPage-CaiCfchd.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-BPqXDoPP.js → AchievementsSection-D6dTxdUd.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-HsH_Pwsu.js → BadgeDetailModal-C0UrWb9m.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-BWy2-z4Q.js → BotAnimated-CgpBB5FZ.js} +1 -1
- package/dashboard/dist/assets/{Card-DPGBuBDb.js → Card-CuwBiIYz.js} +1 -1
- package/dashboard/dist/assets/{CloudCheckoutPage-ohIQnIhe.js → CloudCheckoutPage-BNCnBR0h.js} +1 -1
- package/dashboard/dist/assets/{CloudPage-OYiiZ4c4.js → CloudPage-CuYXUQnv.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-BmDZmpMi.js → CommandPalette-CV6a_7yK.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-L86uJgyp.js → CommunityStatsModal-Dw-64Tig.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-COQfPXos.js → ConfirmModal-CoFO1Nas.js} +1 -1
- package/dashboard/dist/assets/{Controls-BkKlT6Dz.js → Controls-DB9eQ_rg.js} +1 -1
- package/dashboard/dist/assets/DashboardPage-sZKijU6h.js +1 -0
- package/dashboard/dist/assets/{DateRangePopover-D0UeP8ig.js → DateRangePopover-DgZEnn4X.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-K3CdWKaf.js → DevicePage-YCnJnsmz.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-DKQ2ZVA0.js → DialogClose-BR9QrB34.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-Cx1R3WT7.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-ufFnN-8D.js → DialogTitle-ck8f1qeP.js} +1 -1
- package/dashboard/dist/assets/{ElectricLogo-Bb79UnTo.js → ElectricLogo-nrlBy-l9.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-DlAKIU4I.js → FadeIn-CyJJ3l_P.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-CzwSyhEY.js → HeaderGithubStar-C7BX7loS.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-BEpwekkd.js → HoverTooltip-KGluh6sO.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-C7kpZ9JX.js → IpCheckPage-Ci2ybTDg.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-CfYk0Jzy.js → LandingPage-C9N17IpV.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardPage-XgjAHwpy.js → LeaderboardPage-Cco7iFen.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProBadge-wSlqVjBb.js → LeaderboardProBadge-tmm5NN8p.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfileModal-DaQrNYnu.js → LeaderboardProfileModal-WhjsvZ9Q.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-3SWjG8FQ.js → LeaderboardProfilePage-Ba3oVu5z.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-DvM57ri3.js → LimitsPage-CUa46XJy.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-CY6eDJEk.js → LocalOnlyNotice-BSewrWlY.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-4bdpPQeD.js → LoginCard-CUWn0Tz4.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-Bmw7-b3f.js → LoginModal-UKk3xCsV.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-CEI4nnlT.js → LoginPage-BhxiWgc5.js} +1 -1
- package/dashboard/dist/assets/{PetPage-7Udtc9GY.js → PetPage-BRyxC-Iu.js} +2 -2
- package/dashboard/dist/assets/{PopoverPopup-r2BvRKLO.js → PopoverPopup-D-Tpl294.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-Cy_pKLdw.js → ProviderIcon-htNu1RTN.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-QKUaLtO3.js → ResetPasswordPage-DawMNiM1.js} +1 -1
- package/dashboard/dist/assets/{Select-BsUrn8Ui.js → Select-6WChWtqK.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-Nis0uGZT.js → SelectItemText-DRmxMwo5.js} +1 -1
- package/dashboard/dist/assets/{SelfHostPage-DF8EzBEV.js → SelfHostPage-BMCMrt5I.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-BYmKzI_v.js → ServiceStatusPage-e_7xC0RY.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-BsCVe75l.js → SessionsPage-Xr2FJa6E.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-CIZ6WmNR.js → SettingsPage-Bxq2Mhxz.js} +3 -3
- package/dashboard/dist/assets/{SkillsPage-cwHyK0Hp.js → SkillsPage-CEIBW63c.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-2S-ud67v.js → TokenGalaxy--6ijNK6P.js} +1 -1
- package/dashboard/dist/assets/{TooltipPopup-GG7xjDOP.js → TooltipPopup--TLYUg0c.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-CrbXrVMe.js → TrendMonitor-DjIZyzxp.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-HrhnI3C-.js → WidgetsPage-CzCqGbb4.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-sm7UVFon.js → WrappedPage-B0RMtpvr.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-kAUz3kFs.css → __vite-browser-external-B0m8a6Te.css} +1 -1
- package/dashboard/dist/assets/__vite-browser-external-BsOjTB8Q.js +45 -0
- package/dashboard/dist/assets/{agent-logos-DGrrmPth.js → agent-logos-CSlyeabY.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DOzsdmqR.js → arrow-left-DaqMiXTO.js} +1 -1
- package/dashboard/dist/assets/{arrow-right-CHb0kJou.js → arrow-right-B1p9R8vH.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-CH8vEEN1.js → arrow-up-right-CK_9HuEh.js} +1 -1
- package/dashboard/dist/assets/{calendar-days-_D5qnyH_.js → calendar-days-BVyCx4dJ.js} +1 -1
- package/dashboard/dist/assets/{check-DZLesnNy.js → check-DIfCVsPJ.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-QL4xkUtL.js → chevron-down-DrWxRBXX.js} +1 -1
- package/dashboard/dist/assets/{cloud-checkout-DiCcWJVl.js → cloud-checkout-DOxBG7oS.js} +1 -1
- package/dashboard/dist/assets/{composite-DObGcQmb.js → composite-W1R1XwoE.js} +1 -1
- package/dashboard/dist/assets/{download-BKp8pusR.js → download-CEXAmejX.js} +1 -1
- package/dashboard/dist/assets/{external-link-B3p_TVGc.js → external-link-tDBZy6QP.js} +1 -1
- package/dashboard/dist/assets/{flame-Df9OTUym.js → flame-86y9Xf0g.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-DXrEDEYs.js → format-tokens-BNN9k5mV.js} +1 -1
- package/dashboard/dist/assets/{gift-DtWubiuR.js → gift-BEOvq2zc.js} +1 -1
- package/dashboard/dist/assets/{host-mode-C069A_hB.js → host-mode-UjbNKxFB.js} +1 -1
- package/dashboard/dist/assets/{icons-lB1kfROy.js → icons-DJmZD0si.js} +1 -1
- package/dashboard/dist/assets/{index-DsXIWrJx.js → index-B8kizz-s.js} +1 -1
- package/dashboard/dist/assets/{index-D356L-jw.js → index-BwUwnqE0.js} +1 -1
- package/dashboard/dist/assets/{index-M5BiC0jx.js → index-Ci3CZ-2g.js} +1 -1
- package/dashboard/dist/assets/{info-CSG8OkG4.js → info-ynVg8RzK.js} +1 -1
- package/dashboard/dist/assets/{link-2-BkBGu7FX.js → link-2-B9SLPcBg.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-BERDkbsP.js → loader-circle-FTE9k7Sk.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-Ce5IvVw2.js → modifiers.esm-B4babCm_.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-zKuoJldz.js → monitor-smartphone-CNzgbo-M.js} +1 -1
- package/dashboard/dist/assets/{play-C0x-pxft.js → play-9W4Ua21o.js} +1 -1
- package/dashboard/dist/assets/{plus-DJvks-CX.js → plus-BA85lApI.js} +1 -1
- package/dashboard/dist/assets/{provider-display-C0e4tAFu.js → provider-display-D1ETarsz.js} +1 -1
- package/dashboard/dist/assets/{react-Bg0_YfGs.js → react-VsHxeqq7.js} +1 -1
- package/dashboard/dist/assets/{safePolygon-CptquMWZ.js → safePolygon-CCDOsx-z.js} +1 -1
- package/dashboard/dist/assets/{search-CLESf2Tg.js → search-Svi--7CN.js} +1 -1
- package/dashboard/dist/assets/{server-Cdwhp-2m.js → server-CgHdX6TE.js} +1 -1
- package/dashboard/dist/assets/{shield-check-8U4XqmW3.js → shield-check-Cjv-T4aT.js} +1 -1
- package/dashboard/dist/assets/{skills-api-ioDaxLLo.js → skills-api-Cn8hEYL4.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-CEohF5EK.js → sortable.esm-g3UcmvFU.js} +1 -1
- package/dashboard/dist/assets/{store-CyOeiGFE.js → store-D2gn9bSV.js} +1 -1
- package/dashboard/dist/assets/{terminal-BjgwEAH-.js → terminal-o0jvDfI0.js} +1 -1
- package/dashboard/dist/assets/{trash-Skj6z7D1.js → trash-0cqpTyN6.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-Cworqjzy.js → use-community-stats-BFgORaJS.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-DMVWXXHE.js → use-latest-request-guard-9eZP_jA5.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DKJZcYfE.js → use-limits-display-prefs-BjO3hsmw.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-CQF4BLQl.js → use-native-settings-YKn-htVo.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-B9yoUGUU.js → use-ordered-list-D5h4UwhF.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-C83gmg0F.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-K00bK2sQ.js → use-session-efficiency-pref-BShLuIbk.js} +1 -1
- package/dashboard/dist/assets/{use-transform-Cfw11yOU.js → use-transform-DVZHJPVD.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-BE2dJXFd.js → use-usage-limits-BhJbW76K.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-BW7y9Tdv.js → useCurrency-BmEbDVaa.js} +1 -1
- package/dashboard/dist/assets/{usePositioner-DhtQcPOC.js → usePositioner-nY0YNa-6.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-BnvzUc-t.js → useTokenFormat-CBlBP2aA.js} +1 -1
- package/dashboard/dist/assets/{zap-BQ3BR9On.js → zap-cML2-Nx4.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/ip-check.html +2 -2
- package/dashboard/dist/leaderboard.html +2 -2
- package/dashboard/dist/pricing.html +1 -1
- package/dashboard/dist/share.html +2 -2
- 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/DashboardPage-3dlQBOjz.js +0 -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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<p>The open-source local software remains governed by its MIT license. Buying Cloud is not required to use the local software. You must be at least 18 and authorized to enter into the subscription agreement. If you do not agree to the applicable terms, do not purchase or use the hosted service.</p>
|
|
7
7
|
<h2>2. The service</h2>
|
|
8
8
|
<p>TokenTracker analyzes usage metrics from AI coding tools. Local token collection, cost estimates, provider limits, local charts, exports and desktop features remain free. TokenTracker does not sell AI model tokens or generate AI content for customers.</p>
|
|
9
|
-
<p>Cloud provides hosted cross-device usage analytics, a personal web dashboard, history and exports, and device management
|
|
9
|
+
<p>Cloud provides hosted cross-device usage analytics, a personal web dashboard, history and exports, and device management with an anti-abuse safety cap on registered synchronization devices (not a marketed plan quota). Free community uploads still cover one registered device per account. Members can access 90 days of hourly details and 24 months of daily summaries. Cloud synchronizes usage metrics, not prompts, responses, source code, AI provider credentials, or local project and session records.</p>
|
|
10
10
|
<p>These billing provisions apply to purchases accepted at checkout. Purchasing eligibility and availability are shown on the website. Purchased access begins only after the server verifies a successful payment.</p>
|
|
11
11
|
<h2>3. Accounts</h2>
|
|
12
12
|
<p>Keep your account and billing email accurate. Protect your credentials and contact support if an account is compromised. You are responsible for authorized activity on your account. If you act for an organization, you must have authority to do so.</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tokentracker-cli",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.16",
|
|
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;
|