File size: 1,196 Bytes
be454f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""Base Agent Class for MCP Communication"""

from abc import ABC, abstractmethod
from typing import Dict, Any
from core.mcp import MCPMessage, message_bus

class BaseAgent(ABC):
    """Abstract base class for all agents"""
    
    def __init__(self, name: str):
        self.name = name
        self.message_bus = message_bus
        
        # Subscribe to message bus
        self.message_bus.subscribe(self.name, self.handle_message)
    
    @abstractmethod
    async def handle_message(self, message: MCPMessage) -> None:
        """Handle incoming MCP messages"""
        pass
    
    async def send_message(self, receiver: str, msg_type, payload: Dict[str, Any], 
                          trace_id: str = None) -> None:
        """Send message to another agent"""
        message = self.message_bus.create_message(
            sender=self.name,
            receiver=receiver,
            msg_type=msg_type,
            payload=payload,
            trace_id=trace_id
        )
        await self.message_bus.send_message(message)
    
    def log(self, message: str, level: str = "INFO") -> None:
        """Simple logging mechanism"""
        print(f"[{level}] {self.name}: {message}")