tokentracker-cli 1.4.2 → 1.4.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 (111) hide show
  1. package/README.md +4 -0
  2. package/dashboard/dist/assets/{AchievementBadge-WGbdoboF.js → AchievementBadge-slL-XBCu.js} +1 -1
  3. package/dashboard/dist/assets/{AchievementsPage-BvybbsXv.js → AchievementsPage-BeFkGc5M.js} +2 -2
  4. package/dashboard/dist/assets/{AchievementsSection-ChNzTFSR.js → AchievementsSection-BrGUIipD.js} +1 -1
  5. package/dashboard/dist/assets/{BadgeDetailModal-DhI9Ejz3.js → BadgeDetailModal-avmK1ODc.js} +1 -1
  6. package/dashboard/dist/assets/{BotAnimated-Bch0Yxej.js → BotAnimated-DaEPdEZi.js} +1 -1
  7. package/dashboard/dist/assets/{Card-DWdL7d1T.js → Card-CIZCccTA.js} +1 -1
  8. package/dashboard/dist/assets/{CloudCheckoutPage-BjGoOz6P.js → CloudCheckoutPage-BhRj0SYO.js} +1 -1
  9. package/dashboard/dist/assets/{CloudPage-Btb6a97x.js → CloudPage-CvaN8a54.js} +2 -2
  10. package/dashboard/dist/assets/{CommandPalette-DwP3k7LE.js → CommandPalette-BUNuXmYF.js} +1 -1
  11. package/dashboard/dist/assets/{CommunityStatsModal-mzqLxpwE.js → CommunityStatsModal-BCI0WHPr.js} +1 -1
  12. package/dashboard/dist/assets/{ConfirmModal-Dm76q4EX.js → ConfirmModal-CT7IwtLR.js} +1 -1
  13. package/dashboard/dist/assets/{Controls-ClZjOBoD.js → Controls-CtnMyxNH.js} +1 -1
  14. package/dashboard/dist/assets/{DashboardPage-Doc8f4NL.js → DashboardPage-BuzyITeL.js} +1 -1
  15. package/dashboard/dist/assets/{DateRangePopover-vfTUePPg.js → DateRangePopover-1Ps1-1dw.js} +1 -1
  16. package/dashboard/dist/assets/{DevicePage-Jjg5q0C2.js → DevicePage-Dt-dVQAG.js} +1 -1
  17. package/dashboard/dist/assets/{DialogClose-Ci5mPZ6X.js → DialogClose-D-DRTF1u.js} +1 -1
  18. package/dashboard/dist/assets/DialogDescription-BOYDS1mM.js +1 -0
  19. package/dashboard/dist/assets/{DialogTitle-DI21oZxH.js → DialogTitle-CiiRTn3_.js} +1 -1
  20. package/dashboard/dist/assets/{ElectricLogo-DfeZBwPZ.js → ElectricLogo-k6RFJ2qC.js} +1 -1
  21. package/dashboard/dist/assets/{FadeIn-C7SIILTc.js → FadeIn-CNHg83aK.js} +1 -1
  22. package/dashboard/dist/assets/{HeaderGithubStar-RStLbadn.js → HeaderGithubStar-CIYW5dc3.js} +1 -1
  23. package/dashboard/dist/assets/{HoverTooltip-DI7uAp1_.js → HoverTooltip-Dn80DyPM.js} +1 -1
  24. package/dashboard/dist/assets/{IpCheckPage-DTZNTJVh.js → IpCheckPage-B29dYfoI.js} +1 -1
  25. package/dashboard/dist/assets/{LandingPage-Df5scNlw.js → LandingPage-Dzc8_QyW.js} +2 -2
  26. package/dashboard/dist/assets/{LeaderboardPage-Ck3SqtnI.js → LeaderboardPage-DXPcIhyQ.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardProBadge-CGx6m7R6.js → LeaderboardProBadge-DxEdj2Zq.js} +1 -1
  28. package/dashboard/dist/assets/{LeaderboardProfileModal-DuP7rgfv.js → LeaderboardProfileModal-DnKY2223.js} +3 -3
  29. package/dashboard/dist/assets/{LeaderboardProfilePage-B5qUJkZX.js → LeaderboardProfilePage-CY94ngqy.js} +1 -1
  30. package/dashboard/dist/assets/{LimitsPage-Bv_Lcvcz.js → LimitsPage-AlvnAPCD.js} +1 -1
  31. package/dashboard/dist/assets/{LocalOnlyNotice-Cg4y02JM.js → LocalOnlyNotice-EHw7BeYS.js} +1 -1
  32. package/dashboard/dist/assets/{LoginCard-Wz0uJKXx.js → LoginCard-E5E3i2kj.js} +1 -1
  33. package/dashboard/dist/assets/{LoginModal-C13v_Gs0.js → LoginModal-DxhQI9kh.js} +1 -1
  34. package/dashboard/dist/assets/{LoginPage-COH9xXtd.js → LoginPage-DRwJn-Fw.js} +1 -1
  35. package/dashboard/dist/assets/{PetPage-BWCnURub.js → PetPage-DIpVTdiC.js} +2 -2
  36. package/dashboard/dist/assets/{PopoverPopup-Dw811N-_.js → PopoverPopup-Bjs7E91g.js} +1 -1
  37. package/dashboard/dist/assets/{ProviderIcon-CHxhYzK-.js → ProviderIcon-DqXIjym-.js} +1 -1
  38. package/dashboard/dist/assets/{ResetPasswordPage-Ll6jshqg.js → ResetPasswordPage-DxSRYQgP.js} +1 -1
  39. package/dashboard/dist/assets/{Select-BbooQ3sa.js → Select-BfjrcaiM.js} +1 -1
  40. package/dashboard/dist/assets/{SelectItemText-DBiW70wi.js → SelectItemText-Dpdlb0cU.js} +1 -1
  41. package/dashboard/dist/assets/{SelfHostPage-BMHJxz5q.js → SelfHostPage-Cnp_PMaD.js} +1 -1
  42. package/dashboard/dist/assets/{ServiceStatusPage-D6LH0ac-.js → ServiceStatusPage-fBwG-qXq.js} +1 -1
  43. package/dashboard/dist/assets/{SessionsPage-Mrer6v17.js → SessionsPage-BEk7AHdq.js} +1 -1
  44. package/dashboard/dist/assets/{SettingsPage-D_7P_y_l.js → SettingsPage-BgML2jQR.js} +3 -3
  45. package/dashboard/dist/assets/{SkillsPage-Ka7xm-1v.js → SkillsPage-DcvVZ3Wn.js} +1 -1
  46. package/dashboard/dist/assets/{TokenGalaxy-BEURDPFq.js → TokenGalaxy-D29yX2Hb.js} +1 -1
  47. package/dashboard/dist/assets/{TooltipPopup-ZiuFFARC.js → TooltipPopup-CjzmNK2l.js} +1 -1
  48. package/dashboard/dist/assets/{TrendMonitor-H73lyGEf.js → TrendMonitor-DfnQrsrx.js} +1 -1
  49. package/dashboard/dist/assets/{WidgetsPage-_7iCvyTk.js → WidgetsPage-CRYomYfk.js} +1 -1
  50. package/dashboard/dist/assets/{WrappedPage-DEXNb6-k.js → WrappedPage-CvQI5zUw.js} +1 -1
  51. package/dashboard/dist/assets/{__vite-browser-external-BkNP5Ecj.js → __vite-browser-external-BZ-i40Kf.js} +2 -2
  52. package/dashboard/dist/assets/{agent-logos-OVBc_0cF.js → agent-logos-CvOX7WXW.js} +1 -1
  53. package/dashboard/dist/assets/{arrow-left-DDphsclm.js → arrow-left-BrQrZJtW.js} +1 -1
  54. package/dashboard/dist/assets/{arrow-right-B1aNq0Ki.js → arrow-right-fC11gmFY.js} +1 -1
  55. package/dashboard/dist/assets/{arrow-up-right-yTM9azz_.js → arrow-up-right-CCMEqQQp.js} +1 -1
  56. package/dashboard/dist/assets/{calendar-days-D22ithNF.js → calendar-days-OaIQ06qD.js} +1 -1
  57. package/dashboard/dist/assets/{check-Dk7tknvE.js → check-D888uFpx.js} +1 -1
  58. package/dashboard/dist/assets/{chevron-down-DdyEzQ4f.js → chevron-down-BJ0BpS_w.js} +1 -1
  59. package/dashboard/dist/assets/{cloud-checkout-BJjbipnH.js → cloud-checkout-BeOpEJTZ.js} +1 -1
  60. package/dashboard/dist/assets/{composite-DEqP00XV.js → composite-CUuXvKos.js} +1 -1
  61. package/dashboard/dist/assets/{download-C9ixNyzn.js → download-BJ7CKwx5.js} +1 -1
  62. package/dashboard/dist/assets/{external-link-DL4HSsLw.js → external-link-CDaZwJVN.js} +1 -1
  63. package/dashboard/dist/assets/{flame-DqNH65nB.js → flame-ChyUKs-9.js} +1 -1
  64. package/dashboard/dist/assets/{format-tokens-CyVjKz4I.js → format-tokens-B6WX7zcH.js} +1 -1
  65. package/dashboard/dist/assets/{gift-ChJQQe_G.js → gift-CQlAZUJ5.js} +1 -1
  66. package/dashboard/dist/assets/{host-mode-DpUDpoOz.js → host-mode-Gw6KD5OJ.js} +1 -1
  67. package/dashboard/dist/assets/{icons-CJiHeOaU.js → icons-C7gGTMuQ.js} +1 -1
  68. package/dashboard/dist/assets/{index-72LQsAaf.js → index-Bm2dDAVL.js} +1 -1
  69. package/dashboard/dist/assets/{index-BucEg3fu.js → index-C0pbymQa.js} +1 -1
  70. package/dashboard/dist/assets/{index-CrFlTSra.js → index-CLb64Tlj.js} +1 -1
  71. package/dashboard/dist/assets/{info-DReYqxC7.js → info-CvOmd88O.js} +1 -1
  72. package/dashboard/dist/assets/{link-2-kIZbhK2S.js → link-2-BNEPxvlF.js} +1 -1
  73. package/dashboard/dist/assets/{loader-circle-1An-X85y.js → loader-circle-bRHxCgY3.js} +1 -1
  74. package/dashboard/dist/assets/{modifiers.esm-FoVheEKT.js → modifiers.esm-D-X0-uvt.js} +1 -1
  75. package/dashboard/dist/assets/{monitor-smartphone-Ch6lr_P2.js → monitor-smartphone-Bo7d-q73.js} +1 -1
  76. package/dashboard/dist/assets/{play-CbJ6ZF1K.js → play-DqpGELN5.js} +1 -1
  77. package/dashboard/dist/assets/{plus-C-5ID3a9.js → plus-2fA1tz7S.js} +1 -1
  78. package/dashboard/dist/assets/{provider-display-BFzRtoL2.js → provider-display-B1KigDYZ.js} +1 -1
  79. package/dashboard/dist/assets/{react-D4CR_fLQ.js → react-DYja9tZG.js} +1 -1
  80. package/dashboard/dist/assets/{safePolygon-DP21Ibqj.js → safePolygon-BerB8y-A.js} +1 -1
  81. package/dashboard/dist/assets/{search-CaznkY7U.js → search-CU6UVI1L.js} +1 -1
  82. package/dashboard/dist/assets/{server-CUOmC6xZ.js → server-CZR4PTdb.js} +1 -1
  83. package/dashboard/dist/assets/{shield-check-Dr2KBMmA.js → shield-check-BGbNmrMP.js} +1 -1
  84. package/dashboard/dist/assets/{skills-api-BAz_fblS.js → skills-api-CJLEzxDf.js} +1 -1
  85. package/dashboard/dist/assets/{sortable.esm-knEfm5hE.js → sortable.esm-CJ1NZWER.js} +1 -1
  86. package/dashboard/dist/assets/{store-CL97jcij.js → store-CJFdru_6.js} +1 -1
  87. package/dashboard/dist/assets/{terminal-EjFyreWj.js → terminal-ClyQ8tvQ.js} +1 -1
  88. package/dashboard/dist/assets/{trash-ByqaZXkQ.js → trash-Dg2PWl5-.js} +1 -1
  89. package/dashboard/dist/assets/{use-community-stats-Bs4RDJZE.js → use-community-stats-Ca995kap.js} +1 -1
  90. package/dashboard/dist/assets/{use-latest-request-guard-CG3Ir1cP.js → use-latest-request-guard-BKbMGVji.js} +1 -1
  91. package/dashboard/dist/assets/{use-limits-display-prefs-tACgCxeR.js → use-limits-display-prefs-CGyd8lvc.js} +1 -1
  92. package/dashboard/dist/assets/{use-native-settings-CWjXyJXi.js → use-native-settings-Dqeuqm9O.js} +1 -1
  93. package/dashboard/dist/assets/{use-ordered-list-DsuC9JQa.js → use-ordered-list-Nj7R1iUu.js} +1 -1
  94. package/dashboard/dist/assets/use-reduced-motion-CGMbDpHQ.js +1 -0
  95. package/dashboard/dist/assets/{use-session-efficiency-pref-NeoJE8BL.js → use-session-efficiency-pref-C_H5BaGV.js} +1 -1
  96. package/dashboard/dist/assets/{use-transform-BWGKOsya.js → use-transform-CC90hurD.js} +1 -1
  97. package/dashboard/dist/assets/{use-usage-limits-CFWFNwHS.js → use-usage-limits-DtaaE7D8.js} +1 -1
  98. package/dashboard/dist/assets/{useCurrency-B_C4_P5x.js → useCurrency-CMHIL39_.js} +1 -1
  99. package/dashboard/dist/assets/{usePositioner-B0L5_o38.js → usePositioner-CRSfrGQq.js} +1 -1
  100. package/dashboard/dist/assets/{useTokenFormat-DH1GWHSU.js → useTokenFormat-B5jhM_Kb.js} +1 -1
  101. package/dashboard/dist/assets/{zap-Chv1p7pS.js → zap-CKx8ySZs.js} +1 -1
  102. package/dashboard/dist/index.html +1 -1
  103. package/dashboard/dist/ip-check.html +1 -1
  104. package/dashboard/dist/leaderboard.html +1 -1
  105. package/dashboard/dist/share.html +1 -1
  106. package/package.json +1 -1
  107. package/src/commands/sync.js +25 -3
  108. package/src/lib/pricing/seed-snapshot.json +1 -1
  109. package/src/lib/rollout.js +334 -52
  110. package/dashboard/dist/assets/DialogDescription-Di5ev5K6.js +0 -1
  111. package/dashboard/dist/assets/use-reduced-motion-CwFguzkm.js +0 -1
