tokentracker-cli 1.0.7 → 1.1.1
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.de.md +10 -5
- package/README.ja.md +8 -7
- package/README.ko.md +8 -7
- package/README.md +11 -9
- package/README.zh-CN.md +8 -7
- package/dashboard/dist/assets/{AchievementBadge-BI_HiL08.js → AchievementBadge-Dk6u95zc.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-CbK_pV0C.js → AchievementsPage-DGzIJJ2h.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-DEQycrwd.js → AchievementsSection-DaVrpiJ4.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-BdaHueq5.js → BadgeDetailModal-BFCscxTM.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-BATn4r97.js → BotAnimated-CrQkI3wD.js} +1 -1
- package/dashboard/dist/assets/{Card-C3_Fzc5V.js → Card-vaZ1_mSY.js} +1 -1
- package/dashboard/dist/assets/{ClawdAnimated-BidgYaVn.js → ClawdAnimated-CV14fpL_.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-D86_iwFa.js → CommandPalette-XAR6FIiO.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-CJuy4O88.js → CommunityStatsModal-DcMf6LXP.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-BaAc5rzt.js → ConfirmModal-Cf6rWUl4.js} +1 -1
- package/dashboard/dist/assets/{Controls-Brnf_QJ_.js → Controls-BQLLIIii.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-BmW622BX.js → DashboardPage-wXkhfR3l.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-DDrrY5AJ.js → DevicePage-DzCAsvYS.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-BNcKZCV5.js → DialogClose-Dh1DXLjH.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-wLKjV-9l.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-DL9AVJvk.js → DialogTitle-BhRP2R4n.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-BYwYqoVv.js → FadeIn-C0rmYYmJ.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-C71yS5fY.js → HeaderGithubStar-198FQmDH.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-nJQ-bK5U.js → HoverTooltip-ClzkNc3q.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-CTwXZRZk.js → IpCheckPage-DpN9xGZc.js} +1 -1
- package/dashboard/dist/assets/{LandingPage--GOHgrB4.js → LandingPage-BImwSrmg.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardAvatar-B7SjpjnT.js → LeaderboardAvatar-CU42rgGA.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-BmExdKSM.js → LeaderboardPage-Le_J0I7b.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProfileModal-C5cQqviO.js → LeaderboardProfileModal-DLyu6a2Y.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-DJ-09rX6.js → LeaderboardProfilePage-Dkfit9_X.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-CazL_F1h.js → LimitsPage-CNTDR2Yf.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-K3aCR52T.js → LocalOnlyNotice-DcjSbtm8.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-_FbeoBO0.js → LoginCard-CgpzXY1G.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-CYXuWlcp.js → LoginModal-BHNs7soq.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-NgvQXPTx.js → LoginPage-DaaWeKvj.js} +1 -1
- package/dashboard/dist/assets/{PetPage-CQ1aHdDU.js → PetPage-DSDJvZy7.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-BH948Enq.js → PopoverPopup-BJrL_Eyg.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-CTBbzd0x.js → ProviderIcon-De08Y4_I.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-GCsv0PKq.js → ResetPasswordPage-C4dwdur6.js} +1 -1
- package/dashboard/dist/assets/{SegmentedControl-D-a1T6Ay.js → SegmentedControl-CJRmt3or.js} +1 -1
- package/dashboard/dist/assets/{Select-BuBpeT1X.js → Select-Dojy3Frf.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-BJl0lY5n.js → SelectItemText-_uysSMQl.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-Xz-rDYxA.js → ServiceStatusPage-C3ZC1csM.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-BvJjRxbT.js → SessionsPage-BG-VlDWP.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-CDrrA4Z_.js → SettingsPage-Dr5gq6qj.js} +2 -2
- package/dashboard/dist/assets/{SkillsPage-C3YDKdBr.js → SkillsPage-Dh6Udkc3.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-CwBN1Nw2.js → TokenGalaxy-MVMMCH06.js} +1 -1
- package/dashboard/dist/assets/{ToolbarRootContext-2RKWzsAn.js → ToolbarRootContext-CPEvPTvc.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-CrCYxmL5.js → TrendMonitor-uFX8OtrM.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-CdJhuvNK.js → WidgetsPage-BqyLjoN0.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-xQN9f_Lg.js → WrappedPage-CIHbEOoq.js} +1 -1
- package/dashboard/dist/assets/__vite-browser-external-oFHfLR8i.js +45 -0
- package/dashboard/dist/assets/{agent-logos-fd9xH1K3.js → agent-logos-CAF9WeKO.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-DWTEaioI.js → arrow-up-right-y3EAs6Hg.js} +1 -1
- package/dashboard/dist/assets/{check-D7d6q9Tz.js → check-BH5FRF8F.js} +1 -1
- package/dashboard/dist/assets/{composite-xFyWluZ9.js → composite-Bl68G4Qr.js} +1 -1
- package/dashboard/dist/assets/{copy-BlQDmjZB.js → copy-Ce6L4gOk.js} +1 -1
- package/dashboard/dist/assets/{download-CCvNpDTW.js → download-p1XPZSMa.js} +1 -1
- package/dashboard/dist/assets/{external-link-D3CFEoOU.js → external-link-DGnoQUQ1.js} +1 -1
- package/dashboard/dist/assets/{flame-BVD3QAGl.js → flame-CltKUU4A.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-BeU_fDKc.js → format-tokens-BEIqtfnO.js} +1 -1
- package/dashboard/dist/assets/{icons-DT5tCQC8.js → icons-ByLLrgdQ.js} +1 -1
- package/dashboard/dist/assets/{index-7Rxzbfye.js → index-B79BltL7.js} +1 -1
- package/dashboard/dist/assets/{index-CB5EF37x.js → index-CKkbTkf_.js} +1 -1
- package/dashboard/dist/assets/{index-CuRJmltu.js → index-DU7IUcrN.js} +1 -1
- package/dashboard/dist/assets/{info-Ct8mnVg8.js → info-DOCG1uXG.js} +1 -1
- package/dashboard/dist/assets/{link-2-BkEYcjI7.js → link-2-B0HME1R-.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-Cwlqvkcz.js → loader-circle-B6dVl4Im.js} +1 -1
- package/dashboard/dist/assets/{maximize-2-Bfi31lVA.js → maximize-2-P4lRVuFz.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-DC5Ku6C4.js → modifiers.esm-C8Hm25xI.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-CjsPxNBN.js → monitor-smartphone-CoKP2dcs.js} +1 -1
- package/dashboard/dist/assets/{plus-CgM_CX0H.js → plus-CaDzdXql.js} +1 -1
- package/dashboard/dist/assets/{provider-display-TEnGljXd.js → provider-display-Cr0tI5r6.js} +1 -1
- package/dashboard/dist/assets/{react-CwlX45ob.js → react-C9Bg9RXS.js} +1 -1
- package/dashboard/dist/assets/{search-CKtoGzmW.js → search-CPdoCrMk.js} +1 -1
- package/dashboard/dist/assets/{skills-api-DuBly_gc.js → skills-api-DVU6coYZ.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-BNsp-WHM.js → sortable.esm-Cj2-YumT.js} +1 -1
- package/dashboard/dist/assets/{store-BTs6kZtj.js → store-npers9xW.js} +1 -1
- package/dashboard/dist/assets/{terminal-DPMN8gR5.js → terminal-CJyI1G2f.js} +1 -1
- package/dashboard/dist/assets/{trash-BDR38M5I.js → trash-BMmBe_XE.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-Deg7skO9.js → use-community-stats-DPEyQ7FC.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-Bs2kD7b1.js → use-latest-request-guard-BIjzEUC7.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-BgdguDzu.js → use-limits-display-prefs-Dx9nZB5K.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-ezT84-W6.js → use-ordered-list-BVfyhpWi.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-D_7LzLSe.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-CTxl79WJ.js → use-session-efficiency-pref-DFdlqCsV.js} +1 -1
- package/dashboard/dist/assets/{use-transform-BpIPybsm.js → use-transform-DYM391E0.js} +1 -1
- package/dashboard/dist/assets/use-usage-limits-ucoHKjM6.js +1 -0
- package/dashboard/dist/assets/{useCurrency-e-C23rLv.js → useCurrency-Cp27r6z0.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-D_LHEY77.js → useTokenFormat-CXx5hVTJ.js} +1 -1
- package/dashboard/dist/assets/{zap-CjrBTjSn.js → zap-D2E3JNcE.js} +1 -1
- package/dashboard/dist/brand-logos/cline.png +0 -0
- package/dashboard/dist/index.html +13 -11
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/llms.txt +3 -2
- package/dashboard/dist/share.html +1 -1
- package/package.json +2 -2
- package/src/commands/init.js +25 -0
- package/src/commands/status.js +31 -0
- package/src/commands/sync.js +39 -0
- package/src/lib/pricing/curated-overrides.json +15 -0
- package/src/lib/pricing/index.js +6 -3
- package/src/lib/pricing/matcher.js +7 -0
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +516 -17
- package/src/lib/zcode-limits.js +147 -16
- package/dashboard/dist/assets/DialogDescription-CSvbgRdI.js +0 -1
- package/dashboard/dist/assets/__vite-browser-external-CMMzxCk7.js +0 -45
- package/dashboard/dist/assets/use-reduced-motion-TNdjFH8O.js +0 -1
- package/dashboard/dist/assets/use-usage-limits-ts6E8fNZ.js +0 -1
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
"iflytek_maas_pricing_note": "iFlytek MaaS inference prices supplied for AStudio on 2026-08-31. AStudio homepage: https://agent.xfyun.cn/. Official pricing source: https://maas.xfyun.cn/modelSquare. Source values are RMB per million tokens, converted at 7.2 RMB/USD, then rounded to two decimal places for billing. Models without a dedicated cache-hit price use the normal input rate; cache writes also use the normal input rate. iFlytek MaaS prices are source-scoped and do not inherit DeepSeek time-of-use discounts."
|
|
7
7
|
},
|
|
8
8
|
"exact": {
|
|
9
|
+
"cline-gateway-models": {
|
|
10
|
+
"input": 0,
|
|
11
|
+
"output": 0,
|
|
12
|
+
"cache_read": 0,
|
|
13
|
+
"cache_write": 0,
|
|
14
|
+
"note": "Cline's own gateway namespaces (`cline-free/*` free tier, `cline-pass/*` flat-rate Cline Pass). Cline's shipped model catalog declares pricing 0 for every id in both namespaces, so a turn there has no marginal per-token cost — same convention as PI_SUBSCRIPTION_SOURCES. The fuzzy entries at the top of `fuzzy` route both prefixes here BEFORE the model names can match a public rate (`cline-pass/glm-5.3` must not bill GLM-5.3 list price, `cline-free/deepseek-v4.1-flash` must not bill DeepSeek). Verified against Cline 0.0.32 (/Applications/Cline.app model catalog + `usageDelta` cost, which stays 0 for both namespaces). A Cline turn that DOES report a positive per-call cost is honoured first because `cline` is listed in SOURCES_WITH_AUTHORITATIVE_COST in pricing/index.js. Remove or re-point these entries when Cline publishes per-token pricing for either namespace."
|
|
15
|
+
},
|
|
9
16
|
"claude-fable-5": {
|
|
10
17
|
"input": 10,
|
|
11
18
|
"output": 50,
|
|
@@ -524,6 +531,14 @@
|
|
|
524
531
|
}
|
|
525
532
|
},
|
|
526
533
|
"fuzzy": [
|
|
534
|
+
{
|
|
535
|
+
"match": "cline-free/",
|
|
536
|
+
"ref": "cline-gateway-models"
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"match": "cline-pass/",
|
|
540
|
+
"ref": "cline-gateway-models"
|
|
541
|
+
},
|
|
527
542
|
{
|
|
528
543
|
"match": "gpt-6-astra",
|
|
529
544
|
"ref": "gpt-6-astra"
|
package/src/lib/pricing/index.js
CHANGED
|
@@ -29,7 +29,7 @@ const LOCAL_INFERENCE_SOURCES = new Set(["lmstudio"]);
|
|
|
29
29
|
// including cached tokens, never a session/day aggregate. Astra supports
|
|
30
30
|
// a larger context window; only observed request subsets receive the premium.
|
|
31
31
|
const OPENAI_LONG_CONTEXT_INPUT_THRESHOLD = 272_000;
|
|
32
|
-
const SOURCES_WITH_AUTHORITATIVE_COST = new Set(["grok"]);
|
|
32
|
+
const SOURCES_WITH_AUTHORITATIVE_COST = new Set(["grok", "cline"]);
|
|
33
33
|
const SEED_SNAPSHOT_PATH = path.resolve(__dirname, "seed-snapshot.json");
|
|
34
34
|
const DEEPSEEK_TIME_PRICED_MODELS = [
|
|
35
35
|
"deepseek-v4-flash",
|
|
@@ -198,12 +198,15 @@ function computeRowCost(row) {
|
|
|
198
198
|
const pricing = getRowPricing(row);
|
|
199
199
|
// OmO, like Codex, reports reasoning as a subset of `output` (its own
|
|
200
200
|
// usage.cost bills no separate reasoning component), so charging it again
|
|
201
|
-
// here would double-bill every reasoning token.
|
|
201
|
+
// here would double-bill every reasoning token. Cline is the same: its
|
|
202
|
+
// `outputTokens` is the AI SDK total (text + reasoning), so
|
|
203
|
+
// reasoning_output_tokens is a subset marker, never a second line item.
|
|
202
204
|
const reasoningIncludedInOutput =
|
|
203
205
|
row.source === "codex" ||
|
|
204
206
|
row.source === "acode" ||
|
|
205
207
|
row.source === "every-code" ||
|
|
206
|
-
row.source === "omo"
|
|
208
|
+
row.source === "omo" ||
|
|
209
|
+
row.source === "cline";
|
|
207
210
|
const reasoningCost = reasoningIncludedInOutput
|
|
208
211
|
? 0
|
|
209
212
|
: (row.reasoning_output_tokens || 0) * (pricing.output || 0);
|
|
@@ -256,6 +256,13 @@ function lookupPricing(model, { curated, litellm, source } = {}) {
|
|
|
256
256
|
// 0. CURATED source exact. Source-specific prices apply only to their source,
|
|
257
257
|
// preventing collisions with public prices for same-named models from other CLIs.
|
|
258
258
|
const sourceKey = typeof source === "string" ? source.toLowerCase() : "";
|
|
259
|
+
if (sourceKey === "cline" && lower.endsWith(":free")) {
|
|
260
|
+
return {
|
|
261
|
+
hit: true,
|
|
262
|
+
source: "curated:cline-free-suffix",
|
|
263
|
+
value: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
|
|
264
|
+
};
|
|
265
|
+
}
|
|
259
266
|
// AStudio does not disclose its routed model. Stop before generic aliases
|
|
260
267
|
// and fuzzy matching can turn an unresolved router into a priced model.
|
|
261
268
|
if (sourceKey === "acode" && (lower === "auto" || lower.endsWith("-auto"))) {
|