""" 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 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, or None if the belief has no arguments. """ name: str arguments: list[str] | None = None # To make it hashable model_config = {"frozen": True} class BeliefMessage(BaseModel): """ A container for communicating beliefs between agents. :ivar create: Beliefs to create. :ivar delete: Beliefs to delete. :ivar replace: Beliefs to replace. Deletes all beliefs with the same name, replacing them with one new belief. """ create: list[Belief] = [] delete: list[Belief] = [] replace: list[Belief] = [] def has_values(self) -> bool: return len(self.create) > 0 or len(self.delete) > 0 or len(self.replace) > 0