token-monitor/docs/analyze.md
Hannibal Smith 34898b1196
Phase 2: analysis layer (analyze.js), cache guard, log hygiene
- analyze.js: burn rate, weekly reconstruction, cycle stagger, rotation
  rank, underspend alerts, log prune with weekly archive
- logger.js: getCachedRun(maxAgeMinutes) — skip probing if recent data exists
- monitor.js: cache guard at wake — 20-min dedup, zero extra API calls
- test.js: fix type assertion for gemini-api/xai-api providers (+5 passing);
  add 14 new tests for cache guard and analyze.js (162 total, all green)
- docs/analyze.md: usage reference

Co-authored-by: Hannibal Smith <hannibal@trentuna.com>
2026-04-05 04:49:05 +00:00

54 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# analyze.js — Token Monitor Analysis CLI
Reads accumulated JSONL logs from `~/.logs/token-monitor/` and produces burn
rates, weekly stats, reset schedule, and rotation recommendations.
## Usage
```
node analyze.js # full report (default)
node analyze.js --burn-rate # burn rate per account only
node analyze.js --weekly # weekly budget reconstruction
node analyze.js --stagger # reset schedule (next 48h)
node analyze.js --rotation # rotation recommendation only
node analyze.js --json # JSON output (all sections)
node analyze.js --provider team-nadja # filter to one provider
node analyze.js --prune # prune logs older than 30 days
node analyze.js --prune --dry-run # dry run — show what would be pruned
```
## Output sections
**Burn Rate** — delta analysis of 7d utilization over time, projected
exhaustion at current rate. Requires ≥ 2 data points per provider.
**Reset Schedule** — providers resetting within the next 48 hours, sorted
ascending by time to reset.
**Weekly Reconstruction** — peak and average 7d utilization per provider per
ISO week. Shows exhaustion events (status=rejected).
**Rotation Recommendation** — ranked provider list. Rules in priority order:
1. Invalid key → bottom (unusable)
2. Maxed/rejected → deprioritize; soonest reset wins tiebreaker
3. Dormant → reserve for cycle staggering
4. Active: rank by headroom (1 - utilization_7d)
**Underspend Alerts** — active accounts with ≥ 40% of 5h window unused and
< 2h until reset. These tokens expire unused boost them.
## Log format
Input: `~/.logs/token-monitor/YYYY-MM-DD.jsonl` one JSON object per line.
Pruned archives: `~/.logs/token-monitor/weeks/YYYY-WNN.json` weekly
aggregates with peak/avg utilization and sample counts.
## Cadence
Logs are written by `monitor.js` at each Vigilio wake (max once per 20
minutes cache guard prevents double-logging within a session). Expected:
~1520 data points/day per active provider, ~100140/week.
At target cadence, log footprint is < 1MB/month. --prune trims files older
than 30 days after archiving them into weekly summaries.