import React from 'react'; import type { Message, Part } from '@opencode-ai/sdk'; interface SimpleMessageRendererProps { message: { info: Message; parts: Part[] }; } export function SimpleMessageRenderer({ message }: SimpleMessageRendererProps) { const { info, parts } = message; const isUser = info.role === 'user'; // Extract text content from parts const textContent = parts .filter((part): part is Part & { type: 'text' } => part.type === 'text') .map((part) => part.text) .join('\n'); // Check for tool calls const toolParts = parts.filter((part) => part.type === 'tool-invocation' || part.type === 'tool-result'); return (
{/* Role indicator for assistant */} {!isUser && (
Assistant
)} {/* Text content */} {textContent && (
{textContent}
)} {/* Tool activity indicator */} {toolParts.length > 0 && (
{toolParts.map((part, idx) => ( ))}
)} {/* Empty message placeholder */} {!textContent && toolParts.length === 0 && (
...
)}
); } function ToolPartRenderer({ part }: { part: Part }) { if (part.type === 'tool-invocation') { const toolName = part.toolInvocation?.toolName || 'tool'; const state = part.toolInvocation?.state || 'pending'; return (
{state === 'pending' || state === 'streaming' ? ( ) : state === 'result' ? ( ) : ( )} {toolName}
); } if (part.type === 'tool-result') { return (
Result: {typeof part.result === 'string' ? part.result.slice(0, 50) : '...'}
); } return null; }