vibe-coding-tracker 2.2.1__tar.gz → 2.2.2__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.2
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
@@ -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:
@@ -682,12 +685,15 @@ vct config migrate
682
685
  4. **Fuzzy (AI-powered)**: Uses Jaro-Winkler similarity (70% threshold)
683
686
  5. **Fallback**: Shows $0.00 if no match found
684
687
 
688
+ 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.
689
+
685
690
  ### Cost Details
686
691
 
692
+ - **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
693
  - **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
694
  - **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
695
  - **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.
696
+ - **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
697
  - **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
698
 
693
699
  ---
@@ -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:
@@ -656,12 +659,15 @@ vct config migrate
656
659
  4. **Fuzzy (AI-powered)**: Uses Jaro-Winkler similarity (70% threshold)
657
660
  5. **Fallback**: Shows $0.00 if no match found
658
661
 
662
+ 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.
663
+
659
664
  ### Cost Details
660
665
 
666
+ - **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
667
  - **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
668
  - **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
669
  - **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.
670
+ - **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
671
  - **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
672
 
667
673
  ---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vibe_coding_tracker"
3
- version = "2.2.1"
3
+ version = "2.2.2"
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" }