tokentracker-cli 0.40.0 → 0.41.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 +1 -1
- package/README.ko.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dashboard/dist/assets/{ActivityHeatmap-D0gkN1RW.js → ActivityHeatmap-DAyvtRkn.js} +1 -1
- package/dashboard/dist/assets/{Card-DgaNailB.js → Card-DByZ3SxT.js} +1 -1
- package/dashboard/dist/assets/DashboardPage-DJLLG7DG.js +19 -0
- package/dashboard/dist/assets/{DevicePage-WxD3UOS4.js → DevicePage-BkGbFsCV.js} +1 -1
- package/dashboard/dist/assets/DialogTitle-BhNOpzk4.js +1 -0
- package/dashboard/dist/assets/{FadeIn-CIowr92k.js → FadeIn-CQ0uWwqS.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-BG7mHinn.js → HeaderGithubStar-OlcZIZs-.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-BEf8N-sD.js → IpCheckPage-VaBccp0v.js} +1 -1
- package/dashboard/dist/assets/LandingPage-BbOOtp0W.js +4411 -0
- package/dashboard/dist/assets/{LeaderboardAvatar-tq8LphKG.js → LeaderboardAvatar-B26XN7XT.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-DeeyHMbP.js → LeaderboardPage-D43tLe4r.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfileModal-Dj5nnKZq.js → LeaderboardProfileModal-Cc3TV4wl.js} +3 -3
- package/dashboard/dist/assets/LeaderboardProfilePage-DAVuscsT.js +1 -0
- package/dashboard/dist/assets/LimitsPage-HXB3ON_M.js +2 -0
- package/dashboard/dist/assets/{LocalOnlyNotice-DDvq44QO.js → LocalOnlyNotice-BtgOf0xW.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-BaOQo7cY.js → LoginPage-CHNz2uuj.js} +1 -1
- package/dashboard/dist/assets/PopoverPopup-i1aCasNO.js +1 -0
- package/dashboard/dist/assets/Select-Dn4TdKJu.js +1 -0
- package/dashboard/dist/assets/SelectItemText-D2YtMFj0.js +1 -0
- package/dashboard/dist/assets/SettingsPage-D-44xtnb.js +1 -0
- package/dashboard/dist/assets/SkillsPage-Bt8e5ROp.js +1 -0
- package/dashboard/dist/assets/WidgetsPage-CGnhXDpP.js +1 -0
- package/dashboard/dist/assets/{WrappedPage-DHiRPuq6.js → WrappedPage-FEgpbrfx.js} +1 -1
- package/dashboard/dist/assets/{agent-logos-CKVvzLb1.js → agent-logos-2LgC_fmg.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-CEarB9tV.js → arrow-up-right-Al34G4US.js} +1 -1
- package/dashboard/dist/assets/{download-Bh0gjfze.js → download-BorAs8Ai.js} +1 -1
- package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-CeA7eGSt.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-DoshcOXv.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-BgLpzsdg.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-BkE2O7RC.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-4t7P5rT3.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-DpJKySxv.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-CVPizhN4.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-DDpyx8f0.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-400-normal-BXAprPdR.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-400-normal-DKaoCDn5.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-500-normal-C3sF8Y1B.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-500-normal-YfPbDI_o.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-700-normal-CzSaXH83.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-700-normal-DMoeyBRY.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-900-normal-DAGlevET.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-900-normal-DVg4HgZN.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-C1xxG8eb.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-a1APXIwD.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-CDyCFkgU.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-CzSM7th5.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-BG1muzu_.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-BmQm3zK6.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-DvYIGD1f.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-LB8u5xx5.woff +0 -0
- package/dashboard/dist/assets/geist-mono-symbols2-400-normal-B5fXMCGq.woff +0 -0
- package/dashboard/dist/assets/geist-mono-symbols2-500-normal-BYvOiszX.woff +0 -0
- package/dashboard/dist/assets/geist-mono-symbols2-700-normal-nLp0AmIG.woff +0 -0
- package/dashboard/dist/assets/geist-mono-symbols2-900-normal-DPuoOkkO.woff +0 -0
- package/dashboard/dist/assets/geist-mono-vietnamese-400-normal-CyOwoevh.woff +0 -0
- package/dashboard/dist/assets/geist-mono-vietnamese-500-normal-Do_laDd2.woff +0 -0
- package/dashboard/dist/assets/geist-mono-vietnamese-700-normal-DKtT8o3X.woff +0 -0
- package/dashboard/dist/assets/geist-mono-vietnamese-900-normal-BAZIExb_.woff +0 -0
- package/dashboard/dist/assets/{info-BVM2oiQP.js → info-BjMpOQ6L.js} +1 -1
- package/dashboard/dist/assets/main-BZIH6355.js +995 -0
- package/dashboard/dist/assets/main-DTwPGswA.css +1 -0
- package/dashboard/dist/assets/use-limits-display-prefs-CMcyG3Sf.js +1 -0
- package/dashboard/dist/assets/{use-native-settings-BoIA6w2j.js → use-native-settings-Dda0lUdD.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-Co8ywhqF.js → use-usage-limits-DpD2WuDG.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-CuLnDPms.js → useCurrency-Bar8ZQys.js} +1 -1
- package/dashboard/dist/assets/useScrollLock-g4Jj83C_.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +3 -3
- package/src/lib/grok-limits.js +184 -0
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +32 -16
- package/src/lib/usage-limits.js +6 -1
- package/dashboard/dist/assets/DashboardPage-CV_vq3RD.js +0 -19
- package/dashboard/dist/assets/DialogTitle-HpCbbWQz.js +0 -1
- package/dashboard/dist/assets/LandingPage-DWhpEISl.js +0 -4356
- package/dashboard/dist/assets/LeaderboardProfilePage-BMJyZxKC.js +0 -1
- package/dashboard/dist/assets/LimitsPage-DV6egWEj.js +0 -2
- package/dashboard/dist/assets/PopoverPopup-BhquCaxW.js +0 -1
- package/dashboard/dist/assets/Select-BBsxYIty.js +0 -1
- package/dashboard/dist/assets/SelectItemText-DV94Rvfw.js +0 -1
- package/dashboard/dist/assets/SettingsPage-D6kfA65g.js +0 -1
- package/dashboard/dist/assets/SkillsPage-BxzsmE10.js +0 -1
- package/dashboard/dist/assets/WidgetsPage-CtYs9AGI.js +0 -1
- package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-CJBLNVQT.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-mNhfPmgl.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-DH5Q319x.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-VCNRadI3.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-BKC3PZkM.woff +0 -0
- package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-DdrQ8KBw.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-400-normal-CoULgQGM.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-500-normal-D3o2eNa9.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-500-normal-DOxI7kZ4.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-700-normal-D6izGJRP.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-700-normal-QGw08Lff.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-900-normal-CmoKXrdK.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-900-normal-Cu5MFKsu.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-CxNRRMGd.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-CQcGuCNt.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-diTenJ8L.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-BX9f1BHp.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-YOllDaLV.woff2 +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-Br6WNUGb.woff +0 -0
- package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-CrmBTzU2.woff2 +0 -0
- package/dashboard/dist/assets/main-BMyBoVLI.css +0 -1
- package/dashboard/dist/assets/main-CPiNtuB_.js +0 -971
- package/dashboard/dist/assets/use-limits-display-prefs-kAa9p8ua.js +0 -1
- package/dashboard/dist/assets/useOpenInteractionType-CAJUA73r.js +0 -12
package/src/lib/rollout.js
CHANGED
|
@@ -4420,26 +4420,42 @@ async function parseKimiCodeIncremental({ wireFiles, cursors, queuePath, onProgr
|
|
|
4420
4420
|
|
|
4421
4421
|
recordsProcessed++;
|
|
4422
4422
|
|
|
4423
|
-
//
|
|
4424
|
-
//
|
|
4425
|
-
//
|
|
4426
|
-
//
|
|
4427
|
-
|
|
4423
|
+
// kimi-code's wire usage comes in two shapes across versions:
|
|
4424
|
+
// - camelCase (proto 0.6.0+, current): { inputOther, inputCacheRead,
|
|
4425
|
+
// inputCacheCreation, output } where inputOther is already fresh
|
|
4426
|
+
// (non-cached) input — this is `response.usage` straight from the LLM
|
|
4427
|
+
// adapter (verified in @moonshot-ai/kimi-code 0.6.0/0.7.0/0.9.0).
|
|
4428
|
+
// - Anthropic-style (older): { input_tokens, output_tokens,
|
|
4429
|
+
// cache_read_input_tokens, cache_creation_input_tokens }. OpenAI-compat
|
|
4430
|
+
// models fold cached reads into input_tokens and expose them via
|
|
4431
|
+
// input_tokens_details.cached_tokens — subtract so we never double-count.
|
|
4432
|
+
// step.end and usage.record carry the SAME per-step usage object, so we
|
|
4433
|
+
// read only step.end here (reading both would double-count ~2x).
|
|
4434
|
+
let cacheCreation;
|
|
4428
4435
|
let cacheRead;
|
|
4429
4436
|
let input;
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
input = toNonNegativeInt(usage.
|
|
4437
|
+
let output;
|
|
4438
|
+
if (usage.inputOther != null) {
|
|
4439
|
+
input = toNonNegativeInt(usage.inputOther);
|
|
4440
|
+
cacheRead = toNonNegativeInt(usage.inputCacheRead);
|
|
4441
|
+
cacheCreation = toNonNegativeInt(usage.inputCacheCreation);
|
|
4442
|
+
output = toNonNegativeInt(usage.output);
|
|
4433
4443
|
} else {
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4444
|
+
cacheCreation = toNonNegativeInt(usage.cache_creation_input_tokens);
|
|
4445
|
+
if (usage.cache_read_input_tokens != null) {
|
|
4446
|
+
cacheRead = toNonNegativeInt(usage.cache_read_input_tokens);
|
|
4447
|
+
input = toNonNegativeInt(usage.input_tokens);
|
|
4448
|
+
} else {
|
|
4449
|
+
const details =
|
|
4450
|
+
usage.input_tokens_details && typeof usage.input_tokens_details === "object"
|
|
4451
|
+
? usage.input_tokens_details
|
|
4452
|
+
: null;
|
|
4453
|
+
const cached = toNonNegativeInt(details ? details.cached_tokens : 0);
|
|
4454
|
+
cacheRead = cached;
|
|
4455
|
+
input = Math.max(0, toNonNegativeInt(usage.input_tokens) - cached);
|
|
4456
|
+
}
|
|
4457
|
+
output = toNonNegativeInt(usage.output_tokens);
|
|
4441
4458
|
}
|
|
4442
|
-
const output = toNonNegativeInt(usage.output_tokens);
|
|
4443
4459
|
if (input === 0 && output === 0 && cacheRead === 0 && cacheCreation === 0) {
|
|
4444
4460
|
seenIds.add(id);
|
|
4445
4461
|
continue;
|
package/src/lib/usage-limits.js
CHANGED
|
@@ -21,6 +21,7 @@ const {
|
|
|
21
21
|
extractCursorSessionToken,
|
|
22
22
|
fetchCursorUsageSummary,
|
|
23
23
|
} = require("./cursor-config");
|
|
24
|
+
const { fetchGrokLimits } = require("./grok-limits");
|
|
24
25
|
|
|
25
26
|
// 2-minute in-memory cache
|
|
26
27
|
let cache = { data: null, fetchedAt: 0 };
|
|
@@ -1698,7 +1699,7 @@ async function getUsageLimits({
|
|
|
1698
1699
|
const codexPlanType = codexAuthRefreshed?.planType || null;
|
|
1699
1700
|
|
|
1700
1701
|
const providerFetch = withFetchTimeout(fetchImpl, providerTimeoutMs);
|
|
1701
|
-
const [claudeResult, codexResult, cursor, kimi, gemini, kiro, antigravity, copilot] = await Promise.all([
|
|
1702
|
+
const [claudeResult, codexResult, cursor, kimi, gemini, kiro, antigravity, copilot, grok] = await Promise.all([
|
|
1702
1703
|
claudeToken
|
|
1703
1704
|
? withProviderTimeout(fetchClaudeUsageLimits(claudeToken, { fetchImpl: providerFetch, maxAttempts: 1 }), "Claude", providerTimeoutMs).then(
|
|
1704
1705
|
(value) => ({ status: "fulfilled", value }),
|
|
@@ -1725,6 +1726,8 @@ async function getUsageLimits({
|
|
|
1725
1726
|
fetchAntigravityLimits({ home, commandRunner, requestFn, nowMs }),
|
|
1726
1727
|
withProviderTimeout(fetchCopilotLimits({ home, env, fetchImpl: providerFetch }), "GitHub Copilot", providerTimeoutMs)
|
|
1727
1728
|
.catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
|
|
1729
|
+
withProviderTimeout(fetchGrokLimits({ home, env, fetchImpl: providerFetch }), "Grok Build", providerTimeoutMs)
|
|
1730
|
+
.catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
|
|
1728
1731
|
]);
|
|
1729
1732
|
|
|
1730
1733
|
let claude;
|
|
@@ -1776,6 +1779,7 @@ async function getUsageLimits({
|
|
|
1776
1779
|
kiro: withPlanLabel(kiro, kiro.plan_name, "Kiro"),
|
|
1777
1780
|
antigravity: withPlanLabel(antigravity, antigravity.account_plan, "Antigravity"),
|
|
1778
1781
|
copilot: withPlanLabel(copilot, copilot.plan_name, "Copilot"),
|
|
1782
|
+
grok: withPlanLabel(grok, null, "Grok"),
|
|
1779
1783
|
};
|
|
1780
1784
|
|
|
1781
1785
|
cache = { data, fetchedAt: nowMs };
|
|
@@ -1803,4 +1807,5 @@ module.exports = {
|
|
|
1803
1807
|
fetchCopilotLimits,
|
|
1804
1808
|
readCopilotOauthToken,
|
|
1805
1809
|
describeCopilotOtelStatus,
|
|
1810
|
+
fetchGrokLimits,
|
|
1806
1811
|
};
|