vibe-coding-tracker 2.2.1__tar.gz → 2.2.3__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: vibe-coding-tracker
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: Vibe Coding Tracker - AI coding assistant telemetry/usage parser, aggregate JSONL events into CodeAnalysis results
5
5
  Keywords: cli,ai,coding-assistant,telemetry,claude,codex,gemini,usage-tracker,analytics
6
6
  Author: Wei Lee
@@ -28,8 +28,8 @@ Description-Content-Type: text/markdown
28
28
 
29
29
  # Vibe Coding Tracker — AI Coding Assistant Usage Tracker
30
30
 
31
- [![Crates.io](https://img.shields.io/crates/v/vibe_coding_tracker?logo=rust&style=flat-square&color=E05D44)](https://crates.io/crates/vibe_coding_tracker)
32
- [![Crates.io Downloads](https://img.shields.io/crates/d/vibe_coding_tracker?logo=rust&style=flat-square)](https://crates.io/crates/vibe_coding_tracker)
31
+ [![Crates.io](https://img.shields.io/crates/v/vct-cli?logo=rust&style=flat-square&color=E05D44)](https://crates.io/crates/vct-cli)
32
+ [![Crates.io Downloads](https://img.shields.io/crates/d/vct-cli?logo=rust&style=flat-square)](https://crates.io/crates/vct-cli)
33
33
  [![npm version](https://img.shields.io/npm/v/vibe-coding-tracker?logo=npm&style=flat-square&color=CB3837)](https://www.npmjs.com/package/vibe-coding-tracker)
34
34
  [![npm downloads](https://img.shields.io/npm/dt/vibe-coding-tracker?logo=npm&style=flat-square)](https://www.npmjs.com/package/vibe-coding-tracker)
35
35
  [![PyPI version](https://img.shields.io/pypi/v/vibe_coding_tracker?logo=python&style=flat-square&color=3776AB)](https://pypi.org/project/vibe_coding_tracker/)
@@ -143,7 +143,7 @@ uvx vibe_coding_tracker usage
143
143
  Install using Cargo from the official Rust package registry:
144
144
 
145
145
  ```bash
146
- cargo install vibe_coding_tracker
146
+ cargo install vct-cli
147
147
  ```
148
148
 
149
149
  ### First Run
@@ -174,7 +174,7 @@ Commands:
174
174
  usage Display token usage statistics
175
175
  version Display version information
176
176
  update Update to the latest version from GitHub releases
177
- fetch Fetch a provider's raw quota/usage API response
177
+ quota Fetch a provider's raw quota/usage API response
178
178
  config Show or edit the persistent settings file (~/.vct/config.toml)
179
179
  help Print this message or the help of the given subcommand(s)
180
180
  ```
@@ -302,12 +302,15 @@ Totals (by Provider)
302
302
  "output_tokens": 936186,
303
303
  "cache_read_input_tokens": 138099926,
304
304
  "cache_creation_input_tokens": 6057836,
305
- "reasoning_output_tokens": 0
305
+ "reasoning_output_tokens": 0,
306
+ "total_tokens": 145495885
306
307
  }
307
308
  }
308
309
  ]
309
310
  ```
310
311
 
312
+ Every row serializes the same flat token fields regardless of provider (Codex's internal nested shape is normalized before output).
313
+
311
314
  ### What It Scans
312
315
 
313
316
  The tool automatically scans these directories:
@@ -321,7 +324,7 @@ The tool automatically scans these directories:
321
324
  - `~/.hermes/state.db` (Hermes — SQLite database, honors `$HERMES_HOME`; `usage` only)
322
325
  - `$GROK_HOME/sessions/*/*/signals.json` (Grok CLI — defaults to `~/.grok`; sibling `updates.jsonl` supplies `analysis` data)
323
326
 
324
- Grok `usage` is one point-in-time local context estimate: vct records `signals.json`'s `contextTokensUsed` as cache-read tokens and estimates cost at the model's cache-read price. It is not cumulative billed usage. `analysis` reconstructs completed Read / Write / Edit / Bash / TodoWrite operations from the sibling `updates.jsonl`. Grok does not support quota panels or `vct fetch`.
327
+ Grok `usage` is one point-in-time local context estimate: vct records `signals.json`'s `contextTokensUsed` as cache-read tokens and estimates cost at the model's cache-read price. It is not cumulative billed usage. `analysis` reconstructs completed Read / Write / Edit / Bash / TodoWrite operations from the sibling `updates.jsonl`. Grok does not support quota panels or `vct quota`.
325
328
 
326
329
  For noninteractive `usage` and `analysis` scans, vct exits with an error when every discovered source fails. If only some sources fail, it keeps the successful results and prints one diagnostic summary to stderr. The TUI stays best-effort and preserves its last successful payload instead.
327
330
 
@@ -532,12 +535,14 @@ The binary version is produced at build time by `build.rs` from `git describe`,
532
535
 
533
536
  ---
534
537
 
535
- ## Fetch Command
538
+ ## Quota Command
536
539
 
537
540
  **Print a provider's raw quota/usage API response — no parsing, no aggregation.**
538
541
 
539
542
  Calls the same quota endpoint the `usage` dashboard uses (Claude / Codex / Copilot / Cursor) exactly once and prints the raw body, so you can inspect the exact API shape or sanity-check your credentials. It reads each provider's stored credentials and does **not** refresh tokens: if a token is expired, re-auth with that provider's own CLI (`claude` / `codex` / `copilot` / `cursor-agent`).
540
543
 
544
+ > The previous name `vct fetch` is kept as a hidden alias, so existing scripts keep working.
545
+
541
546
  ### Flags
542
547
 
543
548
  | Flag | Purpose |
@@ -551,16 +556,16 @@ Calls the same quota endpoint the `usage` dashboard uses (Claude / Codex / Copil
551
556
 
552
557
  ```bash
553
558
  # Raw JSON (default)
554
- vct fetch claude
555
- vct fetch codex
556
- vct fetch copilot
557
- vct fetch cursor
559
+ vct quota claude
560
+ vct quota codex
561
+ vct quota copilot
562
+ vct quota cursor
558
563
 
559
564
  # Flattened plain text
560
- vct fetch codex --text
565
+ vct quota codex --text
561
566
 
562
567
  # Flattened key/value table
563
- vct fetch copilot --table
568
+ vct quota copilot --table
564
569
  ```
565
570
 
566
571
  > [!NOTE]
@@ -682,12 +687,15 @@ vct config migrate
682
687
  4. **Fuzzy (AI-powered)**: Uses Jaro-Winkler similarity (70% threshold)
683
688
  5. **Fallback**: Shows $0.00 if no match found
684
689
 
690
+ Generic placeholder names (e.g. `default`, what cursor-agent records for auto-mode sessions) and very short names never take a substring/fuzzy match — unpriced is safer than a coincidental neighbor's price.
691
+
685
692
  ### Cost Details
686
693
 
694
+ - **Context tiers are per request**: LiteLLM's "above Nk tokens" rates (e.g. GPT-5.x above 272k, Gemini above 200k) apply only to requests whose own prompt context crossed the threshold. Providers without per-request granularity — and offline scans — bill at base rates, so tiered-model costs are a lower bound there.
687
695
  - **Beyond tokens**: Claude web-search tool calls (`server_tool_use.web_search_requests`) are billed per query on top of the token cost; every other model's per-query charge is $0.
688
696
  - **OpenCode**: a novel model name is priced from its tokens only on an **exact** LiteLLM match; with no exact match, vct trusts the assistant message's own stored cost instead of guessing from a loosely-similar name.
689
697
  - **Hermes**: priced the same way as OpenCode — an **exact** LiteLLM match prices from tokens, otherwise vct uses Hermes's own stored cost.
690
- - **Grok**: `contextTokensUsed` is priced as cache-read tokens only; this is a point-in-time local context estimate, not cumulative billed usage.
698
+ - **Grok**: `contextTokensUsed` is priced as cache-read tokens only (falling back to the input rate when the model publishes no cache-read price); this is a point-in-time local context estimate, not cumulative billed usage.
691
699
  - **Cache is raw**: the daily cache stores the filtered upstream LiteLLM JSON (not a derived shape), so tiered / batch pricing stays available without re-fetching, and each pricing map owns a small in-process LRU so repeated lookups stay cheap without cross-map contamination.
692
700
 
693
701
  ---
@@ -2,8 +2,8 @@
2
2
 
3
3
  # Vibe Coding Tracker — AI Coding Assistant Usage Tracker
4
4
 
5
- [![Crates.io](https://img.shields.io/crates/v/vibe_coding_tracker?logo=rust&style=flat-square&color=E05D44)](https://crates.io/crates/vibe_coding_tracker)
6
- [![Crates.io Downloads](https://img.shields.io/crates/d/vibe_coding_tracker?logo=rust&style=flat-square)](https://crates.io/crates/vibe_coding_tracker)
5
+ [![Crates.io](https://img.shields.io/crates/v/vct-cli?logo=rust&style=flat-square&color=E05D44)](https://crates.io/crates/vct-cli)
6
+ [![Crates.io Downloads](https://img.shields.io/crates/d/vct-cli?logo=rust&style=flat-square)](https://crates.io/crates/vct-cli)
7
7
  [![npm version](https://img.shields.io/npm/v/vibe-coding-tracker?logo=npm&style=flat-square&color=CB3837)](https://www.npmjs.com/package/vibe-coding-tracker)
8
8
  [![npm downloads](https://img.shields.io/npm/dt/vibe-coding-tracker?logo=npm&style=flat-square)](https://www.npmjs.com/package/vibe-coding-tracker)
9
9
  [![PyPI version](https://img.shields.io/pypi/v/vibe_coding_tracker?logo=python&style=flat-square&color=3776AB)](https://pypi.org/project/vibe_coding_tracker/)
@@ -117,7 +117,7 @@ uvx vibe_coding_tracker usage
117
117
  Install using Cargo from the official Rust package registry:
118
118
 
119
119
  ```bash
120
- cargo install vibe_coding_tracker
120
+ cargo install vct-cli
121
121
  ```
122
122
 
123
123
  ### First Run
@@ -148,7 +148,7 @@ Commands:
148
148
  usage Display token usage statistics
149
149
  version Display version information
150
150
  update Update to the latest version from GitHub releases
151
- fetch Fetch a provider's raw quota/usage API response
151
+ quota Fetch a provider's raw quota/usage API response
152
152
  config Show or edit the persistent settings file (~/.vct/config.toml)
153
153
  help Print this message or the help of the given subcommand(s)
154
154
  ```
@@ -276,12 +276,15 @@ Totals (by Provider)
276
276
  "output_tokens": 936186,
277
277
  "cache_read_input_tokens": 138099926,
278
278
  "cache_creation_input_tokens": 6057836,
279
- "reasoning_output_tokens": 0
279
+ "reasoning_output_tokens": 0,
280
+ "total_tokens": 145495885
280
281
  }
281
282
  }
282
283
  ]
283
284
  ```
284
285
 
286
+ Every row serializes the same flat token fields regardless of provider (Codex's internal nested shape is normalized before output).
287
+
285
288
  ### What It Scans
286
289
 
287
290
  The tool automatically scans these directories:
@@ -295,7 +298,7 @@ The tool automatically scans these directories:
295
298
  - `~/.hermes/state.db` (Hermes — SQLite database, honors `$HERMES_HOME`; `usage` only)
296
299
  - `$GROK_HOME/sessions/*/*/signals.json` (Grok CLI — defaults to `~/.grok`; sibling `updates.jsonl` supplies `analysis` data)
297
300
 
298
- Grok `usage` is one point-in-time local context estimate: vct records `signals.json`'s `contextTokensUsed` as cache-read tokens and estimates cost at the model's cache-read price. It is not cumulative billed usage. `analysis` reconstructs completed Read / Write / Edit / Bash / TodoWrite operations from the sibling `updates.jsonl`. Grok does not support quota panels or `vct fetch`.
301
+ Grok `usage` is one point-in-time local context estimate: vct records `signals.json`'s `contextTokensUsed` as cache-read tokens and estimates cost at the model's cache-read price. It is not cumulative billed usage. `analysis` reconstructs completed Read / Write / Edit / Bash / TodoWrite operations from the sibling `updates.jsonl`. Grok does not support quota panels or `vct quota`.
299
302
 
300
303
  For noninteractive `usage` and `analysis` scans, vct exits with an error when every discovered source fails. If only some sources fail, it keeps the successful results and prints one diagnostic summary to stderr. The TUI stays best-effort and preserves its last successful payload instead.
301
304
 
@@ -506,12 +509,14 @@ The binary version is produced at build time by `build.rs` from `git describe`,
506
509
 
507
510
  ---
508
511
 
509
- ## Fetch Command
512
+ ## Quota Command
510
513
 
511
514
  **Print a provider's raw quota/usage API response — no parsing, no aggregation.**
512
515
 
513
516
  Calls the same quota endpoint the `usage` dashboard uses (Claude / Codex / Copilot / Cursor) exactly once and prints the raw body, so you can inspect the exact API shape or sanity-check your credentials. It reads each provider's stored credentials and does **not** refresh tokens: if a token is expired, re-auth with that provider's own CLI (`claude` / `codex` / `copilot` / `cursor-agent`).
514
517
 
518
+ > The previous name `vct fetch` is kept as a hidden alias, so existing scripts keep working.
519
+
515
520
  ### Flags
516
521
 
517
522
  | Flag | Purpose |
@@ -525,16 +530,16 @@ Calls the same quota endpoint the `usage` dashboard uses (Claude / Codex / Copil
525
530
 
526
531
  ```bash
527
532
  # Raw JSON (default)
528
- vct fetch claude
529
- vct fetch codex
530
- vct fetch copilot
531
- vct fetch cursor
533
+ vct quota claude
534
+ vct quota codex
535
+ vct quota copilot
536
+ vct quota cursor
532
537
 
533
538
  # Flattened plain text
534
- vct fetch codex --text
539
+ vct quota codex --text
535
540
 
536
541
  # Flattened key/value table
537
- vct fetch copilot --table
542
+ vct quota copilot --table
538
543
  ```
539
544
 
540
545
  > [!NOTE]
@@ -656,12 +661,15 @@ vct config migrate
656
661
  4. **Fuzzy (AI-powered)**: Uses Jaro-Winkler similarity (70% threshold)
657
662
  5. **Fallback**: Shows $0.00 if no match found
658
663
 
664
+ Generic placeholder names (e.g. `default`, what cursor-agent records for auto-mode sessions) and very short names never take a substring/fuzzy match — unpriced is safer than a coincidental neighbor's price.
665
+
659
666
  ### Cost Details
660
667
 
668
+ - **Context tiers are per request**: LiteLLM's "above Nk tokens" rates (e.g. GPT-5.x above 272k, Gemini above 200k) apply only to requests whose own prompt context crossed the threshold. Providers without per-request granularity — and offline scans — bill at base rates, so tiered-model costs are a lower bound there.
661
669
  - **Beyond tokens**: Claude web-search tool calls (`server_tool_use.web_search_requests`) are billed per query on top of the token cost; every other model's per-query charge is $0.
662
670
  - **OpenCode**: a novel model name is priced from its tokens only on an **exact** LiteLLM match; with no exact match, vct trusts the assistant message's own stored cost instead of guessing from a loosely-similar name.
663
671
  - **Hermes**: priced the same way as OpenCode — an **exact** LiteLLM match prices from tokens, otherwise vct uses Hermes's own stored cost.
664
- - **Grok**: `contextTokensUsed` is priced as cache-read tokens only; this is a point-in-time local context estimate, not cumulative billed usage.
672
+ - **Grok**: `contextTokensUsed` is priced as cache-read tokens only (falling back to the input rate when the model publishes no cache-read price); this is a point-in-time local context estimate, not cumulative billed usage.
665
673
  - **Cache is raw**: the daily cache stores the filtered upstream LiteLLM JSON (not a derived shape), so tiered / batch pricing stays available without re-fetching, and each pricing map owns a small in-process LRU so repeated lookups stay cheap without cross-map contamination.
666
674
 
667
675
  ---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vibe_coding_tracker"
3
- version = "2.2.1"
3
+ version = "2.2.3"
4
4
  description = "Vibe Coding Tracker - AI coding assistant telemetry/usage parser, aggregate JSONL events into CodeAnalysis results"
5
5
  authors = [
6
6
  { name = "Wei Lee", email = "mai@mai0313.com" }