tokentracker-cli 0.17.2 → 0.18.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.md +2 -1
- package/README.zh-CN.md +4 -3
- package/dashboard/dist/assets/{Card-CgMq55sY.js → Card-8ZPdKuRR.js} +1 -1
- package/dashboard/dist/assets/DashboardPage-OVP6u_7i.js +1 -0
- package/dashboard/dist/assets/{FadeIn-DLhKBgqY.js → FadeIn-BxnaPv7O.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-C9HsEaL7.js → HeaderGithubStar-8z6DrTLD.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-XRIx0rfG.js → IpCheckPage-yagKgpi7.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-DXlrkwEx.js → LandingPage-Ca72J5F0.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-CIqzV9cT.js → LeaderboardPage-CSmW4lBz.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfilePage-IUgRwHTr.js → LeaderboardProfilePage-BOihURRE.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-OrcWqg7m.js → LimitsPage-Bq4zB2w9.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-BuSNuEnm.js → LoginPage-CoB1ZkE6.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-D6I_CIFY.js → PopoverPopup-D7d5-v70.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-Bp-wDvoj.js → ProviderIcon-DzvUcjPu.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-DiyJd4az.js → SettingsPage-BeyW1iTj.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-d8zU8wsf.js → SkillsPage-B6auz1NO.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-DJsxeeBY.js → WidgetsPage-C9t8qw0F.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-CFtbeaPZ.js → chevron-down-C8RgL-uJ.js} +1 -1
- package/dashboard/dist/assets/{download-HjhL2_eA.js → download-C90EEqc8.js} +1 -1
- package/dashboard/dist/assets/{leaderboard-columns-CrSoLL2s.js → leaderboard-columns-BgqTAms5.js} +1 -1
- package/dashboard/dist/assets/{main-CgJNueY2.js → main-DJcfmlDf.js} +2 -2
- package/dashboard/dist/assets/{use-limits-display-prefs-BW2QZr21.js → use-limits-display-prefs-BUBBOUIF.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-Bd1d-CVd.js → use-native-settings-CFUEzyoi.js} +1 -1
- package/dashboard/dist/assets/{use-reduced-motion-B0JB6MTu.js → use-reduced-motion-NZDZrVKK.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-OtRz0apS.js → use-usage-limits-CoOOhZrW.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/package.json +1 -1
- package/src/commands/serve.js +5 -1
- package/src/commands/sync.js +30 -0
- package/src/lib/local-api.js +84 -0
- package/src/lib/pricing/curated-overrides.json +2 -1
- package/src/lib/pricing/index.js +12 -4
- package/src/lib/pricing/matcher.js +45 -10
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +374 -0
- package/src/lib/usage-limits.js +2 -1
- package/dashboard/dist/assets/DashboardPage-DfBWYjnA.js +0 -1
package/README.md
CHANGED
|
@@ -160,11 +160,12 @@ Upgrade with `brew upgrade --cask mm7894215/tokentracker/tokentracker`. The tap
|
|
|
160
160
|
| **Grok Build** (xAI) | ✅ Auto | SessionEnd hook + passive `signals.json` scan (`~/.grok/sessions/**/signals.json`) |
|
|
161
161
|
| **Kilo CLI** (kilo.ai) | ✅ Auto | Passive SQLite reader (`~/.local/share/kilo/kilo.db`, OpenCode-fork schema) |
|
|
162
162
|
| **Kilo Code** (VS Code extension) | ✅ Auto | Passive `ui_messages.json` reader (Cursor/Code/CodeBuddy/Windsurf globalStorage) |
|
|
163
|
+
| **Antigravity** | ✅ Auto | Passive transcript reader (`~/.gemini/{antigravity,antigravity-ide,antigravity-cli}/brain/**/transcript.jsonl`) |
|
|
163
164
|
|
|
164
165
|
> **Do I need to install any plugin or hook manually?** No. `tokentracker` (or `tokentracker init`) handles everything on first run:
|
|
165
166
|
> - **Hook-based** tools (Claude Code, Codex, Gemini, Every Code, **CodeBuddy**, **Grok Build**) — we write a SessionEnd hook or TOML notify entry into the tool's own config.
|
|
166
167
|
> - **Plugin-based** tools (OpenCode, **OpenClaw**) — the plugin ships inside the npm package (`~/.tokentracker/app/openclaw-plugin/`). We link it via the tool's own CLI (`openclaw plugins install --link …` + `enable`). No download, no drag-and-drop.
|
|
167
|
-
> - **Passive readers** (Cursor, Kiro, Hermes, Kimi Code, Copilot, **Grok Build**, **oh-my-pi**, **Kilo CLI**, **Kilo Code**) — nothing is installed into those tools. We only read files they already produce (SQLite DB, JSONL, OTEL export).
|
|
168
|
+
> - **Passive readers** (Cursor, Kiro, Hermes, Kimi Code, Copilot, **Grok Build**, **oh-my-pi**, **Kilo CLI**, **Kilo Code**, **Antigravity**) — nothing is installed into those tools. We only read files they already produce (SQLite DB, JSONL, OTEL export).
|
|
168
169
|
> - **Grok Build estimate** — current `signals.json` data exposes `contextTokensUsed` snapshots, so TokenTracker estimates Grok usage and cost until per-call telemetry is available.
|
|
169
170
|
>
|
|
170
171
|
> Run `tokentracker status` anytime to verify every integration's state. If something shows `skipped`, the `detail` column explains why (e.g. tool CLI not on `PATH`, config unreadable).
|
package/README.zh-CN.md
CHANGED
|
@@ -78,7 +78,7 @@ brew install mm7894215/tokentracker/tokentracker
|
|
|
78
78
|
|
|
79
79
|
## ✨ 特性
|
|
80
80
|
|
|
81
|
-
- 🔌 **开箱即用支持
|
|
81
|
+
- 🔌 **开箱即用支持 17 款 AI 工具** —— Claude Code、Codex CLI、Cursor、Gemini CLI、Kiro、OpenCode、OpenClaw、Every Code、Hermes Agent、GitHub Copilot、Kimi Code、CodeBuddy、Grok Build、oh-my-pi、Kilo CLI、Kilo Code、Antigravity
|
|
82
82
|
- 🏠 **100% 本地** —— Token 数据绝不离开你的机器。无账号、无 API Key
|
|
83
83
|
- 🚀 **零配置** —— 首次运行自动安装所有 hook。30 秒从零到 Dashboard
|
|
84
84
|
- 📊 **漂亮的 Dashboard** —— 用量趋势、按模型的成本分解、GitHub 风格活跃度热力图、按项目归因
|
|
@@ -149,6 +149,7 @@ brew install mm7894215/tokentracker/tokentracker
|
|
|
149
149
|
| **Cursor** | ✅ 自动 | API + SQLite 中的 auth token |
|
|
150
150
|
| **Kiro** | ✅ 自动 | SQLite + JSONL 混合读取 |
|
|
151
151
|
| **Gemini CLI** | ✅ 自动 | SessionEnd hook |
|
|
152
|
+
| **Antigravity** | ✅ 自动 | 被动读取 transcript.jsonl(`~/.gemini/{antigravity,antigravity-ide,antigravity-cli}/brain/**/transcript.jsonl`) |
|
|
152
153
|
| **OpenCode** | ✅ 自动 | 插件系统 + SQLite |
|
|
153
154
|
| **OpenClaw** | ✅ 自动 | Session 插件 |
|
|
154
155
|
| **Every Code** | ✅ 自动 | TOML notify hook |
|
|
@@ -164,7 +165,7 @@ brew install mm7894215/tokentracker/tokentracker
|
|
|
164
165
|
> **需要手动装什么插件 / hook 吗?** 不需要。`tokentracker`(或 `tokentracker init`)第一次跑的时候会全部搞定:
|
|
165
166
|
> - **基于 hook 的工具**(Claude Code、Codex、Gemini、Every Code、**CodeBuddy**、**Grok Build**)—— 我们把 SessionEnd hook 或 TOML notify 条目写入它们自己的配置文件
|
|
166
167
|
> - **基于插件的工具**(OpenCode、**OpenClaw**)—— 插件随 npm 包一起分发(`~/.tokentracker/app/openclaw-plugin/`),通过对应工具自己的 CLI 挂接(`openclaw plugins install --link …` + `enable`)。无需下载、无需拖拽
|
|
167
|
-
> - **被动读取类**(Cursor、Kiro、Hermes、Kimi Code、Copilot、**Grok Build**、**oh-my-pi**、**Kilo CLI**、**Kilo Code**)—— 完全不往它们里面塞东西,只读取它们自己产生的文件(SQLite DB、JSONL、OTEL
|
|
168
|
+
> - **被动读取类**(Cursor、Kiro、Hermes、Kimi Code、Copilot、**Grok Build**、**oh-my-pi**、**Kilo CLI**、**Kilo Code**、**Antigravity**)—— 完全不往它们里面塞东西,只读取它们自己产生的文件(SQLite DB、JSONL、OTEL 导出、会话轨迹日志)
|
|
168
169
|
> - **Grok Build 估算说明** —— Grok 当前的 `signals.json` 暴露的是 `contextTokensUsed` 快照,所以在 Grok 提供按调用粒度的遥测之前,TokenTracker 对 Grok 的用量与成本是估算值
|
|
169
170
|
>
|
|
170
171
|
> 任何时候都可以用 `tokentracker status` 查看每个集成的状态。如果显示 `skipped`,`detail` 列会解释原因(例如某工具 CLI 不在 `PATH` 上、config 不可读等)。
|
|
@@ -401,7 +402,7 @@ xattr -cr /Applications/TokenTrackerBar.app
|
|
|
401
402
|
|
|
402
403
|
## 🙏 致谢
|
|
403
404
|
|
|
404
|
-
Clawd
|
|
405
|
+
Clawd 角色设计归属 Anthropic。本项目是社区项目,和 Anthropic 无官方隶属关系。
|
|
405
406
|
|
|
406
407
|
## License
|
|
407
408
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as r}from"./main-
|
|
1
|
+
import{D as r}from"./main-DJcfmlDf.js";function t({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200 ${s}`,children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{t as C};
|