| 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) |
|
|