diff --git a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/MemoryRenderers.kt b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/MemoryRenderers.kt index fc3fcaef..11a176d6 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/MemoryRenderers.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/MemoryRenderers.kt @@ -39,7 +39,12 @@ internal object FactStoreRenderer : ToolRenderer { override fun subtitle(call: ToolCall): String { val args = call.args val result = call.result - val action = ToolJson.firstString(args, listOf("action")).ifEmpty { ToolJson.firstString(result, listOf("action")) } + val action = + ToolJson + .firstString( + args, + listOf("action"), + ).ifEmpty { ToolJson.firstString(result, listOf("action")) } val entity = ToolJson.firstString(args, listOf("entity")) val query = ToolJson.firstString(args, listOf("query")) val facts = facts(call) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/TerminalRenderers.kt b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/TerminalRenderers.kt index 3fe81789..97c392ad 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/TerminalRenderers.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/TerminalRenderers.kt @@ -75,7 +75,9 @@ internal object TerminalRenderer : ToolRenderer { return when { output.isNotEmpty() -> output + call.name == "execute_code" -> ToolJson.fallbackDetailText(call.rawArgs, call.rawResult) + // A terminal row with no output already shows its command in the // title; the generic fallback would repeat it. else -> "" diff --git a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/WebRenderers.kt b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/WebRenderers.kt index 9472f39a..0c041931 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/WebRenderers.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/render/WebRenderers.kt @@ -44,7 +44,10 @@ internal object WebSearchRenderer : ToolRenderer { SearchHit( title = ToolJson.cleanVisibleText(ToolJson.firstString(r, listOf("title", "name"))), url = ToolJson.firstString(r, listOf("url", "href", "link")), - snippet = ToolJson.cleanVisibleText(ToolJson.firstString(r, listOf("snippet", "description", "body"))), + snippet = + ToolJson.cleanVisibleText( + ToolJson.firstString(r, listOf("snippet", "description", "body")), + ), ) }.filter { it.title.isNotEmpty() || it.url.isNotEmpty() } .take(limit) diff --git a/app/src/test/java/com/m57/hermescontrol/ui/chat/tool/ToolViewCharacterizationTest.kt b/app/src/test/java/com/m57/hermescontrol/ui/chat/tool/ToolViewCharacterizationTest.kt index 95880999..b9c08aab 100644 --- a/app/src/test/java/com/m57/hermescontrol/ui/chat/tool/ToolViewCharacterizationTest.kt +++ b/app/src/test/java/com/m57/hermescontrol/ui/chat/tool/ToolViewCharacterizationTest.kt @@ -46,7 +46,8 @@ class ToolViewCharacterizationTest { @Test fun `terminal split streams keep stdout and stderr separate`() { - val view = build("terminal", """{"command":"make"}""", """{"stdout":"built","stderr":"warn: x","exit_code":0}""") + val view = + build("terminal", """{"command":"make"}""", """{"stdout":"built","stderr":"warn: x","exit_code":0}""") assertEquals("built", view.stdout) assertEquals("warn: x", view.stderr)