tokentracker-cli 1.5.4 → 1.5.6

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 (121) hide show
  1. package/THIRD_PARTY_NOTICES.md +10 -0
  2. package/dashboard/dist/THIRD_PARTY_NOTICES.txt +10 -0
  3. package/dashboard/dist/assets/{AchievementBadge-CKNb_cwg.js → AchievementBadge-NKpY___e.js} +1 -1
  4. package/dashboard/dist/assets/{AchievementsPage-u9P8DXJI.js → AchievementsPage-9nXmSX72.js} +2 -2
  5. package/dashboard/dist/assets/{AchievementsSection-BSCUJ4DR.js → AchievementsSection-DttQciSY.js} +1 -1
  6. package/dashboard/dist/assets/{BadgeDetailModal-Bg7cE3Zq.js → BadgeDetailModal-bvWEdJbe.js} +1 -1
  7. package/dashboard/dist/assets/{BotAnimated-C7D2WbQA.js → BotAnimated-ChuUfph8.js} +1 -1
  8. package/dashboard/dist/assets/{Card-B4IqAhai.js → Card-SWtLDXt1.js} +1 -1
  9. package/dashboard/dist/assets/{CloudCheckoutPage-P75pH9Ym.js → CloudCheckoutPage-c2fNl1Rl.js} +1 -1
  10. package/dashboard/dist/assets/{CloudPage-DDEZfmZg.js → CloudPage-CfwDjZMS.js} +2 -2
  11. package/dashboard/dist/assets/{CommandPalette-CER_AklA.js → CommandPalette-tWgPa295.js} +1 -1
  12. package/dashboard/dist/assets/{CommunityStatsModal-Cbb74eib.js → CommunityStatsModal-D7UaaUdM.js} +1 -1
  13. package/dashboard/dist/assets/{ConfirmModal-Q1ZQdZHt.js → ConfirmModal-BrBcKhfW.js} +1 -1
  14. package/dashboard/dist/assets/{Controls-DaGOfcoz.js → Controls-CcvBkk7W.js} +1 -1
  15. package/dashboard/dist/assets/DashboardPage-DJSgRHGq.js +1 -0
  16. package/dashboard/dist/assets/{DateRangePopover-DSS1Ira_.js → DateRangePopover-BkN_pird.js} +1 -1
  17. package/dashboard/dist/assets/{DevicePage-6zPLYydh.js → DevicePage-BbUL7WwT.js} +1 -1
  18. package/dashboard/dist/assets/{DialogClose-DdCQ36LK.js → DialogClose-BXO8SBFr.js} +1 -1
  19. package/dashboard/dist/assets/DialogDescription-B1HyKP0x.js +1 -0
  20. package/dashboard/dist/assets/{DialogTitle-BjP217Y1.js → DialogTitle-Du332auj.js} +1 -1
  21. package/dashboard/dist/assets/{ElectricLogo-Dhq8PM4h.js → ElectricLogo-CXLYfOt7.js} +1 -1
  22. package/dashboard/dist/assets/{FadeIn-CGNbED4E.js → FadeIn-HSQBOc8B.js} +1 -1
  23. package/dashboard/dist/assets/{HeaderGithubStar-DwqEFzb6.js → HeaderGithubStar-D5tyQDGE.js} +1 -1
  24. package/dashboard/dist/assets/{HoverTooltip-CQZTgyQy.js → HoverTooltip-BhidhbnD.js} +1 -1
  25. package/dashboard/dist/assets/{IpCheckPage-Bz09HXLn.js → IpCheckPage-WMEF1oS3.js} +1 -1
  26. package/dashboard/dist/assets/{LandingPage-DC-lZsYR.js → LandingPage-BmO-59ZP.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardPage-D8MpLM_t.js → LeaderboardPage-C2WyniEt.js} +2 -2
  28. package/dashboard/dist/assets/{LeaderboardProBadge-pdXgokhE.js → LeaderboardProBadge-DAZnMRNn.js} +1 -1
  29. package/dashboard/dist/assets/{LeaderboardProfileModal-nHZLiE0m.js → LeaderboardProfileModal-D1BxcloV.js} +3 -3
  30. package/dashboard/dist/assets/{LeaderboardProfilePage-BKv3oIAW.js → LeaderboardProfilePage-RPJDTwpG.js} +1 -1
  31. package/dashboard/dist/assets/{LimitsPage-TmRTgSCb.js → LimitsPage-9ZOhKvn5.js} +1 -1
  32. package/dashboard/dist/assets/{LocalOnlyNotice-aF01udyR.js → LocalOnlyNotice-CH6w4hRw.js} +1 -1
  33. package/dashboard/dist/assets/{LoginCard-BaroD0Ct.js → LoginCard-D24HsRjs.js} +1 -1
  34. package/dashboard/dist/assets/{LoginModal-0jgyMGVM.js → LoginModal-sLvHyi9U.js} +1 -1
  35. package/dashboard/dist/assets/{LoginPage-BUx8U58i.js → LoginPage-PIvLEw1Y.js} +1 -1
  36. package/dashboard/dist/assets/{PetPage-CpOjtJqg.js → PetPage-DYcw_4P1.js} +2 -2
  37. package/dashboard/dist/assets/{PopoverPopup-BYjfer-M.js → PopoverPopup-D7ZCWq5f.js} +1 -1
  38. package/dashboard/dist/assets/{ProviderIcon-NtYa2h0u.js → ProviderIcon-B0kB52K-.js} +1 -1
  39. package/dashboard/dist/assets/{ResetPasswordPage-CYUg7TR1.js → ResetPasswordPage-B_NT4Xfl.js} +1 -1
  40. package/dashboard/dist/assets/{Select-CYP95o5y.js → Select-BtxjjP2Q.js} +1 -1
  41. package/dashboard/dist/assets/{SelectItemText-BCDfusOM.js → SelectItemText-Co1M6XRC.js} +1 -1
  42. package/dashboard/dist/assets/{SelfHostPage-BmVc2rIT.js → SelfHostPage-XadfhFnd.js} +1 -1
  43. package/dashboard/dist/assets/{ServiceStatusPage-Dyp8NwIn.js → ServiceStatusPage-ZEJyAxsQ.js} +1 -1
  44. package/dashboard/dist/assets/{SessionsPage-tGEj6Ztz.js → SessionsPage-Cte1taUu.js} +1 -1
  45. package/dashboard/dist/assets/{SettingsPage-CCMbq5wc.js → SettingsPage-D4qHgIxn.js} +3 -3
  46. package/dashboard/dist/assets/{SkillsPage-C4O4fbaQ.js → SkillsPage-CkQCk2uF.js} +1 -1
  47. package/dashboard/dist/assets/TokenGalaxy-Bx1vr4b0.js +4431 -0
  48. package/dashboard/dist/assets/{TooltipPopup-BJfFYesG.js → TooltipPopup-DQW8FWJO.js} +1 -1
  49. package/dashboard/dist/assets/{TrendMonitor-CElakFSU.js → TrendMonitor-BMNcY3N8.js} +1 -1
  50. package/dashboard/dist/assets/{WidgetsPage-Cvd1LbJm.js → WidgetsPage-luRTge7O.js} +1 -1
  51. package/dashboard/dist/assets/{WrappedPage-wRC1tE_a.js → WrappedPage-B1j3WgXx.js} +1 -1
  52. package/dashboard/dist/assets/{__vite-browser-external-V4TPLCJG.js → __vite-browser-external-CvvpsW-U.js} +3 -3
  53. package/dashboard/dist/assets/{agent-logos-Ba57HF3w.js → agent-logos-DL4fdks6.js} +1 -1
  54. package/dashboard/dist/assets/{arrow-left-B1bKnxXL.js → arrow-left-DiOsjgdu.js} +1 -1
  55. package/dashboard/dist/assets/{arrow-right-DrOlKzX5.js → arrow-right-DBFXV7GU.js} +1 -1
  56. package/dashboard/dist/assets/{arrow-up-right-hlYpo3yw.js → arrow-up-right-BIvpDQHo.js} +1 -1
  57. package/dashboard/dist/assets/{calendar-days-CSY6SEsI.js → calendar-days--psnXUPW.js} +1 -1
  58. package/dashboard/dist/assets/{check-xrP1gLw5.js → check-DLqbsN00.js} +1 -1
  59. package/dashboard/dist/assets/{chevron-down-6-zT5n9d.js → chevron-down-C0P0oLzP.js} +1 -1
  60. package/dashboard/dist/assets/{cloud-checkout-BZymZD4K.js → cloud-checkout-NSmb7QNy.js} +1 -1
  61. package/dashboard/dist/assets/{composite-C9izWafa.js → composite-D7ahPHYQ.js} +1 -1
  62. package/dashboard/dist/assets/{copy-Dkas5wZX.js → copy-COD7vwd6.js} +1 -1
  63. package/dashboard/dist/assets/{download-CagGRs0_.js → download-CpSUX4U-.js} +1 -1
  64. package/dashboard/dist/assets/{external-link-DRl10hxd.js → external-link-DXUjrooT.js} +1 -1
  65. package/dashboard/dist/assets/{flame-CkvmsTFB.js → flame-Dl3ZT9oo.js} +1 -1
  66. package/dashboard/dist/assets/{format-tokens-BtwhO3mV.js → format-tokens-Ci49THbK.js} +1 -1
  67. package/dashboard/dist/assets/{gift-YzjXkMQx.js → gift-DTHCN1Of.js} +1 -1
  68. package/dashboard/dist/assets/{icons-CHhKYs0u.js → icons-CB9s1e1k.js} +1 -1
  69. package/dashboard/dist/assets/index-BGT8ZQyn.js +502 -0
  70. package/dashboard/dist/assets/{index-DojzoMqd.js → index-DFdfNKJM.js} +1 -1
  71. package/dashboard/dist/assets/{index-CJknN9Jd.js → index-DeX4t_5p.js} +1 -1
  72. package/dashboard/dist/assets/{index-B0MQZTrM.js → index-Dozwi-Se.js} +1 -1
  73. package/dashboard/dist/assets/{info-Torep-Ti.js → info-CqM2wmSI.js} +1 -1
  74. package/dashboard/dist/assets/{link-2-DE5Yu-z6.js → link-2-Byo7Rj3t.js} +1 -1
  75. package/dashboard/dist/assets/{loader-circle-BL8LxD9n.js → loader-circle-CMxd78Na.js} +1 -1
  76. package/dashboard/dist/assets/{local-usage-transfer-8X1InWix.js → local-usage-transfer-CBjnoeck.js} +1 -1
  77. package/dashboard/dist/assets/{modifiers.esm-D60-6UQa.js → modifiers.esm-Oowlk_FC.js} +1 -1
  78. package/dashboard/dist/assets/module-BbVsRaE2.js +3 -0
  79. package/dashboard/dist/assets/{monitor-smartphone-C-IFPjqk.js → monitor-smartphone-B2EgB_9q.js} +1 -1
  80. package/dashboard/dist/assets/{play-n6uWrdH9.js → play-BSuP-UBL.js} +1 -1
  81. package/dashboard/dist/assets/{plus-B2f6TaNj.js → plus-BWemSIuC.js} +1 -1
  82. package/dashboard/dist/assets/{provider-display-DWqCEcsP.js → provider-display-BpzWuFDH.js} +1 -1
  83. package/dashboard/dist/assets/{react-B-zfi_j6.js → react-cIJ4zx62.js} +1 -1
  84. package/dashboard/dist/assets/{safePolygon-C2PsvI-v.js → safePolygon-C_ZMtbgL.js} +1 -1
  85. package/dashboard/dist/assets/{search-DZOaTLF9.js → search-BK7eyNds.js} +1 -1
  86. package/dashboard/dist/assets/{server-DIp4Qfsv.js → server-BqQHX-rd.js} +1 -1
  87. package/dashboard/dist/assets/{shield-check-Cs2M8-iT.js → shield-check-CO5U6gRw.js} +1 -1
  88. package/dashboard/dist/assets/{skills-api-CoYy6Tov.js → skills-api-CMye76ag.js} +1 -1
  89. package/dashboard/dist/assets/{sortable.esm-B5_hjIfs.js → sortable.esm-Bvb61Lvj.js} +1 -1
  90. package/dashboard/dist/assets/{store-BLXqtJzb.js → store-CICV1KXb.js} +1 -1
  91. package/dashboard/dist/assets/{terminal-CEMKX3ba.js → terminal-BKMWT1Ux.js} +1 -1
  92. package/dashboard/dist/assets/{trash-DOWYaXjK.js → trash-D2Oqim4r.js} +1 -1
  93. package/dashboard/dist/assets/{use-community-stats-BjRI1Bzz.js → use-community-stats-CEqwmjct.js} +1 -1
  94. package/dashboard/dist/assets/{use-latest-request-guard-T7L5qBU6.js → use-latest-request-guard-CTuzzu3F.js} +1 -1
  95. package/dashboard/dist/assets/{use-limits-display-prefs-vNIrCPZA.js → use-limits-display-prefs-CA2BLWkY.js} +1 -1
  96. package/dashboard/dist/assets/{use-native-settings-Cg5Zb4q_.js → use-native-settings-B54wHSj9.js} +1 -1
  97. package/dashboard/dist/assets/{use-ordered-list-BF-wIvmG.js → use-ordered-list--PU9ekxY.js} +1 -1
  98. package/dashboard/dist/assets/use-reduced-motion-CZ8_YWc2.js +1 -0
  99. package/dashboard/dist/assets/{use-transform-CbJ1IcNc.js → use-transform-BRyR8szg.js} +1 -1
  100. package/dashboard/dist/assets/{use-usage-limits-Dgg3jpC4.js → use-usage-limits-sufKdfDY.js} +1 -1
  101. package/dashboard/dist/assets/{useCurrency-3oBHWfSe.js → useCurrency-6oy7kSX8.js} +1 -1
  102. package/dashboard/dist/assets/{usePositioner-D0YrIW0A.js → usePositioner-ZtDdVdJg.js} +1 -1
  103. package/dashboard/dist/assets/{useTokenFormat-DZAHWE_R.js → useTokenFormat-tiOJ-PeE.js} +1 -1
  104. package/dashboard/dist/assets/{zap-kLub6Jiv.js → zap-Dr1dXUjN.js} +1 -1
  105. package/dashboard/dist/brand-logos/factory.svg +8 -0
  106. package/dashboard/dist/index.html +1 -1
  107. package/dashboard/dist/ip-check.html +1 -1
  108. package/dashboard/dist/leaderboard.html +1 -1
  109. package/dashboard/dist/share.html +1 -1
  110. package/package.json +4 -4
  111. package/src/lib/cursor-config.js +15 -1
  112. package/src/lib/pricing/curated-overrides.json +14 -0
  113. package/src/lib/pricing/seed-snapshot.json +1 -1
  114. package/src/lib/rollout.js +13 -4
  115. package/src/lib/usage-limits.js +266 -10
  116. package/dashboard/dist/assets/DashboardPage-CXI7RmxO.js +0 -1
  117. package/dashboard/dist/assets/DialogDescription-DztHQvj-.js +0 -1
  118. package/dashboard/dist/assets/TokenGalaxy-D2d738xr.js +0 -4426
  119. package/dashboard/dist/assets/index-C2DK8av-.js +0 -502
  120. package/dashboard/dist/assets/module-ZyVsxBG_.js +0 -3
  121. package/dashboard/dist/assets/use-reduced-motion-B9K5mIx4.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "description": "Local-first AI coding token usage and cost tracker for 47 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -51,7 +51,7 @@
