tokentracker-cli 0.41.0 → 0.42.1

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 (49) hide show
  1. package/README.ja.md +1 -0
  2. package/README.ko.md +1 -0
  3. package/README.md +1 -0
  4. package/README.zh-CN.md +1 -0
  5. package/dashboard/dist/assets/{ActivityHeatmap-DAyvtRkn.js → ActivityHeatmap-BmI8V0xx.js} +1 -1
  6. package/dashboard/dist/assets/{Card-DByZ3SxT.js → Card-nuVuYcuu.js} +1 -1
  7. package/dashboard/dist/assets/DashboardPage-Bh_iJ-xm.js +19 -0
  8. package/dashboard/dist/assets/{DevicePage-BkGbFsCV.js → DevicePage-9WJtHDTf.js} +1 -1
  9. package/dashboard/dist/assets/{DialogTitle-BhNOpzk4.js → DialogTitle-rNImNh43.js} +1 -1
  10. package/dashboard/dist/assets/{FadeIn-CQ0uWwqS.js → FadeIn-SiqDw-Yh.js} +1 -1
  11. package/dashboard/dist/assets/{HeaderGithubStar-OlcZIZs-.js → HeaderGithubStar-8B6qistC.js} +1 -1
  12. package/dashboard/dist/assets/{IpCheckPage-VaBccp0v.js → IpCheckPage-BfLN01PA.js} +4 -4
  13. package/dashboard/dist/assets/{LandingPage-BbOOtp0W.js → LandingPage-DlihjDi3.js} +1 -1
  14. package/dashboard/dist/assets/{LeaderboardAvatar-B26XN7XT.js → LeaderboardAvatar-PUmreq-E.js} +1 -1
  15. package/dashboard/dist/assets/{LeaderboardPage-D43tLe4r.js → LeaderboardPage-D9Uv75pz.js} +3 -3
  16. package/dashboard/dist/assets/{LeaderboardProfileModal-Cc3TV4wl.js → LeaderboardProfileModal-Cvmto6VZ.js} +3 -3
  17. package/dashboard/dist/assets/LeaderboardProfilePage-LCr8enw5.js +421 -0
  18. package/dashboard/dist/assets/{LimitsPage-HXB3ON_M.js → LimitsPage-D2lQnS6r.js} +2 -2
  19. package/dashboard/dist/assets/{LocalOnlyNotice-BtgOf0xW.js → LocalOnlyNotice-BFPVcZOL.js} +1 -1
  20. package/dashboard/dist/assets/{LoginPage-CHNz2uuj.js → LoginPage-DRVDDFRN.js} +1 -1
  21. package/dashboard/dist/assets/{PopoverPopup-i1aCasNO.js → PopoverPopup-5Ua0f-tT.js} +1 -1
  22. package/dashboard/dist/assets/{Select-Dn4TdKJu.js → Select-RhwT9_Zs.js} +1 -1
  23. package/dashboard/dist/assets/{SelectItemText-D2YtMFj0.js → SelectItemText-CCXz3qQg.js} +1 -1
  24. package/dashboard/dist/assets/SettingsPage-Rkf_akM3.js +1 -0
  25. package/dashboard/dist/assets/{SkillsPage-Bt8e5ROp.js → SkillsPage-Di6zoCoj.js} +1 -1
  26. package/dashboard/dist/assets/{WidgetsPage-CGnhXDpP.js → WidgetsPage-MPCZCDLm.js} +1 -1
  27. package/dashboard/dist/assets/{WrappedPage-FEgpbrfx.js → WrappedPage-BkUgUFbt.js} +1 -1
  28. package/dashboard/dist/assets/agent-logos-3H0wwvp3.js +1 -0
  29. package/dashboard/dist/assets/{arrow-up-right-Al34G4US.js → arrow-up-right-C8hVO4Rh.js} +1 -1
  30. package/dashboard/dist/assets/{download-BorAs8Ai.js → download-Xu7TCfqI.js} +1 -1
  31. package/dashboard/dist/assets/{info-BjMpOQ6L.js → info-BjGPzMRM.js} +1 -1
  32. package/dashboard/dist/assets/{main-BZIH6355.js → main-Cbe-Gxyo.js} +18 -18
  33. package/dashboard/dist/assets/main-xEkHCXyP.css +1 -0
  34. package/dashboard/dist/assets/{use-limits-display-prefs-CMcyG3Sf.js → use-limits-display-prefs-CpGpuPFi.js} +1 -1
  35. package/dashboard/dist/assets/{use-native-settings-Dda0lUdD.js → use-native-settings-D6-_mQ1G.js} +1 -1
  36. package/dashboard/dist/assets/{use-usage-limits-DpD2WuDG.js → use-usage-limits-PLO1ai-F.js} +1 -1
  37. package/dashboard/dist/assets/{useCurrency-Bar8ZQys.js → useCurrency-BcN5S6nj.js} +1 -1
  38. package/dashboard/dist/assets/{useScrollLock-g4Jj83C_.js → useScrollLock-rh9yhh-j.js} +1 -1
  39. package/dashboard/dist/index.html +2 -2
  40. package/dashboard/dist/share.html +2 -2
  41. package/package.json +1 -1
  42. package/src/lib/local-api.js +63 -0
  43. package/src/lib/pricing/seed-snapshot.json +1 -1
  44. package/src/lib/rollout.js +15 -13
  45. package/dashboard/dist/assets/DashboardPage-DJLLG7DG.js +0 -19
  46. package/dashboard/dist/assets/LeaderboardProfilePage-DAVuscsT.js +0 -1
  47. package/dashboard/dist/assets/SettingsPage-D-44xtnb.js +0 -1
  48. package/dashboard/dist/assets/agent-logos-2LgC_fmg.js +0 -1
  49. package/dashboard/dist/assets/main-DTwPGswA.css +0 -1
