fix: clarify Dismiss now informs the agent instead of silently dropping (#580)

* fix(#572): clarify Dismiss now informs agent instead of silently dropping

* fix(#572): clarify Dismiss rejects the question (no answer) instead of telling agent to proceed

---------

Co-authored-by: M57 <m57@hermes-control.app>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-07-13 18:53:09 +03:00
1 parent 109fb1a04d
commit e48778291a
2 files changed
+94

No files matched your search

@@ -766,6 +766,50 @@ class ChatViewModelTest {
}
}
@Test
fun testClarifyDismissInformsAgent() =
runTest {
val (viewModel, sessionId) = createViewModelWithSession()
mockEventsFlow.emit(
WsEvent.ClarifyRequest(
"Please choose:",
listOf("Yes", "No"),
"clarify-789",
),
)
advanceUntilIdle()
assertEquals("clarify-789", viewModel.uiState.value.clarifyRequest?.clarifyId)
viewModel.dismissClarify()
advanceUntilIdle()
// Dialog dismissed locally
assertNull(viewModel.uiState.value.clarifyRequest)
// Baseline has 1 "Connected" system message; dismiss adds exactly
// ONE system note and must NOT fake a user bubble.
val messages = viewModel.uiState.value.messages
assertEquals(2, messages.size)
assertEquals(MessageRole.SYSTEM, messages[0].role) // pre-existing "Connected"
assertEquals(MessageRole.SYSTEM, messages[1].role) // dismiss trace
assertTrue(messages[1].content.contains("dismissed", ignoreCase = true))
verify {
HermesWsClient.send(
WsMethods.CLARIFY_RESPOND,
params =
mapOf(
"session_id" to sessionId,
"response" to "The user cancelled — no answer provided.",
"answer" to "The user cancelled — no answer provided.",
"clarify_id" to "clarify-789",
"request_id" to "clarify-789",
),
onSent = any(),
)
}
}
// ── Attachments ──────────────────────────────────────────────────────────
/** Add [count] dummy attachments so a test starts with a populated list. */