tokentracker-cli 1.1.3 → 1.1.4

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 (115) hide show
  1. package/README.de.md +5 -4
  2. package/README.ja.md +5 -4
  3. package/README.ko.md +5 -4
  4. package/README.md +5 -4
  5. package/README.zh-CN.md +5 -4
  6. package/dashboard/dist/assets/{AchievementBadge-dt_UDU_h.js → AchievementBadge-BGA-HT_B.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-B5DJ3S9l.js → AchievementsPage-CtRh5AjH.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-CDxcyig2.js → AchievementsSection-BarRcKaN.js} +1 -1
  9. package/dashboard/dist/assets/{BadgeDetailModal-Cp98zNn2.js → BadgeDetailModal-Bg0BDAN2.js} +1 -1
  10. package/dashboard/dist/assets/{BotAnimated-CR7MiUpo.js → BotAnimated-By9J3-dn.js} +1 -1
  11. package/dashboard/dist/assets/{Card-C8IdDvlg.js → Card-CIoJYi2j.js} +1 -1
  12. package/dashboard/dist/assets/{ClawdAnimated-COeTlW8z.js → ClawdAnimated-Dkvc2xe8.js} +2 -2
  13. package/dashboard/dist/assets/{CommandPalette-Co9k2CCc.js → CommandPalette-BssDtHRl.js} +1 -1
  14. package/dashboard/dist/assets/{CommunityStatsModal-C6XQeRgw.js → CommunityStatsModal-CQrgLlDb.js} +1 -1
  15. package/dashboard/dist/assets/{ConfirmModal-Ai4182O-.js → ConfirmModal-C3hBPgYc.js} +1 -1
  16. package/dashboard/dist/assets/{Controls-BbKzN-Pe.js → Controls-BSW6a1HS.js} +1 -1
  17. package/dashboard/dist/assets/DashboardPage-Dhv7fejy.js +1 -0
  18. package/dashboard/dist/assets/{DevicePage-CZbrtJmb.js → DevicePage-D5eZn0wo.js} +1 -1
  19. package/dashboard/dist/assets/{DialogClose-DMl8tAoX.js → DialogClose-BltQpaJo.js} +1 -1
  20. package/dashboard/dist/assets/DialogDescription-Cof52Icj.js +1 -0
  21. package/dashboard/dist/assets/{DialogTitle-BJxpp2t-.js → DialogTitle-CVddcRPZ.js} +1 -1
  22. package/dashboard/dist/assets/{FadeIn-hU_MXl6R.js → FadeIn-goPv73MT.js} +1 -1
  23. package/dashboard/dist/assets/{HeaderGithubStar-CM5RSxxN.js → HeaderGithubStar-BDBrrkzt.js} +1 -1
  24. package/dashboard/dist/assets/{HoverTooltip-BZKfQyZQ.js → HoverTooltip-qyMezXOs.js} +1 -1
  25. package/dashboard/dist/assets/{IpCheckPage-BjDx-zja.js → IpCheckPage-Ces8JIPb.js} +1 -1
  26. package/dashboard/dist/assets/{LandingPage-CAt8BCDv.js → LandingPage-B2TmLGno.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardAvatar-DiCrakjI.js → LeaderboardAvatar-CVVRoNua.js} +1 -1
  28. package/dashboard/dist/assets/{LeaderboardPage-Dj3pHv6U.js → LeaderboardPage-xtt-bOY8.js} +2 -2
  29. package/dashboard/dist/assets/{LeaderboardProfileModal-DEWbcP9p.js → LeaderboardProfileModal-BM4d_I_r.js} +3 -3
  30. package/dashboard/dist/assets/{LeaderboardProfilePage-CTbWHQkY.js → LeaderboardProfilePage-BWqhFLQX.js} +1 -1
  31. package/dashboard/dist/assets/{LimitsPage-V-98OUhF.js → LimitsPage-BZL4Pcl8.js} +1 -1
  32. package/dashboard/dist/assets/{LocalOnlyNotice-a4PqtUZY.js → LocalOnlyNotice-D4gnOEJj.js} +1 -1
  33. package/dashboard/dist/assets/{LoginCard-oD1A2Ru8.js → LoginCard-CB17FQ5w.js} +1 -1
  34. package/dashboard/dist/assets/{LoginModal-D8aSmxok.js → LoginModal-BI-O1rH4.js} +1 -1
  35. package/dashboard/dist/assets/{LoginPage-DIjhBv2X.js → LoginPage-DnGzsvJ4.js} +1 -1
  36. package/dashboard/dist/assets/{PetPage-D7601BTX.js → PetPage-NRnIKMaJ.js} +1 -1
  37. package/dashboard/dist/assets/{PopoverPopup-aPnmKopO.js → PopoverPopup-DHoK6UJZ.js} +1 -1
  38. package/dashboard/dist/assets/{ProviderIcon-rwyfcNlT.js → ProviderIcon-BTkdx9o2.js} +1 -1
  39. package/dashboard/dist/assets/{ResetPasswordPage-AF3SBgW2.js → ResetPasswordPage-C6K0w318.js} +1 -1
  40. package/dashboard/dist/assets/{SegmentedControl-fnlScNMT.js → SegmentedControl-gEoWioBE.js} +1 -1
  41. package/dashboard/dist/assets/{Select-DDjC3RjB.js → Select-CI-qtEYu.js} +1 -1
  42. package/dashboard/dist/assets/{SelectItemText-VhBWE2O8.js → SelectItemText-q-yhzzjw.js} +1 -1
  43. package/dashboard/dist/assets/{ServiceStatusPage-BL3qqEsp.js → ServiceStatusPage-C4xD1CEe.js} +1 -1
  44. package/dashboard/dist/assets/{SessionsPage-DXYiuP2x.js → SessionsPage-CS0Yun2z.js} +1 -1
  45. package/dashboard/dist/assets/{SettingsPage-DTeA_ahr.js → SettingsPage-GVY_ktz4.js} +2 -2
  46. package/dashboard/dist/assets/{SkillsPage-CtTRwVQH.js → SkillsPage-COPRL95O.js} +1 -1
  47. package/dashboard/dist/assets/{TokenGalaxy-CifK91V7.js → TokenGalaxy-Czi0Ic48.js} +1 -1
  48. package/dashboard/dist/assets/{ToolbarRootContext-ClGAIYoa.js → ToolbarRootContext-BZkTiBJB.js} +1 -1
  49. package/dashboard/dist/assets/{TrendMonitor-D1evFHRM.js → TrendMonitor-CnIsuxV-.js} +1 -1
  50. package/dashboard/dist/assets/{WidgetsPage-Cq4RYJDE.js → WidgetsPage-OdX_Fsul.js} +1 -1
  51. package/dashboard/dist/assets/{WrappedPage-CoC5RJH7.js → WrappedPage-h9N63-F8.js} +1 -1
  52. package/dashboard/dist/assets/__vite-browser-external-BFNWaGsk.js +45 -0
  53. package/dashboard/dist/assets/{agent-logos-QLdA9OeA.js → agent-logos-BDiPxrST.js} +1 -1
  54. package/dashboard/dist/assets/{arrow-up-right-BYLgB3bH.js → arrow-up-right-DtFQUeJG.js} +1 -1
  55. package/dashboard/dist/assets/{check-DfnIvqZD.js → check-C35onaNL.js} +1 -1
  56. package/dashboard/dist/assets/{composite--JllTpIX.js → composite-qxBzts0W.js} +1 -1
  57. package/dashboard/dist/assets/{copy-ClKVBIgD.js → copy-D_D71TLc.js} +1 -1
  58. package/dashboard/dist/assets/{download-Di1-UFJX.js → download-DMQI2hQe.js} +1 -1
  59. package/dashboard/dist/assets/{external-link-D7zPVFLO.js → external-link-CemM4dWf.js} +1 -1
  60. package/dashboard/dist/assets/{flame-BMJTxjVg.js → flame-CIvk0SP5.js} +1 -1
  61. package/dashboard/dist/assets/{format-tokens-DCZM5Nfn.js → format-tokens-D3JSvcFl.js} +1 -1
  62. package/dashboard/dist/assets/{icons-I615W2IU.js → icons-Ccf5W0AL.js} +1 -1
  63. package/dashboard/dist/assets/{index-BejnmdPe.js → index-Brd2evyz.js} +1 -1
  64. package/dashboard/dist/assets/{index-BX3CXVdD.js → index-C8Wri_HI.js} +1 -1
  65. package/dashboard/dist/assets/{index-CwczM3BZ.js → index-CFXmD_KX.js} +1 -1
  66. package/dashboard/dist/assets/{info-CFJPny5Q.js → info-CafrKEG8.js} +1 -1
  67. package/dashboard/dist/assets/{link-2-D1ydWh_w.js → link-2-Ds-9Nzlp.js} +1 -1
  68. package/dashboard/dist/assets/{loader-circle-Cq-J-OFg.js → loader-circle-DA4I55-V.js} +1 -1
  69. package/dashboard/dist/assets/{maximize-2-kIoSq57I.js → maximize-2-CjMPt5kU.js} +1 -1
  70. package/dashboard/dist/assets/{modifiers.esm-CLojthuF.js → modifiers.esm-DIxTS09h.js} +1 -1
  71. package/dashboard/dist/assets/module-WSx8viXK.js +3 -0
  72. package/dashboard/dist/assets/{monitor-smartphone-DX2qWHYV.js → monitor-smartphone-IZpIOxn3.js} +1 -1
  73. package/dashboard/dist/assets/{plus-B-JEpo3V.js → plus-vbLFNs70.js} +1 -1
  74. package/dashboard/dist/assets/{provider-display-DJDdrTAS.js → provider-display-BAu_UIfV.js} +2 -2
  75. package/dashboard/dist/assets/{react-Ctoe8iLl.js → react-Djb4VGKb.js} +1 -1
  76. package/dashboard/dist/assets/{search-BTSQrlW-.js → search-Ct6LY9Ke.js} +1 -1
  77. package/dashboard/dist/assets/{skills-api-DKQyM8h7.js → skills-api-BnGI2gEp.js} +1 -1
  78. package/dashboard/dist/assets/{sortable.esm-pOEL13xU.js → sortable.esm-CjCGd6g5.js} +1 -1
  79. package/dashboard/dist/assets/{store-B2RplzvW.js → store-CBxkOqRe.js} +1 -1
  80. package/dashboard/dist/assets/{terminal-BH_6_EW_.js → terminal-Dlpdp5Az.js} +1 -1
  81. package/dashboard/dist/assets/{trash-CC444Mz6.js → trash-pxUSKv66.js} +1 -1
  82. package/dashboard/dist/assets/{use-community-stats-CBXLdD_j.js → use-community-stats-tHaixRIw.js} +1 -1
  83. package/dashboard/dist/assets/{use-latest-request-guard-DMuPfZQI.js → use-latest-request-guard-Cs44WPfL.js} +1 -1
  84. package/dashboard/dist/assets/{use-limits-display-prefs-CmsGTBA4.js → use-limits-display-prefs-Dw56PXWy.js} +1 -1
  85. package/dashboard/dist/assets/{use-ordered-list-BNJNpXjB.js → use-ordered-list-DpLx8oLV.js} +1 -1
  86. package/dashboard/dist/assets/use-reduced-motion-DrlJ9X6p.js +1 -0
  87. package/dashboard/dist/assets/{use-session-efficiency-pref-g_0ISxe1.js → use-session-efficiency-pref-BN3FtBvr.js} +1 -1
  88. package/dashboard/dist/assets/{use-transform-D36BHcXk.js → use-transform-C4nTGgzb.js} +1 -1
  89. package/dashboard/dist/assets/{use-usage-limits-Dxw3vzsD.js → use-usage-limits-Dmwdc1yo.js} +1 -1
  90. package/dashboard/dist/assets/{useCurrency-V2FE4TMo.js → useCurrency-DSc3A_Ih.js} +1 -1
  91. package/dashboard/dist/assets/{useTokenFormat-CEOwvzMt.js → useTokenFormat-BHjcMgm8.js} +1 -1
  92. package/dashboard/dist/assets/{zap-BS7ZU76I.js → zap-BE8i_wu2.js} +1 -1
  93. package/dashboard/dist/brand-logos/trae.svg +1 -0
  94. package/dashboard/dist/index.html +13 -11
  95. package/dashboard/dist/ip-check.html +1 -1
  96. package/dashboard/dist/leaderboard.html +1 -1
  97. package/dashboard/dist/llms.txt +3 -2
  98. package/dashboard/dist/share.html +1 -1
  99. package/package.json +6 -4
  100. package/src/commands/init.js +9 -7
  101. package/src/commands/status.js +9 -9
  102. package/src/commands/sync.js +25 -0
  103. package/src/lib/pricing/curated-overrides.json +7 -0
  104. package/src/lib/pricing/matcher.js +5 -0
  105. package/src/lib/pricing/seed-snapshot.json +1 -1
  106. package/src/lib/rollout.js +197 -18
  107. package/src/lib/trae-db.js +127 -0
  108. package/src/lib/trae-snapshot.js +230 -0
  109. package/src/lib/trae-sqlite.js +143 -0
  110. package/src/lib/trae-usage.js +121 -0
  111. package/dashboard/dist/assets/DashboardPage-DTcVGG4e.js +0 -1
  112. package/dashboard/dist/assets/DialogDescription-haPz7CX9.js +0 -1
  113. package/dashboard/dist/assets/__vite-browser-external-BDugA6I0.js +0 -45
  114. package/dashboard/dist/assets/module-DtWfRKM4.js +0 -3
  115. package/dashboard/dist/assets/use-reduced-motion-CNpG-Yoi.js +0 -1
