"""Base class for all AI agents. Each agent has a single responsibility and
returns a structured `AgentResult` so agents can be tested and replaced
independently."""
from dataclasses import dataclass, field


@dataclass
class AgentResult:
    agent: str
    score: float                      # 0-100
    direction: str | None = None      # "CALL" | "PUT" | None
    data: dict = field(default_factory=dict)
    notes: list[str] = field(default_factory=list)


class Agent:
    name: str = "agent"

    def run(self, context: dict) -> AgentResult:  # pragma: no cover - interface
        raise NotImplementedError
