Очки: история диалога в свайпе + распознавание в LLM только по клику (касяки 1-3)
This commit is contained in:
@@ -96,6 +96,16 @@ data class SttDone(val full: String) : HostToGlasses
|
||||
@SerialName("stt_cancel")
|
||||
class SttCancel : HostToGlasses
|
||||
|
||||
/** Один элемент истории сессии (только user/assistant — tool/calls очкам не нужны). */
|
||||
@Serializable
|
||||
@SerialName("chat_history_item")
|
||||
data class ChatHistoryItem(val role: String, val content: String)
|
||||
|
||||
/** История сессии для очков (показ всего диалога со скроллом свайпами). */
|
||||
@Serializable
|
||||
@SerialName("chat_history")
|
||||
data class ChatHistoryMsg(val sessionId: String?, val messages: List<ChatHistoryItem>) : HostToGlasses
|
||||
|
||||
/** Полное выключение приложения на очках (по команде с телефона). */
|
||||
@Serializable
|
||||
@SerialName("shutdown")
|
||||
|
||||
@@ -222,4 +222,28 @@ class HostToGlassesTest {
|
||||
val decoded = json.decodeFromString(HostToGlasses.serializer(), text)
|
||||
assertIs<SttCancel>(decoded)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun chatHistoryRoundTrip() {
|
||||
val msg: HostToGlasses = ChatHistoryMsg(
|
||||
sessionId = "s-1",
|
||||
messages = listOf(
|
||||
ChatHistoryItem(role = "user", content = "привет"),
|
||||
ChatHistoryItem(role = "assistant", content = "здравствуй"),
|
||||
),
|
||||
)
|
||||
val text = json.encodeToString(HostToGlasses.serializer(), msg)
|
||||
assertEquals(
|
||||
"""{"type":"chat_history","sessionId":"s-1","messages":[""" +
|
||||
"""{"role":"user","content":"привет"},""" +
|
||||
"""{"role":"assistant","content":"здравствуй"}]}""",
|
||||
text,
|
||||
)
|
||||
val decoded = json.decodeFromString(HostToGlasses.serializer(), text)
|
||||
assertIs<ChatHistoryMsg>(decoded)
|
||||
assertEquals(2, decoded.messages.size)
|
||||
assertEquals("user", decoded.messages[0].role)
|
||||
assertEquals("привет", decoded.messages[0].content)
|
||||
assertEquals("assistant", decoded.messages[1].role)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user