@@ -679,21 +679,23 @@ async function parseOpenclawSessionFile({
679
679
 
680
680
  const model = normalizeModelInput(msg.model) || DEFAULT_MODEL;
681
681
 
682
- // Per CLAUDE.md: cached_input_tokens = cache reads,
683
- // cache_creation_input_tokens = cache writes. Also re-derive total_tokens
684
- // as input + output + cache_creation + cache_read so cost math works
685
- // even when the source's own totalTokens is stale or rounded.
686
- const inputTok = Number(usage.input || 0);
687
- const cacheReadTok = Number(usage.cacheRead || 0);
688
- const cacheWriteTok = Number(usage.cacheWrite || 0);
689
- const outputTok = Number(usage.output || 0);
682
+ // OpenClaw wraps Codex, so it follows the same OpenAI convention where
683
+ // `input` INCLUDES cached reads. Normalize by subtracting cached from
684
+ // input so `input_tokens` is pure non-cached (matches CLAUDE.md spec
685
+ // and prevents downstream double-counting at the cache_read rate on top
686
+ // of the full input rate — ~6–7x cost inflation on cache-heavy sessions).
687
+ const openclawRawInput = Number(usage.input || 0);
688
+ const openclawCached = Number(usage.cacheRead || 0);
689
+ const openclawCacheWrite = Number(usage.cacheWrite || 0);
690
+ const openclawOutput = Number(usage.output || 0);
691
+ const openclawInput = Math.max(0, openclawRawInput - openclawCached);
690
692
  const delta = {
691
- input_tokens: inputTok,
692
- cached_input_tokens: cacheReadTok,
693
- cache_creation_input_tokens: cacheWriteTok,
694
- output_tokens: outputTok,
693
+ input_tokens: openclawInput,
694
+ cached_input_tokens: openclawCached,
695
+ cache_creation_input_tokens: openclawCacheWrite,
696
+ output_tokens: openclawOutput,
695
697
  reasoning_output_tokens: 0,
696
- total_tokens: inputTok + outputTok + cacheReadTok + cacheWriteTok,
698
+ total_tokens: openclawInput + openclawCached + openclawCacheWrite + openclawOutput,
697
699
  conversation_count: 1,
698
700
  };
699
701