27 files changed
+399
-15
No files matched your search
@@ -301,7 +301,9 @@ private fun parseToolOutput(content: String): ParsedToolOutput? {
|
||||
val trimmed = content.trim()
|
||||
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return null
|
||||
return try {
|
||||
val element = com.google.gson.JsonParser.parseString(trimmed)
|
||||
val element =
|
||||
com.google.gson.JsonParser
|
||||
.parseString(trimmed)
|
||||
if (element.isJsonObject) {
|
||||
val obj = element.asJsonObject
|
||||
|
||||
@@ -310,10 +312,25 @@ private fun parseToolOutput(content: String): ParsedToolOutput? {
|
||||
val hasExitCode = obj.has("exit_code") || obj.has("exitCode")
|
||||
|
||||
if (hasStdout || hasStderr || hasExitCode) {
|
||||
val stdout = obj.get("stdout")?.takeIf { !it.isJsonNull }?.asString?.takeIf { it.isNotEmpty() }
|
||||
val stderr = obj.get("stderr")?.takeIf { !it.isJsonNull }?.asString?.takeIf { it.isNotEmpty() }
|
||||
val stdout =
|
||||
obj
|
||||
.get("stdout")
|
||||
?.takeIf { !it.isJsonNull }
|
||||
?.asString
|
||||
?.takeIf { it.isNotEmpty() }
|
||||
val stderr =
|
||||
obj
|
||||
.get("stderr")
|
||||
?.takeIf { !it.isJsonNull }
|
||||
?.asString
|
||||
?.takeIf { it.isNotEmpty() }
|
||||
val exitCode = (obj.get("exit_code") ?: obj.get("exitCode"))?.takeIf { !it.isJsonNull }?.asInt
|
||||
val error = obj.get("error")?.takeIf { !it.isJsonNull }?.asString?.takeIf { it.isNotEmpty() }
|
||||
val error =
|
||||
obj
|
||||
.get("error")
|
||||
?.takeIf { !it.isJsonNull }
|
||||
?.asString
|
||||
?.takeIf { it.isNotEmpty() }
|
||||
|
||||
ParsedToolOutput(
|
||||
isTerminal = true,
|
||||
|
||||
@@ -450,6 +450,7 @@ class ChatViewModel(
|
||||
""".trimIndent()
|
||||
addAssistantMessage(statusText)
|
||||
}
|
||||
|
||||
is NetworkResult.Failure -> {
|
||||
addAssistantMessage("Failed to retrieve status: ${result.error.message}")
|
||||
}
|
||||
@@ -472,6 +473,7 @@ class ChatViewModel(
|
||||
}
|
||||
addAssistantMessage("**Sessions List:**\n$sessionsStr")
|
||||
}
|
||||
|
||||
is NetworkResult.Failure -> {
|
||||
addAssistantMessage("Failed to list sessions: ${result.error.message}")
|
||||
}
|
||||
@@ -500,6 +502,7 @@ class ChatViewModel(
|
||||
""".trimIndent()
|
||||
addAssistantMessage(statsText)
|
||||
}
|
||||
|
||||
is NetworkResult.Failure -> {
|
||||
addAssistantMessage("Failed to retrieve system stats: ${result.error.message}")
|
||||
}
|
||||
@@ -627,6 +630,7 @@ class ChatViewModel(
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is NetworkResult.Failure -> {
|
||||
_uiState.update {
|
||||
it.copy(
|
||||
|
||||
Reference in new issue
Block a user