tokentracker-cli 0.91.0 → 0.91.3

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 (116) hide show
  1. package/README.de.md +6 -5
  2. package/README.ja.md +8 -5
  3. package/README.ko.md +8 -5
  4. package/README.md +6 -5
  5. package/README.zh-CN.md +5 -4
  6. package/dashboard/dist/assets/{AchievementBadge-iyRg0rYF.js → AchievementBadge-LHOuekQ3.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-CkBm3bN3.js → AchievementsPage-DNzeYWBl.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-a4Z7VtlP.js → AchievementsSection-Ch5dImt8.js} +1 -1
  9. package/dashboard/dist/assets/{BadgeDetailModal-DHTN0Ky6.js → BadgeDetailModal-CuikWkUy.js} +1 -1
  10. package/dashboard/dist/assets/{Card-CdygGEqz.js → Card-Chwjmxjz.js} +1 -1
  11. package/dashboard/dist/assets/{ClawdAnimated-D-Z823Nc.js → ClawdAnimated-BdB7aycS.js} +1 -1
  12. package/dashboard/dist/assets/{CommandPalette-VGkj8w2X.js → CommandPalette-BMwuSEWM.js} +1 -1
  13. package/dashboard/dist/assets/{CommunityStatsModal-BDT4xqfF.js → CommunityStatsModal-eEDF-xn8.js} +1 -1
  14. package/dashboard/dist/assets/{ConfirmModal-BIKv4AlL.js → ConfirmModal-Be7f6XdL.js} +1 -1
  15. package/dashboard/dist/assets/{Controls-BkZVm9t1.js → Controls-CtBFPCBY.js} +1 -1
  16. package/dashboard/dist/assets/{DashboardPage-BFkdjUdd.js → DashboardPage-M0p-SU-f.js} +1 -1
  17. package/dashboard/dist/assets/{DevicePage-BGw861bu.js → DevicePage-CAfcUond.js} +1 -1
  18. package/dashboard/dist/assets/{DialogClose-CSEl6ru8.js → DialogClose-kd1wIljN.js} +1 -1
  19. package/dashboard/dist/assets/DialogDescription-CjJLpfCL.js +1 -0
  20. package/dashboard/dist/assets/{DialogTitle-CWPdu5V-.js → DialogTitle-DhB-tbnZ.js} +1 -1
  21. package/dashboard/dist/assets/{FadeIn-CdCANtvs.js → FadeIn-B8eRWBdy.js} +1 -1
  22. package/dashboard/dist/assets/{HeaderGithubStar-dQQnH85f.js → HeaderGithubStar-DmWep8uP.js} +1 -1
  23. package/dashboard/dist/assets/{HoverTooltip-CqJUI-WG.js → HoverTooltip-DDyTZli0.js} +1 -1
  24. package/dashboard/dist/assets/{IpCheckPage-BRqTXlSu.js → IpCheckPage-CN8hYm4o.js} +1 -1
  25. package/dashboard/dist/assets/{LandingPage-DhMTgDng.js → LandingPage-B3cHASqK.js} +2 -2
  26. package/dashboard/dist/assets/{LeaderboardAvatar-BrGcByG1.js → LeaderboardAvatar-CEcLXrJL.js} +1 -1
  27. package/dashboard/dist/assets/{LeaderboardPage-BmdopPjo.js → LeaderboardPage-H6HW9hon.js} +2 -2
  28. package/dashboard/dist/assets/{LeaderboardProfileModal-DRZqPo-A.js → LeaderboardProfileModal-B_5PyjRA.js} +4 -4
  29. package/dashboard/dist/assets/{LeaderboardProfilePage-CTbC39KX.js → LeaderboardProfilePage-DR9KWLWv.js} +3 -3
  30. package/dashboard/dist/assets/{LimitsPage-B7AuLq1S.js → LimitsPage-Da0hRxO_.js} +1 -1
  31. package/dashboard/dist/assets/{LocalOnlyNotice-DyIAspoq.js → LocalOnlyNotice-DuTdva_n.js} +1 -1
  32. package/dashboard/dist/assets/LoginCard-DOL3osrj.js +1 -0
  33. package/dashboard/dist/assets/{LoginModal-D3bmr_jI.js → LoginModal-DBmaQL2L.js} +1 -1
  34. package/dashboard/dist/assets/{LoginPage-D7SgmEhZ.js → LoginPage-Dk08VrkC.js} +1 -1
  35. package/dashboard/dist/assets/{PetPage-5A3Q0zlw.js → PetPage-BbCIdpzx.js} +1 -1
  36. package/dashboard/dist/assets/{PopoverPopup-ajEhdI8m.js → PopoverPopup-C1fJZ4qt.js} +1 -1
  37. package/dashboard/dist/assets/ProviderIcon-FfLD-f73.js +1 -0
  38. package/dashboard/dist/assets/{ResetPasswordPage-Bwbt8tH2.js → ResetPasswordPage-Bg7eVc6L.js} +1 -1
  39. package/dashboard/dist/assets/{SegmentedControl-BSa5hMnN.js → SegmentedControl-CFNHcUz7.js} +1 -1
  40. package/dashboard/dist/assets/{Select-kPKDGb7M.js → Select-B0Q0eDcJ.js} +1 -1
  41. package/dashboard/dist/assets/{SelectItemText-DNgLclTV.js → SelectItemText-BVbLYxSQ.js} +1 -1
  42. package/dashboard/dist/assets/{ServiceStatusPage-C1j7rPDp.js → ServiceStatusPage-DCZH2kz5.js} +1 -1
  43. package/dashboard/dist/assets/{SessionsPage-BgoKs_Yq.js → SessionsPage-DO5Et7ss.js} +2 -2
  44. package/dashboard/dist/assets/{SettingsPage-BUaPftV0.js → SettingsPage-afgxGfzT.js} +2 -2
  45. package/dashboard/dist/assets/{SkillsPage-C5GkzfWW.js → SkillsPage-DDKiHCF7.js} +1 -1
  46. package/dashboard/dist/assets/{TokenGalaxy-DZffAa_0.js → TokenGalaxy-DV1Xoe5z.js} +1 -1
  47. package/dashboard/dist/assets/{ToolbarRootContext-CuLP92P_.js → ToolbarRootContext-DNckd9Qz.js} +1 -1
  48. package/dashboard/dist/assets/TrendMonitor-CliMJxCC.js +19 -0
  49. package/dashboard/dist/assets/{WidgetsPage-BUhiCpcq.js → WidgetsPage-BrwG6YMM.js} +1 -1
  50. package/dashboard/dist/assets/{WrappedPage-sNFISXVG.js → WrappedPage-Ft9YJd0D.js} +1 -1
  51. package/dashboard/dist/assets/{__vite-browser-external-Cyw7ZNtj.js → __vite-browser-external-C6_BtvDo.js} +4 -3
  52. package/dashboard/dist/assets/agent-logos-yYNu1ZUy.js +1 -0
  53. package/dashboard/dist/assets/{arrow-up-right-BcRkt7hr.js → arrow-up-right-B_K57Vbg.js} +1 -1
  54. package/dashboard/dist/assets/{check-qhr4U2S5.js → check-xH63o2xJ.js} +1 -1
  55. package/dashboard/dist/assets/{chevron-right-iLGEAP7_.js → chevron-right-D3F2rAfr.js} +1 -1
  56. package/dashboard/dist/assets/{copy-BhEPCq-q.js → copy-WPfJGGI0.js} +1 -1
  57. package/dashboard/dist/assets/{download-D7O1ZzsX.js → download-BgtWtEXI.js} +1 -1
  58. package/dashboard/dist/assets/{external-link-CY2kK2hC.js → external-link-DSHGoZRM.js} +1 -1
  59. package/dashboard/dist/assets/{flame-D4FPuBNn.js → flame-CNGl6Qac.js} +1 -1
  60. package/dashboard/dist/assets/{format-tokens-CVHJ7Hdh.js → format-tokens-jVm2UX7Y.js} +1 -1
  61. package/dashboard/dist/assets/{icons-B_-51UXa.js → icons-B1JZg-Id.js} +1 -1
  62. package/dashboard/dist/assets/{index-cwdr25Zm.js → index-BTZibjLi.js} +1 -1
  63. package/dashboard/dist/assets/{index-Djv-aJy0.js → index-BjD81Qce.js} +1 -1
  64. package/dashboard/dist/assets/{index-ClVWat-1.js → index-CUFHknAy.js} +1 -1
  65. package/dashboard/dist/assets/{info-DOab0eZz.js → info-CLM460KM.js} +1 -1
  66. package/dashboard/dist/assets/{limits-providers-CESm2d6B.js → limits-providers-CFO4O1qh.js} +1 -1
  67. package/dashboard/dist/assets/{link-2-B4LMsC4m.js → link-2-BHOsUnAI.js} +1 -1
  68. package/dashboard/dist/assets/{loader-circle-CPx6wpSn.js → loader-circle-CgcIQi92.js} +1 -1
  69. package/dashboard/dist/assets/{maximize-2-C9z8mbdn.js → maximize-2-DvqfuJEA.js} +1 -1
  70. package/dashboard/dist/assets/{modifiers.esm-5xRgAl_R.js → modifiers.esm-CNiwIkPh.js} +1 -1
  71. package/dashboard/dist/assets/module-CV1mYFsv.js +3 -0
  72. package/dashboard/dist/assets/{monitor-smartphone-B9HAspdR.js → monitor-smartphone-BLutpxrG.js} +1 -1
  73. package/dashboard/dist/assets/provider-display-BxIgWUEa.js +42 -0
  74. package/dashboard/dist/assets/{react-C45OGvDd.js → react-CM-ozVnh.js} +1 -1
  75. package/dashboard/dist/assets/{search-Bg1qyEdz.js → search-4T07INKt.js} +1 -1
  76. package/dashboard/dist/assets/{skills-api-a8pi7UTd.js → skills-api-EXMD3LD1.js} +1 -1
  77. package/dashboard/dist/assets/{sortable.esm-CtPp8cFA.js → sortable.esm-jC6mPJiL.js} +1 -1
  78. package/dashboard/dist/assets/{store-b8zXM1yr.js → store-CvSEdgf2.js} +1 -1
  79. package/dashboard/dist/assets/{terminal-CPf0K0Fn.js → terminal-D9fyE2pP.js} +1 -1
  80. package/dashboard/dist/assets/{trash-2-uorzBdA0.js → trash-2-QLUsAY3l.js} +1 -1
  81. package/dashboard/dist/assets/{use-community-stats-DaVwywsM.js → use-community-stats-Chrt3kpU.js} +1 -1
  82. package/dashboard/dist/assets/{use-limits-display-prefs-UIzz7PJ3.js → use-limits-display-prefs-BJJd750e.js} +1 -1
  83. package/dashboard/dist/assets/{use-ordered-list-C2XOfMH3.js → use-ordered-list-BBJp5lFv.js} +1 -1
  84. package/dashboard/dist/assets/use-reduced-motion-BvXZCGFC.js +1 -0
  85. package/dashboard/dist/assets/{use-session-efficiency-pref-D5KHakYg.js → use-session-efficiency-pref-BXbvx2Ht.js} +1 -1
  86. package/dashboard/dist/assets/{use-transform-Cfo_2_id.js → use-transform-BVp_MUsU.js} +1 -1
  87. package/dashboard/dist/assets/{use-usage-limits-CANTpxrA.js → use-usage-limits-Dk3EkeIs.js} +1 -1
  88. package/dashboard/dist/assets/{useCurrency-CjvWekKH.js → useCurrency-Bi88Sd__.js} +1 -1
  89. package/dashboard/dist/assets/{useScrollLock-ChQdbuJg.js → useScrollLock-if34g2H-.js} +1 -1
  90. package/dashboard/dist/assets/{useTokenFormat-4MY04JPl.js → useTokenFormat-C2cz-5qJ.js} +1 -1
  91. package/dashboard/dist/assets/{zap-BSXHFUBb.js → zap-D1yHmcQR.js} +1 -1
  92. package/dashboard/dist/index.html +12 -10
  93. package/dashboard/dist/ip-check.html +1 -1
  94. package/dashboard/dist/leaderboard.html +1 -1
  95. package/dashboard/dist/llms.txt +2 -1
  96. package/dashboard/dist/share.html +1 -1
  97. package/package.json +2 -2
  98. package/src/commands/init.js +2 -1
  99. package/src/commands/status.js +46 -0
  100. package/src/commands/sync.js +188 -4
  101. package/src/lib/account-usage-dedup.js +267 -0
  102. package/src/lib/local-api.js +4 -0
  103. package/src/lib/pricing/curated-overrides.json +15 -9
  104. package/src/lib/pricing/index.js +32 -1
  105. package/src/lib/pricing/seed-snapshot.json +1 -1
  106. package/src/lib/rollout.js +730 -1
  107. package/src/lib/source-metadata.js +1 -1
  108. package/src/lib/trae-cn-config.js +539 -0
  109. package/dashboard/dist/assets/DialogDescription-DfNXnqay.js +0 -1
  110. package/dashboard/dist/assets/LoginCard-LcOaKaCK.js +0 -1
  111. package/dashboard/dist/assets/ProviderIcon-C4yuu9FG.js +0 -1
  112. package/dashboard/dist/assets/TrendMonitor-BKLAKJmT.js +0 -19
  113. package/dashboard/dist/assets/agent-logos-Bwf2YFHS.js +0 -1
  114. package/dashboard/dist/assets/module-BRJxSJmz.js +0 -3
  115. package/dashboard/dist/assets/provider-display-C0NS0EvN.js +0 -42
  116. package/dashboard/dist/assets/use-reduced-motion-CNyMWBog.js +0 -1
