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.
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/PKG-INFO +23 -15
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/README.md +22 -14
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/pyproject.toml +1 -1
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/linux-arm64-gnu/vibe_coding_tracker +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/linux-x64-gnu/vibe_coding_tracker +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/macos-arm64/vibe_coding_tracker +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/macos-x64/vibe_coding_tracker +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/windows-arm64/vibe_coding_tracker.exe +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/binaries/windows-x64/vibe_coding_tracker.exe +0 -0
- {vibe_coding_tracker-2.2.1 → vibe_coding_tracker-2.2.3}/src/vibe_coding_tracker/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: vibe-coding-tracker
|
|
3
|
-
Version: 2.2.
|
|
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
|
-
[](https://crates.io/crates/vct-cli)
|
|
32
|
+
[](https://crates.io/crates/vct-cli)
|
|
33
33
|
[](https://www.npmjs.com/package/vibe-coding-tracker)
|
|
34
34
|
[](https://www.npmjs.com/package/vibe-coding-tracker)
|
|
35
35
|
[](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
|
|
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
|
-
|
|
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
|
|
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
|
-
##
|
|
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
|
|
555
|
-
vct
|
|
556
|
-
vct
|
|
557
|
-
vct
|
|
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
|
|
565
|
+
vct quota codex --text
|
|
561
566
|
|
|
562
567
|
# Flattened key/value table
|
|
563
|
-
vct
|
|
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
|
-
[](https://crates.io/crates/vct-cli)
|
|
6
|
+
[](https://crates.io/crates/vct-cli)
|
|
7
7
|
[](https://www.npmjs.com/package/vibe-coding-tracker)
|
|
8
8
|
[](https://www.npmjs.com/package/vibe-coding-tracker)
|
|
9
9
|
[](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
|
|
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
|
-
|
|
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
|
|
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
|
-
##
|
|
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
|
|
529
|
-
vct
|
|
530
|
-
vct
|
|
531
|
-
vct
|
|
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
|
|
539
|
+
vct quota codex --text
|
|
535
540
|
|
|
536
541
|
# Flattened key/value table
|
|
537
|
-
vct
|
|
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.
|
|
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" }
|
|
index 921854c..fb6b02d 100755
|
|
|
Binary file
|
|
index fbc8c69..eeb7178 100755
|
|
|
Binary file
|
|
index 7c8ca8f..567e955 100755
|
|
|
Binary file
|
|
index a8caac2..acf50b6 100755
|
|
|
Binary file
|
|
index 1175dd7..7a93fec 100644
|
|
|
Binary file
|
|
index bfe9d76..a6fa465 100644
|
|
|
Binary file
|
|
File without changes
|