from pydantic import BaseModel


class Belief(BaseModel):
    """
    Represents a single belief in the BDI system.

    :ivar name: The functor or name of the belief (e.g., 'user_said').
    :ivar arguments: A list of string arguments for the belief.
    :ivar replace: If True, existing beliefs with this name should be replaced by this one.
    """

    name: str
    arguments: list[str]
    replace: bool = False


class BeliefMessage(BaseModel):
    """
    A container for transporting a list of beliefs between agents.
    """

    beliefs: list[Belief]
