fix(chat): keep context meter aligned after model swaps (#1103)

This commit is contained in:
M57 committed 2026-09-13 19:39:33 +03:00
1 parent 4246ae196d
commit 0a2c782139
8 files changed
+720 -127

No files matched your search

@@ -84,4 +84,24 @@ class ContextBreakdownResponseTest {
assertEquals(262144L, parsed?.contextMax)
assertEquals(0, parsed?.contextPercent)
}
@Test
fun `JsonObject and JsonPrimitive payloads parse successfully`() {
val json =
kotlinx.serialization.json.buildJsonObject {
put("context_used", kotlinx.serialization.json.JsonPrimitive(52428))
put("context_max", kotlinx.serialization.json.JsonPrimitive(524288))
put("context_percent", kotlinx.serialization.json.JsonPrimitive(10))
put("estimated_total", kotlinx.serialization.json.JsonPrimitive(52428))
put("model", kotlinx.serialization.json.JsonPrimitive("upstage/solar-pro4:free"))
}
val parsed = parseContextBreakdown(json)
assertEquals(52428L, parsed?.contextUsed)
assertEquals(524288L, parsed?.contextMax)
assertEquals(10, parsed?.contextPercent)
assertEquals(52428L, parsed?.estimatedTotal)
assertEquals("upstage/solar-pro4:free", parsed?.model)
}
}
@@ -30,4 +30,24 @@ class UsageSnapshotResponseTest {
assertNull(parseUsageSnapshot("oops"))
assertNull(parseUsageSnapshot(listOf(1.0)))
}
@Test
fun `JsonObject and JsonPrimitive payloads parse successfully`() {
val json =
kotlinx.serialization.json.buildJsonObject {
put("compressions", kotlinx.serialization.json.JsonPrimitive(3))
put("context_used", kotlinx.serialization.json.JsonPrimitive(12000))
put("context_max", kotlinx.serialization.json.JsonPrimitive(200000))
put("total", kotlinx.serialization.json.JsonPrimitive(50000))
put("avg_tps", kotlinx.serialization.json.JsonPrimitive(45.5))
}
val parsed = parseUsageSnapshot(json)
assertEquals(3, parsed?.compressions)
assertEquals(12000L, parsed?.contextUsed)
assertEquals(200000L, parsed?.contextMax)
assertEquals(50000L, parsed?.totalTokens)
assertEquals(45.5, parsed?.avgTps ?: 0.0, 0.001)
}
}