@@ -138,6 +138,7 @@ const {
138
138
  resolveCommandCodeSessionFiles,
139
139
  parseCommandCodeIncremental,
140
140
  parseTraeCnApiIncremental,
141
+ parseTraeIncremental,
141
142
  bucketKey,
142
143
  toUtcHalfHourStart,
143
144
  totalsKey,
@@ -333,6 +334,7 @@ const AUTO_SYNC_SOURCES = new Set([
333
334
  "reasonix",
334
335
  "roocode",
335
336
  "trae-cn",
337
+ "trae",
336
338
  "unsloth",
337
339
  "workbuddy",
338
340
  "zcode",
@@ -2011,6 +2013,27 @@ async function cmdSync(argv, context = {}) {
2011
2013
  }
2012
2014
  }
2013
2015
 
2016
+ let traeResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0 };
2017
+ if (sourceAllowed("trae")) {
2018
+ try {
2019
+ traeResult = await parseTraeIncremental({
2020
+ cursors, queuePath, onProgress: makeProviderProgress("TRAE"),
2021
+ });
2022
+ for (const { database, message } of traeResult.errors) {
2023
+ process.stderr.write(`TRAE sync: could not read ${database}: ${message}. Will retry on the next sync.\n`);
2024
+ }
2025
+ if (traeResult.recordsSkipped > 0 && !opts.auto) {
2026
+ process.stderr.write(`TRAE sync: skipped ${traeResult.recordsSkipped} records with unsupported usage metadata.\n`);
2027
+ }
2028
+ if (traeResult.estimatedRecords > 0 && !opts.auto) {
2029
+ process.stderr.write(`TRAE sync: ${traeResult.estimatedRecords} Gemini records have repaired thought or cache counters, marked as estimated.\n`);
2030
+ }
2031
+ if (traeResult.unpricedRecords > 0 && !opts.auto) {
2032
+ process.stderr.write(`TRAE sync: ${traeResult.unpricedRecords} multi-request turns include earlier input without a cache split; it is counted in token totals but left out of cost.\n`);
2033
+ }
2034
+ } catch (err) { warnProviderParseFailure("TRAE", err); }
2035
+ }
2036
+
2014
2037
  // ── Trae Work CN (国内版) — account-level usage API ──
2015
2038
  // A simple explicit rolling 30-day window captured once per sync (no
2016
2039
  // cursor checkpoints / full-history import / page retries / background
@@ -3101,6 +3124,7 @@ async function cmdSync(argv, context = {}) {
3101
3124
  claudeScienceResult.recordsProcessed +
3102
3125
  cursorResult.recordsProcessed +
3103
3126
  traeCnResult.recordsProcessed +
3127
+ traeResult.recordsProcessed +
3104
3128
  kiroResult.recordsProcessed +
3105
3129
  kiroCliResult.recordsProcessed +
3106
3130
  hermesResult.recordsProcessed +
@@ -3144,6 +3168,7 @@ async function cmdSync(argv, context = {}) {
3144
3168
  claudeScienceResult.bucketsQueued +
3145
3169
  cursorResult.bucketsQueued +
3146
3170
  traeCnResult.bucketsQueued +
3171
+ traeResult.bucketsQueued +
3147
3172
  kiroResult.bucketsQueued +
3148
3173
  kiroCliResult.bucketsQueued +
3149
3174
  hermesResult.bucketsQueued +
@@ -118,6 +118,13 @@
118
118
  "cache_write": 0.167,
119
119
  "note": "See hy3-preview-agent."
120
120
  },
121
+ "qwen3.8-flash": {
122
+ "input": 0.15,
123
+ "output": 0.47,
124
+ "cache_read": 0.016,
125
+ "cache_write": 0.2,
126
+ "note": "Alibaba Model Studio Singapore (International), USD per MTok, verified 2026-09-29: https://www.alibabacloud.com/help/en/model-studio/qwen3-8-flash . Reference API estimate; other regions/providers can have different rates. Issue #715."
127
+ },
121
128
  "hy4-preview": {
122
129
  "input": 0.833,
123
130
  "output": 2.5,
@@ -277,6 +277,11 @@ function lookupPricing(model, { curated, litellm, source } = {}) {
277
277
  }
278
278
 
279
279
  // 1. CURATED exact
280
+ // Qwen Flash's provider-qualified and dated IDs share the reference SKU.
281
+ // Keep the boundary strict: Flash-Next and Max have independent prices.
282
+ if (/(?:^|\/)qwen3[.-]8-flash(?:-\d{4}-\d{2}-\d{2})?$/.test(lower.trim()) && curated.exact?.["qwen3.8-flash"]) {
283
+ return { hit: true, source: "curated:exact", value: curated.exact["qwen3.8-flash"] };
284
+ }
280
285
  if (curated.exact && curated.exact[lookupModel]) {
281
286
  return { hit: true, source: "curated:exact", value: curated.exact[lookupModel] };
282
287
  }