from pydantic import BaseModel


class InternalMessage(BaseModel):
    """
    Standard message envelope for communication between agents within the Control Backend.

    :ivar to: The name of the destination agent.
    :ivar sender: The name of the sending agent.
    :ivar body: The string payload (often a JSON-serialized model).
    :ivar thread: An optional thread identifier/topic to categorize the message (e.g., 'beliefs').
    """

    to: str
    sender: str
    body: str
    thread: str | None = None
