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.
- package/README.md +4 -0
- package/dashboard/dist/assets/{AchievementBadge-WGbdoboF.js → AchievementBadge-slL-XBCu.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-BvybbsXv.js → AchievementsPage-BeFkGc5M.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-ChNzTFSR.js → AchievementsSection-BrGUIipD.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-DhI9Ejz3.js → BadgeDetailModal-avmK1ODc.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-Bch0Yxej.js → BotAnimated-DaEPdEZi.js} +1 -1
- package/dashboard/dist/assets/{Card-DWdL7d1T.js → Card-CIZCccTA.js} +1 -1
- package/dashboard/dist/assets/{CloudCheckoutPage-BjGoOz6P.js → CloudCheckoutPage-BhRj0SYO.js} +1 -1
- package/dashboard/dist/assets/{CloudPage-Btb6a97x.js → CloudPage-CvaN8a54.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-DwP3k7LE.js → CommandPalette-BUNuXmYF.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-mzqLxpwE.js → CommunityStatsModal-BCI0WHPr.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-Dm76q4EX.js → ConfirmModal-CT7IwtLR.js} +1 -1
- package/dashboard/dist/assets/{Controls-ClZjOBoD.js → Controls-CtnMyxNH.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-Doc8f4NL.js → DashboardPage-BuzyITeL.js} +1 -1
- package/dashboard/dist/assets/{DateRangePopover-vfTUePPg.js → DateRangePopover-1Ps1-1dw.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-Jjg5q0C2.js → DevicePage-Dt-dVQAG.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-Ci5mPZ6X.js → DialogClose-D-DRTF1u.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-BOYDS1mM.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-DI21oZxH.js → DialogTitle-CiiRTn3_.js} +1 -1
- package/dashboard/dist/assets/{ElectricLogo-DfeZBwPZ.js → ElectricLogo-k6RFJ2qC.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-C7SIILTc.js → FadeIn-CNHg83aK.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-RStLbadn.js → HeaderGithubStar-CIYW5dc3.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-DI7uAp1_.js → HoverTooltip-Dn80DyPM.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-DTZNTJVh.js → IpCheckPage-B29dYfoI.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-Df5scNlw.js → LandingPage-Dzc8_QyW.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardPage-Ck3SqtnI.js → LeaderboardPage-DXPcIhyQ.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProBadge-CGx6m7R6.js → LeaderboardProBadge-DxEdj2Zq.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfileModal-DuP7rgfv.js → LeaderboardProfileModal-DnKY2223.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-B5qUJkZX.js → LeaderboardProfilePage-CY94ngqy.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-Bv_Lcvcz.js → LimitsPage-AlvnAPCD.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-Cg4y02JM.js → LocalOnlyNotice-EHw7BeYS.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-Wz0uJKXx.js → LoginCard-E5E3i2kj.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-C13v_Gs0.js → LoginModal-DxhQI9kh.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-COH9xXtd.js → LoginPage-DRwJn-Fw.js} +1 -1
- package/dashboard/dist/assets/{PetPage-BWCnURub.js → PetPage-DIpVTdiC.js} +2 -2
- package/dashboard/dist/assets/{PopoverPopup-Dw811N-_.js → PopoverPopup-Bjs7E91g.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-CHxhYzK-.js → ProviderIcon-DqXIjym-.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-Ll6jshqg.js → ResetPasswordPage-DxSRYQgP.js} +1 -1
- package/dashboard/dist/assets/{Select-BbooQ3sa.js → Select-BfjrcaiM.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-DBiW70wi.js → SelectItemText-Dpdlb0cU.js} +1 -1
- package/dashboard/dist/assets/{SelfHostPage-BMHJxz5q.js → SelfHostPage-Cnp_PMaD.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-D6LH0ac-.js → ServiceStatusPage-fBwG-qXq.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-Mrer6v17.js → SessionsPage-BEk7AHdq.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-D_7P_y_l.js → SettingsPage-BgML2jQR.js} +3 -3
- package/dashboard/dist/assets/{SkillsPage-Ka7xm-1v.js → SkillsPage-DcvVZ3Wn.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-BEURDPFq.js → TokenGalaxy-D29yX2Hb.js} +1 -1
- package/dashboard/dist/assets/{TooltipPopup-ZiuFFARC.js → TooltipPopup-CjzmNK2l.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-H73lyGEf.js → TrendMonitor-DfnQrsrx.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-_7iCvyTk.js → WidgetsPage-CRYomYfk.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-DEXNb6-k.js → WrappedPage-CvQI5zUw.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-BkNP5Ecj.js → __vite-browser-external-BZ-i40Kf.js} +2 -2
- package/dashboard/dist/assets/{agent-logos-OVBc_0cF.js → agent-logos-CvOX7WXW.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DDphsclm.js → arrow-left-BrQrZJtW.js} +1 -1
- package/dashboard/dist/assets/{arrow-right-B1aNq0Ki.js → arrow-right-fC11gmFY.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-yTM9azz_.js → arrow-up-right-CCMEqQQp.js} +1 -1
- package/dashboard/dist/assets/{calendar-days-D22ithNF.js → calendar-days-OaIQ06qD.js} +1 -1
- package/dashboard/dist/assets/{check-Dk7tknvE.js → check-D888uFpx.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-DdyEzQ4f.js → chevron-down-BJ0BpS_w.js} +1 -1
- package/dashboard/dist/assets/{cloud-checkout-BJjbipnH.js → cloud-checkout-BeOpEJTZ.js} +1 -1
- package/dashboard/dist/assets/{composite-DEqP00XV.js → composite-CUuXvKos.js} +1 -1
- package/dashboard/dist/assets/{download-C9ixNyzn.js → download-BJ7CKwx5.js} +1 -1
- package/dashboard/dist/assets/{external-link-DL4HSsLw.js → external-link-CDaZwJVN.js} +1 -1
- package/dashboard/dist/assets/{flame-DqNH65nB.js → flame-ChyUKs-9.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-CyVjKz4I.js → format-tokens-B6WX7zcH.js} +1 -1
- package/dashboard/dist/assets/{gift-ChJQQe_G.js → gift-CQlAZUJ5.js} +1 -1
- package/dashboard/dist/assets/{host-mode-DpUDpoOz.js → host-mode-Gw6KD5OJ.js} +1 -1
- package/dashboard/dist/assets/{icons-CJiHeOaU.js → icons-C7gGTMuQ.js} +1 -1
- package/dashboard/dist/assets/{index-72LQsAaf.js → index-Bm2dDAVL.js} +1 -1
- package/dashboard/dist/assets/{index-BucEg3fu.js → index-C0pbymQa.js} +1 -1
- package/dashboard/dist/assets/{index-CrFlTSra.js → index-CLb64Tlj.js} +1 -1
- package/dashboard/dist/assets/{info-DReYqxC7.js → info-CvOmd88O.js} +1 -1
- package/dashboard/dist/assets/{link-2-kIZbhK2S.js → link-2-BNEPxvlF.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-1An-X85y.js → loader-circle-bRHxCgY3.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-FoVheEKT.js → modifiers.esm-D-X0-uvt.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-Ch6lr_P2.js → monitor-smartphone-Bo7d-q73.js} +1 -1
- package/dashboard/dist/assets/{play-CbJ6ZF1K.js → play-DqpGELN5.js} +1 -1
- package/dashboard/dist/assets/{plus-C-5ID3a9.js → plus-2fA1tz7S.js} +1 -1
- package/dashboard/dist/assets/{provider-display-BFzRtoL2.js → provider-display-B1KigDYZ.js} +1 -1
- package/dashboard/dist/assets/{react-D4CR_fLQ.js → react-DYja9tZG.js} +1 -1
- package/dashboard/dist/assets/{safePolygon-DP21Ibqj.js → safePolygon-BerB8y-A.js} +1 -1
- package/dashboard/dist/assets/{search-CaznkY7U.js → search-CU6UVI1L.js} +1 -1
- package/dashboard/dist/assets/{server-CUOmC6xZ.js → server-CZR4PTdb.js} +1 -1
- package/dashboard/dist/assets/{shield-check-Dr2KBMmA.js → shield-check-BGbNmrMP.js} +1 -1
- package/dashboard/dist/assets/{skills-api-BAz_fblS.js → skills-api-CJLEzxDf.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-knEfm5hE.js → sortable.esm-CJ1NZWER.js} +1 -1
- package/dashboard/dist/assets/{store-CL97jcij.js → store-CJFdru_6.js} +1 -1
- package/dashboard/dist/assets/{terminal-EjFyreWj.js → terminal-ClyQ8tvQ.js} +1 -1
- package/dashboard/dist/assets/{trash-ByqaZXkQ.js → trash-Dg2PWl5-.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-Bs4RDJZE.js → use-community-stats-Ca995kap.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-CG3Ir1cP.js → use-latest-request-guard-BKbMGVji.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-tACgCxeR.js → use-limits-display-prefs-CGyd8lvc.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-CWjXyJXi.js → use-native-settings-Dqeuqm9O.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-DsuC9JQa.js → use-ordered-list-Nj7R1iUu.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-CGMbDpHQ.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-NeoJE8BL.js → use-session-efficiency-pref-C_H5BaGV.js} +1 -1
- package/dashboard/dist/assets/{use-transform-BWGKOsya.js → use-transform-CC90hurD.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-CFWFNwHS.js → use-usage-limits-DtaaE7D8.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-B_C4_P5x.js → useCurrency-CMHIL39_.js} +1 -1
- package/dashboard/dist/assets/{usePositioner-B0L5_o38.js → usePositioner-CRSfrGQq.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-DH1GWHSU.js → useTokenFormat-B5jhM_Kb.js} +1 -1
- package/dashboard/dist/assets/{zap-Chv1p7pS.js → zap-CKx8ySZs.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/package.json +1 -1
- package/src/commands/sync.js +25 -3
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +334 -52
- package/dashboard/dist/assets/DialogDescription-Di5ev5K6.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-CwFguzkm.js +0 -1
package/src/commands/sync.js
CHANGED
|
@@ -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
|
-
|
|
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) {}
|