@@ -2,7 +2,7 @@
2
2
  "_meta": {
3
3
  "note": "Curated price overrides. Always wins over LiteLLM. Two reasons to live here: (1) self-defined alias names that LiteLLM will never carry (kiro-*, hy3-*, composer-*, kimi-for-coding, free-tier OpenRouter routes); (2) prices we want to pin even if LiteLLM has the model (e.g. cache_write fields LiteLLM often omits). Units: USD per million tokens. Edit this file to override pricing without redeploying.",
4
4
  "units": "usd_per_million_tokens",
5
- "deepseek_v4_pro_pricing_note": "The 2026-05-31 promotional-expiry warning is obsolete: api-docs.deepseek.com/quick_start/pricing verified on 2026-06-10 still lists input $0.435/M, output $0.87/M, cache_read $0.003625/M as the official v4-pro rates (the discount became the list price). Do NOT 'restore' the old 4x rates; re-verify against the official page before any change."
5
+ "deepseek_v4_pricing_note": "Official DeepSeek V4 pricing verified on 2026-08-21. Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are off-peak at half price. Exact entries store peak rates. computeRowCost applies the time-of-use discount from each row's UTC hour_start."
6
6
  },
7
7
  "exact": {
8
8
  "claude-fable-5": {
@@ -133,16 +133,22 @@
133
133
  "cache_write": 0
134
134
  },
135
135
  "deepseek-v4-flash": {
136
- "input": 0.14,
137
- "output": 0.28,
138
- "cache_read": 0.0028,
139
- "cache_write": 0.14
136
+ "input": 0.44,
137
+ "output": 1.32,
138
+ "cache_read": 0.014,
139
+ "cache_write": 0.44
140
140
  },
141
141
  "deepseek-v4-pro": {
142
- "input": 0.435,
143
- "output": 0.87,
144
- "cache_read": 0.003625,
145
- "cache_write": 0.435
142
+ "input": 1.32,
143
+ "output": 3.96,
144
+ "cache_read": 0.044,
145
+ "cache_write": 1.32
146
+ },
147
+ "deepseek-v4-flash-vision-exp": {
148
+ "input": 0.44,
149
+ "output": 1.32,
150
+ "cache_read": 0.014,
151
+ "cache_write": 0.44
146
152
  },
147
153
  "deepseek-chat": {
148
154
  "input": 0.14,
@@ -22,6 +22,10 @@ const PI_SUBSCRIPTION_SOURCES = new Set([
22
22
  "prime-agent-copilot",
23
23
  ]);
24
24
  const SEED_SNAPSHOT_PATH = path.resolve(__dirname, "seed-snapshot.json");
25
+ const DEEPSEEK_TIME_PRICED_MODELS = [
26
+ "deepseek-v4-flash",
27
+ "deepseek-v4-pro",
28
+ ];
25
29
 
26
30
  // Sync seed load. Done at require-time so callers that haven't awaited
27
31
  // ensurePricingLoaded() (e.g. tests, vite mock startup, edge functions) still
@@ -117,6 +121,32 @@ function getModelPricing(model, opts = {}) {
117
121
  return ZERO_PRICING;
118
122
  }
119
123
 
124
+ function isDeepSeekTimePricedModel(model) {
125
+ const lower = String(model || "").toLowerCase();
126
+ return DEEPSEEK_TIME_PRICED_MODELS.some((name) => lower.includes(name));
127
+ }
128
+
129
+ function isDeepSeekOffPeak(row) {
130
+ if (row?.pricing_tier === "off_peak") return true;
131
+ if (row?.pricing_tier === "peak") return false;
132
+ const timestamp = Date.parse(String(row?.hour_start || ""));
133
+ if (!Number.isFinite(timestamp)) return false;
134
+ const hour = new Date(timestamp).getUTCHours();
135
+ return !((hour >= 1 && hour < 4) || (hour >= 6 && hour < 10));
136
+ }
137
+
138
+ function getRowPricing(row) {
139
+ const pricing = getModelPricing(row?.model, { source: row?.source });
140
+ if (!isDeepSeekTimePricedModel(row?.model) || !isDeepSeekOffPeak(row)) return pricing;
141
+ return {
142
+ ...pricing,
143
+ input: (pricing.input || 0) * 0.5,
144
+ output: (pricing.output || 0) * 0.5,
145
+ cache_read: (pricing.cache_read || 0) * 0.5,
146
+ cache_write: (pricing.cache_write || 0) * 0.5,
147
+ };
148
+ }
149
+
120
150
  // Same formula and Codex/every-code reasoning-folding rule as the previous
121
151
  // computeRowCost in src/lib/local-api.js. Moved here so vite mock + local
122
152
  // server share one source of truth.
@@ -125,7 +155,7 @@ function computeRowCost(row) {
125
155
  // usage record reports a zero marginal cost for those turns; do not
126
156
  // reinterpret the Claude model name as an Anthropic API bill.
127
157
  if (PI_SUBSCRIPTION_SOURCES.has(String(row?.source || "").toLowerCase())) return 0;
128
- const pricing = getModelPricing(row.model, { source: row.source });
158
+ const pricing = getRowPricing(row);
129
159
  const reasoningIncludedInOutput = row.source === "codex" || row.source === "every-code";
130
160
  const reasoningCost = reasoningIncludedInOutput
131
161
  ? 0
@@ -152,6 +182,7 @@ module.exports = {
152
182
  ensurePricingLoaded,
153
183
  getPricingRevision,
154
184
  getModelPricing,
185
+ getRowPricing,
155
186
  computeRowCost,
156
187
  resetPricingForTests,
157
188
  MODEL_PRICING,