+
+ {t("message.mcpAppUnderConstruction")}
+
+
+
+ );
+}
diff --git a/ui/goose2/src/features/chat/ui/MessageBubble.tsx b/ui/goose2/src/features/chat/ui/MessageBubble.tsx
index ce1d3c7457..a72af28a2d 100644
--- a/ui/goose2/src/features/chat/ui/MessageBubble.tsx
+++ b/ui/goose2/src/features/chat/ui/MessageBubble.tsx
@@ -32,6 +32,7 @@ import {
} from "@/shared/ui/ai-elements/reasoning";
import { ToolChainCards, type ToolChainItem } from "./ToolChainCards";
import { ClickableImage } from "./ClickableImage";
+import { McpAppView } from "./McpAppView";
import { useArtifactLinkHandler } from "@/features/chat/hooks/useArtifactLinkHandler";
import type {
Message,
@@ -97,10 +98,9 @@ interface ContentSection {
items: MessageContent[] | ToolChainItem[];
}
-/** Keep only content blocks whose audience includes "user" (or has no audience). */
function filterUserVisibleContent(content: MessageContent[]): MessageContent[] {
return content.filter((b) => {
- const aud = b.annotations?.audience;
+ const aud = "annotations" in b ? b.annotations?.audience : undefined;
return !aud || aud.length === 0 || aud.includes("user");
});
}
@@ -232,6 +232,8 @@ function renderContentBlock(
case "toolResponse":
// Handled by groupContentSections toolChain rendering
return null;
+ case "mcpApp":
+ return