fix(dashboard): scope sessions and analytics to selected profile (#45598)

This commit is contained in:
Teknium
2026-06-13 05:42:38 -07:00
committed by GitHub
parent 2abcae9678
commit 62b4618e9a
3 changed files with 175 additions and 65 deletions
+81
View File
@@ -520,6 +520,87 @@ class TestWebServerEndpoints:
resp = self.client.get("/api/profiles/sessions?archived=bogus")
assert resp.status_code == 400
def test_sessions_endpoint_reads_requested_profile(self):
"""The machine dashboard's global profile switcher must retarget
the Sessions page, not just config/skills/model pages."""
from hermes_state import SessionDB
from hermes_cli import profiles as profiles_mod
worker_home = profiles_mod.get_profile_dir("worker")
worker_home.mkdir(parents=True)
default_db = SessionDB()
try:
default_db.create_session(session_id="default-only", source="cli")
default_db.append_message("default-only", role="user", content="default")
finally:
default_db.close()
worker_db = SessionDB(db_path=worker_home / "state.db")
try:
worker_db.create_session(session_id="worker-only", source="cli")
worker_db.append_message("worker-only", role="user", content="worker")
finally:
worker_db.close()
resp = self.client.get("/api/sessions?profile=worker&limit=20&min_messages=0")
assert resp.status_code == 200
data = resp.json()
ids = {s["id"] for s in data["sessions"]}
assert "worker-only" in ids
assert "default-only" not in ids
row = next(s for s in data["sessions"] if s["id"] == "worker-only")
assert row["profile"] == "worker"
assert row["is_default_profile"] is False
stats = self.client.get("/api/sessions/stats?profile=worker").json()
assert stats["total"] == 1
assert stats["messages"] == 1
messages = self.client.get("/api/sessions/worker-only/messages?profile=worker").json()
assert [m["content"] for m in messages["messages"]] == ["worker"]
def test_analytics_endpoints_read_requested_profile(self):
from hermes_state import SessionDB
from hermes_cli import profiles as profiles_mod
worker_home = profiles_mod.get_profile_dir("worker")
worker_home.mkdir(parents=True)
default_db = SessionDB()
try:
default_db.create_session(session_id="default-usage", source="cli", model="default/model")
default_db.update_token_counts("default-usage", input_tokens=10, output_tokens=5)
finally:
default_db.close()
worker_db = SessionDB(db_path=worker_home / "state.db")
try:
worker_db.create_session(session_id="worker-usage", source="cli", model="worker/model")
worker_db.update_token_counts(
"worker-usage",
input_tokens=123,
output_tokens=45,
billing_provider="worker-provider",
)
finally:
worker_db.close()
usage = self.client.get("/api/analytics/usage?days=7&profile=worker").json()
assert usage["totals"]["total_sessions"] == 1
assert usage["totals"]["total_input"] == 123
assert [m["model"] for m in usage["by_model"]] == ["worker/model"]
models = self.client.get("/api/analytics/models?days=7&profile=worker").json()
assert models["totals"]["distinct_models"] == 1
assert models["totals"]["total_input"] == 123
assert models["models"][0]["model"] == "worker/model"
assert models["models"][0]["provider"] == "worker-provider"
default_usage = self.client.get("/api/analytics/usage?days=7").json()
assert default_usage["totals"]["total_input"] == 10
assert default_usage["totals"]["total_output"] == 5
def test_get_sessions_rejects_unknown_archived_value(self):
resp = self.client.get("/api/sessions?archived=bogus")
assert resp.status_code == 400