51
51
  "version": "node scripts/sync-versions.cjs && git add TokenTrackerBar/project.yml TokenTrackerWin/TokenTrackerWin.csproj TokenTrackerLinux/package.json TokenTrackerLinux/package-lock.json TokenTrackerLinux/src-tauri/Cargo.toml TokenTrackerLinux/src-tauri/Cargo.lock TokenTrackerLinux/src-tauri/tauri.conf.json TokenTrackerLinux/packaging/arch/tokentracker-linux/PKGBUILD"
52
52
  },
53
53
  "dependencies": {
54
- "@journeyapps/wa-sqlite": "2.0.8",
54
+ "@journeyapps/wa-sqlite": "2.0.10",
55
55
  "@mongodb-js/zstd": "^2.0.1",
56
56
  "@sentry/node": "^11.8.0",
57
57
  "smol-toml": "^1.9.0",
@@ -60,12 +60,12 @@
60
60
  },
61
61
  "devDependencies": {
62
62
  "@electric-sql/pglite": "^0.5.8",
63
- "@sourcegraph/scip-typescript": "^0.4.0",
63
+ "@sourcegraph/scip-typescript": "^0.6.0",
64
64
  "@waffo/pancake-ts": "0.25.0",
65
65
  "alipay-sdk": "4.14.0",
66
66
  "esbuild": "0.28.2",
67
67
  "pngjs": "^7.0.0",
68
- "sql.js": "1.15.1",
68
+ "sql.js": "1.15.2",
69
69
  "urllib": "4.9.1"
70
70
  },
