vps-health-api/__tests__
le king fu cf72292967 feat(agent): one-shot backfill of the Claude usage history from local transcripts
agent/claude-usage/backfill-history.js runs by hand from the repo (never
from the cron install, the agent is unchanged). It rebuilds the closed days
with the agent's own aggregate() on past windows and writes { days } to the
--out file, which the server merges with `claude-usage-history.js --import`
(an already archived date wins).

Each 30-day window keeps only its 28 inner days and the next steps back 28
days, so a request straddling a window boundary is deduplicated by the
window that keeps it and counted once. The first window stops at D-2. The
walk is bounded by --max-windows (default 24) rather than guessed from file
mtimes, which say nothing of the oldest line a resumed session holds.

It never reads the credentials file, opens no connection, writes only the
--out file (mode 600, never overwritten) and prints counts only.

Refs #55

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 20:44:45 -04:00
..
fixtures/claude-usage feat(agent): add the claude-usage agent: plan limits, local cache, push 2026-10-04 15:26:15 -04:00
agent-claude-usage.test.js feat(agent): one-shot backfill of the Claude usage history from local transcripts 2026-10-08 20:44:45 -04:00
agent.test.js feat(agent): push workstation metrics to /hosts/<id> from cron 2026-08-16 12:21:59 -04:00
auth.test.js feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history 2026-10-08 20:41:30 -04:00
ci.test.js feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history 2026-10-08 20:41:30 -04:00
claude-usage-history.test.js feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history 2026-10-08 20:41:30 -04:00
claude-usage.test.js feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history 2026-10-08 20:41:30 -04:00
findings.test.js feat(defenseurs): add GET /defenseurs/findings?project=X route 2026-05-12 20:56:56 -04:00
health.test.js refactor: extract CPU/RAM/disk collection into metrics.js 2026-08-16 11:30:03 -04:00
hosts.test.js fix(server): require a full ISO receivedAt on read, cover the temp-file cleanup 2026-10-07 20:25:26 -04:00
state.test.js feat(defenseurs): serve the Sergent's findings state at GET /defenseurs/state 2026-09-24 20:42:20 -04:00
writes.test.js feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history 2026-10-08 20:41:30 -04:00