# agents/base_agent.py from typing import Dict class ACPMessage: def __init__(self, sender: str, receiver: str, performative: str, content: str): self.sender = sender self.receiver = receiver self.performative = performative # "inform", "request", etc. self.content = content def to_dict(self) -> Dict: return { "sender": self.sender, "receiver": self.receiver, "performative": self.performative, "content": self.content } def __str__(self): return f"[{self.performative.upper()}] {self.sender} → {self.receiver}: {self.content}" class BaseAgent: def __init__(self, name: str, role: str): self.name = name self.role = role def receive_message(self, message: ACPMessage) -> ACPMessage: """ Override this method to define agent-specific reply logic. """ raise NotImplementedError("You must override receive_message() in your agent.") def create_message(self, receiver: str, performative: str, content: str) -> ACPMessage: return ACPMessage( sender=self.name, receiver=receiver, performative=performative, content=content )