feat(#919): adopt session.usage WS push event for real-time context & compression updates (#927)

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-08-17 23:31:07 +03:00
1 parent d6892cde7f
commit acd82c0085
6 files changed
+141 -9

No files matched your search

@@ -634,4 +634,38 @@ class EventParserTest {
assertEquals("sub-456", subagentEvent.payload?.get("subagent_id"))
assertEquals("analyzing docs...", subagentEvent.payload?.get("text"))
}
@Test
fun testParseSessionUsage_returnsSessionUsageEvent() {
val response =
createJsonRpcResponse(
jsonrpc = "2.0",
id = null,
result = null,
error = null,
method = "event",
params =
mapOf(
"type" to "session.usage",
"session_id" to "sess-123",
"payload" to
mapOf(
"usage" to
mapOf(
"compressions" to 3,
"context_used" to 12500,
"context_max" to 128000,
"total" to 45000,
),
),
),
)
val event = EventParser.parse(response)
assertTrue(event is WsEvent.SessionUsage)
val sessionUsage = event as WsEvent.SessionUsage
assertEquals("sess-123", sessionUsage.sessionId)
val usage = sessionUsage.data?.get("usage") as? Map<*, *>
assertEquals(3, (usage?.get("compressions") as? Number)?.toInt())
assertEquals(12500, (usage?.get("context_used") as? Number)?.toInt())
}
}