File size: 792 Bytes
22f818e | 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 | from abc import ABC, abstractmethod
from typing import Any, TypeVar
from uuid import UUID
from Backend.core.events import Event, EventBus, event_bus
from Backend.core.logging import AgentLogger, get_logger
E = TypeVar("E", bound=Event)
class BaseAgent(ABC):
def __init__(self, name: str):
self.name = name
self.logger: AgentLogger = get_logger(f"agent.{name}", agent_name=name)
self._event_bus = event_bus
def subscribe(self, event_type: type[E]) -> None:
self._event_bus.subscribe(event_type, self.handle)
@abstractmethod
async def handle(self, event: E) -> None:
pass
def log_decision(self, issue_id: UUID, decision: str, reasoning: str) -> None:
self.logger.log_decision(issue_id, decision, reasoning)
|