ml-intern / frontend /src /components /Chat /MessageBubble.tsx
Aksel Joonas Reedi
feat(observability)
2a2e170 unverified
raw
history blame
1.24 kB
import UserMessage from './UserMessage';
import AssistantMessage from './AssistantMessage';
import type { UIMessage } from 'ai';
interface MessageBubbleProps {
message: UIMessage;
isLastTurn?: boolean;
onUndoTurn?: () => void;
onEditAndRegenerate?: (messageId: string, newText: string) => void | Promise<void>;
isProcessing?: boolean;
isStreaming?: boolean;
sessionId?: string | null;
approveTools: (approvals: Array<{ tool_call_id: string; approved: boolean; feedback?: string | null }>) => Promise<boolean>;
}
export default function MessageBubble({
message,
isLastTurn = false,
onUndoTurn,
onEditAndRegenerate,
isProcessing = false,
isStreaming = false,
sessionId,
approveTools,
}: MessageBubbleProps) {
if (message.role === 'user') {
return (
<UserMessage
message={message}
isLastTurn={isLastTurn}
onUndoTurn={onUndoTurn}
onEditAndRegenerate={onEditAndRegenerate}
isProcessing={isProcessing}
/>
);
}
if (message.role === 'assistant') {
return (
<AssistantMessage
message={message}
isStreaming={isStreaming}
sessionId={sessionId}
approveTools={approveTools}
/>
);
}
return null;
}