From 95bd6cb87f743cce893fe83d8b5e7366191615c8 Mon Sep 17 00:00:00 2001 From: Canyon Robins Date: Mon, 19 May 2025 18:20:04 -0700 Subject: [PATCH] Add UI component --- src/core/task/Task.ts | 12 +++++-- webview-ui/src/components/chat/ChatRow.tsx | 2 +- .../components/chat/ContextCondenseRow.tsx | 36 +++++++++++++++++-- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 03a4057cf7..d68391862c 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -518,7 +518,15 @@ export class Task extends EventEmitter { this.lastMessageTs = sayTs } - await this.addToClineMessages({ ts: sayTs, type: "say", say: type, text, images, partial }) + await this.addToClineMessages({ + ts: sayTs, + type: "say", + say: type, + text, + images, + partial, + contextCondense, + }) } } else { // New now have a complete version of a previously partial message. @@ -548,7 +556,7 @@ export class Task extends EventEmitter { this.lastMessageTs = sayTs } - await this.addToClineMessages({ ts: sayTs, type: "say", say: type, text, images }) + await this.addToClineMessages({ ts: sayTs, type: "say", say: type, text, images, contextCondense }) } } } else { diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx index 1216c39442..5af7306ff8 100644 --- a/webview-ui/src/components/chat/ChatRow.tsx +++ b/webview-ui/src/components/chat/ChatRow.tsx @@ -928,7 +928,7 @@ export const ChatRowContent = ({ /> ) case "condense_context": - return + return default: return ( <> diff --git a/webview-ui/src/components/chat/ContextCondenseRow.tsx b/webview-ui/src/components/chat/ContextCondenseRow.tsx index cd8209c828..3aa4dd0239 100644 --- a/webview-ui/src/components/chat/ContextCondenseRow.tsx +++ b/webview-ui/src/components/chat/ContextCondenseRow.tsx @@ -1,15 +1,47 @@ +import { useState } from "react" +import { useTranslation } from "react-i18next" +import { VSCodeBadge } from "@vscode/webview-ui-toolkit/react" + import { ContextCondense } from "@roo/schemas" interface ContextCondenseRowProps { - ts: number contextCondense?: ContextCondense } const ContextCondenseRow = ({ contextCondense }: ContextCondenseRowProps) => { + const { t } = useTranslation() + const [isExpanded, setIsExpanded] = useState(false) + if (!contextCondense) { return null } - return null + const { cost, prevContextTokens, newContextTokens, summary } = contextCondense + + return ( +
+
setIsExpanded(!isExpanded)}> +
+ + + {t("chat:contextCondense.title", "Context Condensed")} + + + {prevContextTokens.toLocaleString()} → {newContextTokens.toLocaleString()} tokens + + 0 ? 1 : 0 }}>${cost.toFixed(2)} +
+ +
+ + {isExpanded && ( +
+ {summary} +
+ )} +
+ ) } export default ContextCondenseRow