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" } }