"""Abstract base class for agent plugins.""" from __future__ import annotations import sys from abc import ABC, abstractmethod from typing import Any, Dict if sys.version_info >= (3, 11): from typing import TypedDict else: from typing_extensions import TypedDict class InstallConfig(TypedDict, total=False): org_id: str agent_id: str agent_name: str private_key: str kid: str token: str base_url: str guard_script_path: str class PluginStatus(TypedDict): installed: bool agent: str details: str class AgentPlugin(ABC): """Base class for all agent plugins.""" @abstractmethod def install(self, config: InstallConfig) -> None: """Install the Elydora hook for this agent.""" @abstractmethod def uninstall(self, agent_id: str = "") -> None: """Remove the Elydora hook for this agent.""" @abstractmethod def status(self) -> PluginStatus: """Check whether the Elydora hook is installed for this agent."""