gateway: compact /usage with current-session per-model costs
The OpenTUI /usage went through the slash-worker subprocess, which resumes the session WITHOUT a live agent — so it could never show current-session tokens or costs, and what it did show landed as a full-screen page. - slash.exec now answers /usage in-process from the live agent: per-model rows (requests, tokens in/out, cache, provider-reported cost when present), session totals/context, a one-line 30-day summary (SessionDB.usage_totals, real costs only) and a one-line Nous credits gauge (nous_credits_compact_line, refactored out of nous_credits_lines). ~8 lines instead of a page. - Unreported costs render as 'not reported by provider' — never $0.00 — and the 30d summary omits cost when no session in the window has a provider-reported figure. - /usage full keeps the detailed legacy CLI page via the worker.
This commit is contained in:
@@ -184,3 +184,37 @@ class TestOpenRouterUsageParam:
|
||||
is_openrouter=False,
|
||||
)
|
||||
assert "usage" not in (kwargs.get("extra_body") or {})
|
||||
|
||||
|
||||
# ── nous_credits_compact_line — one-liner for the compact /usage page ───────
|
||||
|
||||
|
||||
class TestNousCreditsCompactLine:
|
||||
def test_condenses_snapshot_details(self, monkeypatch):
|
||||
import agent.account_usage as au
|
||||
|
||||
snap = au.AccountUsageSnapshot(
|
||||
provider="nous",
|
||||
source="portal-account",
|
||||
fetched_at=au._utc_now(),
|
||||
title="Nous credits",
|
||||
plan="Ultra",
|
||||
details=(
|
||||
"Subscription credits: $-0.79",
|
||||
"Top-up credits: $988.99",
|
||||
"Total usable: $988.99",
|
||||
"Renews: 2026-06-11T08:14:55.000Z",
|
||||
"Manage / top up: https://portal.nousresearch.com/billing",
|
||||
),
|
||||
)
|
||||
monkeypatch.setattr(au, "_fetch_nous_credits_snapshot", lambda timeout=10.0: snap)
|
||||
line = au.nous_credits_compact_line()
|
||||
assert line == (
|
||||
"Nous credits (Ultra): Total usable: $988.99 · Renews: 2026-06-11T08:14:55.000Z"
|
||||
)
|
||||
|
||||
def test_none_when_no_snapshot(self, monkeypatch):
|
||||
import agent.account_usage as au
|
||||
|
||||
monkeypatch.setattr(au, "_fetch_nous_credits_snapshot", lambda timeout=10.0: None)
|
||||
assert au.nous_credits_compact_line() is None
|
||||
|
||||
Reference in New Issue
Block a user