71
71
  "repository": {
@@ -500,7 +500,21 @@ function parseCursorCsv(csvText) {
500
500
  cost: toFloat(fields[costIdx]),
501
501
  };
502
502
 
503
- if (record.totalTokens <= 0 && record.inputTokens <= 0 && record.outputTokens <= 0) continue;
503
+ // Token presence is judged on the component columns (not the Total
504
+ // column) so a cache-read-only row survives even when Cursor's Total
505
+ // disagrees — the isAllZeroUsage gate downstream counts these same
506
+ // component fields. Request-only rows (e.g. bot/automation calls that
507
+ // consumed no tokens, issue #998) are real usage events: they are kept
508
+ // when the row carries a model identity, so parseCursorApiIncremental
509
+ // can import them as 0-token/1-request records pairing with the #997
510
+ // cloud-side request retention. Rows with no tokens and no model are
511
+ // degenerate placeholders and stay dropped.
512
+ const hasTokens =
513
+ record.inputTokens > 0 ||
514
+ record.cacheWriteTokens > 0 ||
515
+ record.cacheReadTokens > 0 ||
516
+ record.outputTokens > 0;
517
+ if (!hasTokens && !String(record.model || "").trim()) continue;
504
518
 
505
519
  records.push(record);
506
520
  }
@@ -731,6 +731,20 @@
731
731
  "cache_write": 0.1,
