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;
}