tokentracker-cli 0.48.0 → 0.49.0
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.ja.md +3 -1
- package/README.ko.md +3 -1
- package/README.md +3 -1
- package/README.zh-CN.md +3 -1
- package/dashboard/dist/assets/{ActivityHeatmap-BW7r63JV.js → ActivityHeatmap-CItg7FNN.js} +1 -1
- package/dashboard/dist/assets/{Card-BWgji0yz.js → Card-B9jWqeQm.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-fwmRrxV3.js → DashboardPage-D-UdQdmb.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-rxxuM-iC.js → DevicePage-BmhKFgDo.js} +1 -1
- package/dashboard/dist/assets/{DialogTitle-ltZ7viR5.js → DialogTitle-Dcuz0ACc.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-DkGtOY3l.js → FadeIn-B-oMQCv_.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-CUKVYH9j.js → HeaderGithubStar-C6x-l5U0.js} +1 -1
- package/dashboard/dist/assets/IpCheckPage-D1tltH7T.js +20 -0
- package/dashboard/dist/assets/{LandingPage-Y2ovBPVG.js → LandingPage-DnjQLNxt.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardAvatar-DSGfEE93.js → LeaderboardAvatar-PNgWQxaR.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-BX4cvtg7.js → LeaderboardPage-DRCSwReV.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfileModal-CJfefuSR.js → LeaderboardProfileModal-DvbGnWDm.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfilePage-Xy0K-ppJ.js → LeaderboardProfilePage-Bmk16GFd.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-utdNxAg_.js → LimitsPage-DsdyKs5Z.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-CwGk0Fn3.js → LocalOnlyNotice-CIa2X9wJ.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-BHlX2ZHJ.js → LoginPage-CnDLx50g.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-BC4rHujH.js → PopoverPopup-ZsSFlvKU.js} +1 -1
- package/dashboard/dist/assets/{Select-BpDJKpfl.js → Select-CY2FgOFv.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-D1_H3hHS.js → SelectItemText-DI_GTNc2.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-DCVw-3Cv.js → SettingsPage-D1DZkCMo.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-B-9_Ufpw.js → SkillsPage-DorZCQ0W.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-DJ4i97QU.js → WidgetsPage-BDLa_UaU.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-W8pPcYr2.js → WrappedPage-BKn5Q7iM.js} +1 -1
- package/dashboard/dist/assets/{agent-logos-yJi-7lhN.js → agent-logos-CM4Rt9bu.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-BXhFthH9.js → arrow-up-right-jP0XdZdv.js} +1 -1
- package/dashboard/dist/assets/{download-D32KO7Ua.js → download-D8Hvx1kr.js} +1 -1
- package/dashboard/dist/assets/{info-C8QLdyUg.js → info-vv2jU1_C.js} +1 -1
- package/dashboard/dist/assets/{main-BmTIgbZL.js → main-9P4Ny5Xr.js} +15 -15
- package/dashboard/dist/assets/main-Br5SsufY.css +1 -0
- package/dashboard/dist/assets/{use-limits-display-prefs-DcmWcNeA.js → use-limits-display-prefs-BZVYlv9P.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-BLZi1heD.js → use-native-settings-CR_f7uLH.js} +1 -1
- package/dashboard/dist/assets/use-usage-limits-CvgpaBd_.js +1 -0
- package/dashboard/dist/assets/{useCurrency-ERbWumqM.js → useCurrency-Cq0FIlJZ.js} +1 -1
- package/dashboard/dist/assets/{useScrollLock-PJWfD6AS.js → useScrollLock-B5U1SJQV.js} +1 -1
- package/dashboard/dist/brand-logos/hermes.svg +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +1 -1
- package/src/commands/device-login.js +19 -3
- package/src/commands/sync.js +538 -348
- package/src/lib/local-api.js +11 -2
- package/src/lib/pricing/curated-overrides.json +2 -1
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +98 -16
- package/src/lib/usage-limits.js +118 -25
- package/src/lib/wrapped-aggregator.js +12 -1
- package/dashboard/dist/assets/IpCheckPage-DqrupqCq.js +0 -15
- package/dashboard/dist/assets/main-BfK9LoKV.css +0 -1
- package/dashboard/dist/assets/use-usage-limits-BIJk3Nmb.js +0 -1
package/src/lib/local-api.js
CHANGED
|
@@ -122,7 +122,9 @@ function readProjectQueueData(projectQueuePath) {
|
|
|
122
122
|
try {
|
|
123
123
|
const row = JSON.parse(line);
|
|
124
124
|
const key = `${row.project_key || ""}|${row.source || ""}|${row.hour_start || ""}`;
|
|
125
|
-
|
|
125
|
+
// Same legacy-row corrections as the main queue (codex inclusive-input,
|
|
126
|
+
// cursor billable=0) so both read paths report identical numbers.
|
|
127
|
+
seen.set(key, normalizeQueueRow(row));
|
|
126
128
|
} catch {
|
|
127
129
|
// skip malformed
|
|
128
130
|
}
|
|
@@ -472,7 +474,7 @@ function aggregateHourlyByDay(rows, dayKey, timeZoneContext) {
|
|
|
472
474
|
}
|
|
473
475
|
const bucket = byHour.get(hourKey);
|
|
474
476
|
bucket.total_tokens += row.total_tokens || 0;
|
|
475
|
-
bucket.billable_total_tokens += row.total_tokens
|
|
477
|
+
bucket.billable_total_tokens += row.billable_total_tokens ?? row.total_tokens ?? 0;
|
|
476
478
|
bucket.input_tokens += row.input_tokens || 0;
|
|
477
479
|
bucket.output_tokens += row.output_tokens || 0;
|
|
478
480
|
bucket.cached_input_tokens += row.cached_input_tokens || 0;
|
|
@@ -2133,4 +2135,11 @@ module.exports = {
|
|
|
2133
2135
|
getModelPricing,
|
|
2134
2136
|
computeRowCost,
|
|
2135
2137
|
ensurePricingLoaded,
|
|
2138
|
+
// Shared legacy-row correction so every queue reader (main queue, project
|
|
2139
|
+
// queue, wrapped aggregator) reports the same numbers for the same data.
|
|
2140
|
+
normalizeQueueRow,
|
|
2141
|
+
// Machine-stable identity (config.json machineId) — shared with
|
|
2142
|
+
// `tracker device-login` so the CLI device-flow anchors its cloud device
|
|
2143
|
+
// to the machine, not the hostname.
|
|
2144
|
+
getOrCreateMachineId,
|
|
2136
2145
|
};
|
|
@@ -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
|
-
"
|
|
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."
|
|
6
6
|
},
|
|
7
7
|
"exact": {
|
|
8
8
|
"claude-fable-5": { "input": 10, "output": 50, "cache_read": 1, "cache_write": 12.5, "note": "Fable 5 — Anthropic's top tier above Opus. Not yet in LiteLLM. $10/$50 per MTok; cache_read 0.1x, cache_write 1.25x. Remove once LiteLLM carries it." },
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
{ "match": "minimax-m2.7", "ref": "MiniMax-M2.7" },
|
|
64
64
|
{ "match": "deepseek-v4-flash", "ref": "deepseek-v4-flash" },
|
|
65
65
|
{ "match": "deepseek-v4-pro", "ref": "deepseek-v4-pro" },
|
|
66
|
+
{ "match": "kimi-k2.6", "ref": "kimi-k2.6" },
|
|
66
67
|
{ "match": "kimi", "ref": "kimi-k2.5" },
|
|
67
68
|
{ "match": "glm-4.5-airx", "ref": "glm-4.5-airx" },
|
|
68
69
|
{ "match": "glm-4.5-air", "ref": "glm-4.5-air" },
|