refactor(#1375): type command dispatch, slash exec and attachment RPC params (#1394)

This commit is contained in:
m57 authored and GitHub committed 2026-09-30 01:09:34 +03:00
1 parent 1456e642e3
commit 26c60a10c0
8 files changed
+263 -65

No files matched your search

@@ -1483,7 +1483,11 @@ class ChatViewModelTest {
every {
HermesWsClient.request(
WsMethods.COMMAND_DISPATCH,
mapOf("name" to "undo", "arg" to "2", "session_id" to sessionId),
buildJsonObject {
put("name", "undo")
put("arg", "2")
put("session_id", sessionId)
},
any(),
)
} returns
@@ -7238,7 +7242,7 @@ class ChatViewModelTest {
verify { HermesWsClient.request(WsMethods.IMAGE_ATTACH_BYTES, any()) }
assertEquals(
"session_id must be forwarded to image.attach_bytes",
sessionId,
JsonPrimitive(sessionId),
paramsSlot.captured["session_id"],
)
assertTrue("encoded attachment cache must be cleaned", attachmentCacheDir.listFiles().isNullOrEmpty())
@@ -36,6 +36,7 @@ import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
import kotlinx.serialization.json.JsonPrimitive
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
@@ -218,9 +219,9 @@ class SlashCommandDispatchRpcTest {
val dispatchIndex = methodCalls.indexOf(WsMethods.COMMAND_DISPATCH)
assertTrue("expected COMMAND_DISPATCH, got $methodCalls", dispatchIndex >= 0)
val params = paramsCalls[dispatchIndex]
assertEquals("help", params["name"])
assertEquals("", params["arg"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("help"), params["name"])
assertEquals(JsonPrimitive(""), params["arg"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
}
@Test
@@ -482,8 +483,8 @@ class SlashCommandDispatchRpcTest {
assertTrue("expected SLASH_EXEC fallback, got $methodCalls", execIndex >= 0)
assertTrue("dispatch must precede fallback", dispatchIndex < execIndex)
val params = paramsCalls[execIndex]
assertEquals("/status", params["command"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("/status"), params["command"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
// And the slash.exec output must be surfaced to the user.
val last =
@@ -629,9 +630,9 @@ class SlashCommandDispatchRpcTest {
val dispatchIndex = methodCalls.indexOf(WsMethods.COMMAND_DISPATCH)
assertTrue("expected COMMAND_DISPATCH, got $methodCalls", dispatchIndex >= 0)
val params = paramsCalls[dispatchIndex]
assertEquals("init", params["name"])
assertEquals("", params["arg"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("init"), params["name"])
assertEquals(JsonPrimitive(""), params["arg"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
}
@Test
@@ -654,9 +655,9 @@ class SlashCommandDispatchRpcTest {
val dispatchIndex = methodCalls.indexOf(WsMethods.COMMAND_DISPATCH)
assertTrue("expected COMMAND_DISPATCH, got $methodCalls", dispatchIndex >= 0)
val params = paramsCalls[dispatchIndex]
assertEquals("init", params["name"])
assertEquals("extra context here", params["arg"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("init"), params["name"])
assertEquals(JsonPrimitive("extra context here"), params["arg"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
}
@Test
@@ -682,9 +683,9 @@ class SlashCommandDispatchRpcTest {
val dispatchIndex = methodCalls.indexOf(WsMethods.COMMAND_DISPATCH)
assertTrue("expected COMMAND_DISPATCH, got $methodCalls", dispatchIndex >= 0)
val params = paramsCalls[dispatchIndex]
assertEquals("focus", params["name"])
assertEquals("", params["arg"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("focus"), params["name"])
assertEquals(JsonPrimitive(""), params["arg"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
}
@Test
@@ -707,9 +708,9 @@ class SlashCommandDispatchRpcTest {
val dispatchIndex = methodCalls.indexOf(WsMethods.COMMAND_DISPATCH)
assertTrue("expected COMMAND_DISPATCH, got $methodCalls", dispatchIndex >= 0)
val params = paramsCalls[dispatchIndex]
assertEquals("focus", params["name"])
assertEquals("on", params["arg"])
assertEquals(sessionId, params["session_id"])
assertEquals(JsonPrimitive("focus"), params["name"])
assertEquals(JsonPrimitive("on"), params["arg"])
assertEquals(JsonPrimitive(sessionId), params["session_id"])
}
@Test