import React from 'react'; import Mark from '../ui/Mark'; import { STRINGS } from './prompts'; /** * Renders one message bubble. Assistant messages may include a `suggestion` * (validated graph delta) — the user confirms or rejects inline. */ export default function ChatMessage({ msg, onAcceptSuggestion, onRejectSuggestion }) { if (msg.role === 'user') { return (
{msg.content}
); } if (msg.role === 'error') { return (
{msg.content}
); } // assistant const s = msg.suggestion; return (
{msg.content}
{s && (
{STRINGS.suggestionTitle}
{s.reason &&
{s.reason}
} {(s.topics.length > 0 || s.relations.length > 0) && (
    {s.topics.map(t => (
  • {t.label}{' '} ({t.type})
  • ))} {s.relations.map((r, i) => (
  • {r.source}{' '} {r.type}{' → '} {r.target}
  • ))}
)} {s.status === 'pending' ? (
) : (
{s.status === 'applied' && STRINGS.suggestionAppliedAdmin} {s.status === 'queued' && STRINGS.suggestionQueuedUser} {s.status === 'rejected' && STRINGS.suggestionDismissed}
)}
)}
); }