"""
This program has been developed by students from the bachelor Computer Science at Utrecht
University within the Software Project course.
© Copyright Utrecht University (Department of Information and Computing Sciences)
"""

from collections.abc import Iterable

from pydantic import BaseModel


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

    :ivar to: The name(s) of the destination agent(s).
    :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 | Iterable[str]
    sender: str | None = None
    body: str
    thread: str | None = None
