diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx
index 4c205a4a1b..3099232609 100644
--- a/webview-ui/src/components/chat/ChatRow.tsx
+++ b/webview-ui/src/components/chat/ChatRow.tsx
@@ -71,6 +71,7 @@ import {
Split,
ArrowRight,
Check,
+ OctagonX,
} from "lucide-react"
import { cn } from "@/lib/utils"
import { PathTooltip } from "../ui/PathTooltip"
@@ -992,6 +993,80 @@ export const ChatRowContent = ({
)}
>
)
+ case "write_stdin": {
+ const stdinTool = tool as any
+ const sessionId = stdinTool.session_id
+ const chars = stdinTool.chars || ""
+ const displayChars = chars.length > 30 ? chars.slice(0, 30) + "..." : chars
+ const escapedChars = displayChars.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t")
+ return (
+ <>
+
+
+
+ {chars
+ ? t("chat:stdinOperations.sentToSession", {
+ sessionId,
+ chars: escapedChars,
+ })
+ : t("chat:stdinOperations.polledSession", { sessionId })}
+
+
+ {stdinTool.content && (
+
+
+
+ )}
+ >
+ )
+ }
+ case "terminate_session": {
+ const terminateTool = tool as any
+ const sessionId = terminateTool.session_id
+ return (
+ <>
+
+
+
+ {message.type === "ask"
+ ? t("chat:stdinOperations.wantsToTerminate", { sessionId })
+ : t("chat:stdinOperations.didTerminate", { sessionId })}
+
+
+ {terminateTool.content && (
+ {terminateTool.content}
+ )}
+ >
+ )
+ }
+ case "list_sessions":
+ return (
+ <>
+
+
+
+ {message.type === "ask"
+ ? t("chat:stdinOperations.wantsToListSessions")
+ : t("chat:stdinOperations.didListSessions")}
+
+
+ {tool.content && (
+
+
+
+ )}
+ >
+ )
default:
return null
}
diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json
index d167a19ff3..336605e5ce 100644
--- a/webview-ui/src/i18n/locales/en/chat.json
+++ b/webview-ui/src/i18n/locales/en/chat.json
@@ -498,5 +498,13 @@
},
"readCommandOutput": {
"title": "Roo read command output"
+ },
+ "stdinOperations": {
+ "sentToSession": "Sent \"{{chars}}\" to session {{sessionId}}",
+ "polledSession": "Polled session {{sessionId}}",
+ "wantsToTerminate": "Wants to terminate session {{sessionId}}",
+ "didTerminate": "Terminated session {{sessionId}}",
+ "wantsToListSessions": "Wants to list active sessions",
+ "didListSessions": "Listed active sessions"
}
}