import React from "react"; import { RenderMessageProps } from "../props"; import { RenderMessage as DefaultRenderMessage } from "./RenderMessage"; import { aguiToGQL } from "@copilotkit/runtime-client-gql"; /** * Legacy message render props interface for backwards compatibility */ export interface LegacyRenderProps { RenderTextMessage?: React.ComponentType; RenderActionExecutionMessage?: React.ComponentType; RenderAgentStateMessage?: React.ComponentType; RenderResultMessage?: React.ComponentType; RenderImageMessage?: React.ComponentType; } /** * Props for the LegacyRenderMessage component */ export interface LegacyRenderMessageProps extends RenderMessageProps { legacyProps: LegacyRenderProps; } /** * Legacy message adapter component that maps old render props to new message types. * This component provides backwards compatibility for the deprecated render props. */ export const LegacyRenderMessage: React.FC = ({ message, messages, inProgress, index, isCurrentMessage, actionResult, AssistantMessage, UserMessage, ImageRenderer, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, legacyProps, }) => { const { RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, RenderImageMessage, } = legacyProps; const deprecatedMessage = aguiToGQL(message)[0] ?? undefined; // Route to appropriate legacy renderer based on message type if (deprecatedMessage.isTextMessage() && RenderTextMessage) { return ( ); } if ( deprecatedMessage.isActionExecutionMessage() && RenderActionExecutionMessage ) { return ( ); } if (deprecatedMessage.isAgentStateMessage() && RenderAgentStateMessage) { return ( ); } if (deprecatedMessage.isResultMessage() && RenderResultMessage) { return ( ); } if (deprecatedMessage.isImageMessage() && RenderImageMessage) { return ( ); } // Fallback to default RenderMessage for any unhandled cases return ( ); };