@@ -2634,7 +2634,7 @@ async function cmdSync(argv, context = {}) {
2634
2634
  // usage rides on function_call records too (not only assistant messages) and
2635
2635
  // sub-agent logs nest one level deeper, so the resolver recurses. See the
2636
2636
  // parser comment in rollout.js for the cache-aware token math.
2637
- let workbuddyResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0 };
2637
+ let workbuddyResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0, projectBucketsQueued: 0, projectCursorUpdated: false };
2638
2638
  const workbuddyFiles = sourceAllowed("workbuddy")
2639
2639
  ? mergeBothFileSources({ resolveFiles: resolveWorkbuddyProjectFiles, env: process.env })
2640
2640
  : [];
@@ -2660,6 +2660,7 @@ async function cmdSync(argv, context = {}) {
2660
2660
  projectFiles: workbuddyFiles,
2661
2661
  cursors,
2662
2662
  queuePath,
2663
+ projectQueuePath,
2663
2664
  env: process.env,
2664
2665
  onProgress: (p) => {
2665
2666
  if (!progress?.enabled) return;
@@ -2679,7 +2680,7 @@ async function cmdSync(argv, context = {}) {
2679
2680
  // only the home directory differs, so it reuses the WorkBuddy parser and
2680
2681
  // gets its own source key (and cursor namespace) so the two builds stay
2681
2682
  // separable instead of merging into one provider row.
2682
- let workbuddyAiResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0 };
2683
+ let workbuddyAiResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0, projectBucketsQueued: 0, projectCursorUpdated: false };
2683
2684
  const workbuddyAiFiles = sourceAllowed("workbuddy-ai")
2684
2685
  ? mergeBothFileSources({
2685
2686
  resolveFiles: (resolveEnv) => resolveWorkbuddyProjectFiles(resolveEnv, "workbuddy-ai"),
@@ -2695,6 +2696,7 @@ async function cmdSync(argv, context = {}) {
2695
2696
  projectFiles: workbuddyAiFiles,
2696
2697
  cursors,
2697
2698
  queuePath,
2699
+ projectQueuePath,
2698
2700
  env: process.env,
2699
2701
  source: "workbuddy-ai",
2700
2702
  onProgress: (p) => {
@@ -3469,6 +3471,10 @@ async function cmdSync(argv, context = {}) {
3469
3471
  cursorStore.requiresCommit !== true &&
3470
3472
  totalParsed === (commandCodeResult.cursorUnchanged ? commandCodeResult.recordsProcessed : 0) &&
3471
3473
  totalBuckets === 0 &&
3474
+ !(workbuddyResult.projectBucketsQueued > 0) &&
3475
+ !(workbuddyAiResult.projectBucketsQueued > 0) &&
3476
+ !workbuddyResult.projectCursorUpdated &&
3477
+ !workbuddyAiResult.projectCursorUpdated &&
3472
3478
  !(grokResult.projectBucketsQueued > 0) &&
3473
3479
  !(commandCodeResult.projectBucketsQueued > 0) &&
3474
3480
  !commandCodeResult.schemaMigrated &&
@@ -5699,7 +5705,23 @@ async function repairWorkbuddyContextUsage({
5699
5705
  for (const [key, value] of Object.entries(tmpCursors.hourly.groupQueued || {})) {
5700
5706
  if (key.startsWith("workbuddy|")) nextHourly.groupQueued[key] = value;
5701
5707
  }
5702
- cursors.workbuddy = tmpCursors.workbuddy || {};
5708
+ // This migration rebuilds totals from a temp queue using empty cursors, so
5709
+ // `tmpCursors.workbuddy` carries no project state. Replacing the whole object
5710
+ // would drop the project cursor while leaving the published project buckets
5711
+ // (cursors.projectHourly and the real project queue) untouched, and the next
5712
+ // parse would re-attribute every historical session on top of them. The
5713
+ // migration only changes totals, so keep the project cursor as it is.
5714
+ const previousWorkbuddyState =
5715
+ cursors.workbuddy && typeof cursors.workbuddy === "object" ? cursors.workbuddy : {};
5716
+ cursors.workbuddy = {
5717
+ ...(tmpCursors.workbuddy || {}),
5718
+ ...(previousWorkbuddyState.projectFileOffsets
5719
+ ? { projectFileOffsets: previousWorkbuddyState.projectFileOffsets }
5720
+ : {}),
5721
+ ...(Array.isArray(previousWorkbuddyState.projectSeenIds)
5722
+ ? { projectSeenIds: previousWorkbuddyState.projectSeenIds }
5723
+ : {}),
5724
+ };
5703
5725
 
5704
5726
  let uploadState = {};
5705
5727
  try { uploadState = JSON.parse(await fs.readFile(queueStatePath, "utf8")); } catch (_e) {}