from abc import ABC, abstractmethod

class BaseAgent(ABC):
    """
    Abstract base class for all AWS agents.

    This class defines the common interface that all specialized agents (like EC2Agent, S3Agent)
    must implement. This ensures consistency and allows the AgentManager to interact
    with any agent in a uniform way.
    """

    def __init__(self):
        """
        Initializes the agent.
        """
        pass

    @abstractmethod
    def execute(self, command: str, **kwargs):
        """
        The main entry point for an agent to execute a command.

        This method must be implemented by all subclasses.

        Args:
            command (str): The specific action to be performed by the agent 
                           (e.g., 'list_instances', 'create_bucket').
            **kwargs: A dictionary of arguments required by the command.

        Returns:
            dict: A dictionary containing the results of the command execution.
        
        Raises:
            NotImplementedError: If the command is not supported by the agent.
        """
        pass
