Merge pull request #155 from Hy4ri/feat/issue-125-clarification-respond-routing
feat(#125): pre-fill clarification input and route response via clarify.respond
This commit is contained in:
3 files changed
+43
-2
No files matched your search
@@ -790,7 +790,7 @@ private fun ClarifyDialog(
|
|||||||
onOptionSelected: (String) -> Unit,
|
onOptionSelected: (String) -> Unit,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
var typedText by rememberSaveable { mutableStateOf("") }
|
var typedText by rememberSaveable(clarify) { mutableStateOf(clarify.text) }
|
||||||
|
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
onDismissRequest = onDismiss,
|
onDismissRequest = onDismiss,
|
||||||
|
|||||||
@@ -886,8 +886,33 @@ class ChatViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun respondToClarify(option: String) {
|
fun respondToClarify(option: String) {
|
||||||
|
val sessionId = _uiState.value.currentSessionId ?: return
|
||||||
_uiState.update { it.copy(clarifyRequest = null) }
|
_uiState.update { it.copy(clarifyRequest = null) }
|
||||||
sendMessage(option)
|
|
||||||
|
val userMessage =
|
||||||
|
ChatMessage(
|
||||||
|
role = MessageRole.USER,
|
||||||
|
content = option,
|
||||||
|
)
|
||||||
|
|
||||||
|
_uiState.update { state ->
|
||||||
|
state.copy(
|
||||||
|
messages = state.messages + userMessage,
|
||||||
|
isAgentTyping = true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
dao.upsert(userMessage.toEntity(sessionId))
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
wsClient.send(
|
||||||
|
method = WsMethods.CLARIFY_RESPOND,
|
||||||
|
params = mapOf("session_id" to sessionId, "response" to option),
|
||||||
|
onSent = { id -> trackRequest(id, WsMethods.CLARIFY_RESPOND) },
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clearError() {
|
fun clearError() {
|
||||||
|
|||||||
@@ -321,6 +321,14 @@ class ChatViewModelTest {
|
|||||||
assertEquals("Session created", state.messages[0].content)
|
assertEquals("Session created", state.messages[0].content)
|
||||||
assertEquals("Yes", state.messages[1].content)
|
assertEquals("Yes", state.messages[1].content)
|
||||||
assertEquals(MessageRole.USER, state.messages[1].role)
|
assertEquals(MessageRole.USER, state.messages[1].role)
|
||||||
|
|
||||||
|
verify {
|
||||||
|
HermesWsClient.send(
|
||||||
|
method = WsMethods.CLARIFY_RESPOND,
|
||||||
|
params = mapOf("session_id" to "session-123", "response" to "Yes"),
|
||||||
|
onSent = any(),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -362,6 +370,14 @@ class ChatViewModelTest {
|
|||||||
assertEquals("Session created", state.messages[0].content)
|
assertEquals("Session created", state.messages[0].content)
|
||||||
assertEquals("This is my custom response text", state.messages[1].content)
|
assertEquals("This is my custom response text", state.messages[1].content)
|
||||||
assertEquals(MessageRole.USER, state.messages[1].role)
|
assertEquals(MessageRole.USER, state.messages[1].role)
|
||||||
|
|
||||||
|
verify {
|
||||||
|
HermesWsClient.send(
|
||||||
|
method = WsMethods.CLARIFY_RESPOND,
|
||||||
|
params = mapOf("session_id" to "session-123", "response" to "This is my custom response text"),
|
||||||
|
onSent = any(),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in new issue
Block a user