from abc import ABC, abstractmethod

class BaseGCPAgent(ABC):
    """
    Abstract base class for all GCP agents.

    This class defines the common interface that all specialized agents
    must implement. This ensures consistency and allows the GCPAgentManager 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