732
732
  "note": "StepFun Step 3.5 Flash incl. dated snapshots like step-3.5-flash-2603 (issue #283). Official platform.stepfun.ai pricing: $0.10 / $0.02 (cache hit) / $0.30 per MTok in/read/out. No published cache-write surcharge, so cache_write = input."
733
733
  },
734
+ "grok-4.7": {
735
+ "input": 2.0,
736
+ "output": 6.0,
737
+ "cache_read": 0.5,
738
+ "cache_write": 0,
739
+ "note": "xAI grok-4.7 short-context rates (docs.x.ai/developers/pricing, verified 2026-11-03): $2 / $0.50 / $6 per MTok input/cached/output below 200k prompt tokens. Same numbers as cursor-grok-4.7, kept as its own key so the bare API id resolves outside the Cursor normalizer. No cache-write rate is published, so cache_write stays 0 like the other Grok entries. Requests whose prompt reaches 200k tokens are billed entirely at the long-context rates ($4 / $1 / $12); the single flat rate here cannot express that tier."
740
+ },
741
+ "grok-4.7-build-fast": {
742
+ "input": 4.0,
743
+ "output": 12.0,
744
+ "cache_read": 1.0,
745
+ "cache_write": 0,
746
+ "note": "Grok 4.7 Fast as served in Grok Build (model id grok-4.7-build-fast in ZCode). xAI documents it as 2x the standard grok-4.7 token rates, 1.5x for long-context requests: $4 / $1 / $12 per MTok input/cached/output below 200k prompt tokens, $6 / $1.50 / $18 once the prompt reaches 200k (docs.x.ai/developers/pricing, verified 2026-11-03). It is not on the public xAI API and Grok Build's free tier excludes it. Same short-context numbers as cursor-grok-4.7-fast; the Cursor normalizer only rewrites the cursor source, so this id needs its own key. No cache-write rate is published, so cache_write stays 0. The flat rate is the short-context rate; the single-rate table cannot express the long-context tier."
747
+ },
734
748
  "grok-4.5-build": {
735
749
  "input": 2.0,
736
750
  "output": 6.0,