
    in                     B    d Z ddlmZmZ ddlmZ  G d de          ZdS )z0Abstract base class for cloud browser providers.    )ABCabstractmethod)Dictc                       e Zd ZdZedefd            Zedefd            Zedede	ee
f         fd            Zededefd            Zededd	fd
            Zd	S )CloudBrowserProvideraC  Interface for cloud browser backends (Browserbase, Steel, etc.).

    Implementations live in sibling modules and are registered in
    ``browser_tool._PROVIDER_REGISTRY``.  The user selects a provider via
    ``hermes setup`` / ``hermes tools``; the choice is persisted as
    ``config["browser"]["cloud_provider"]``.
    returnc                     dS )z9Short, human-readable name shown in logs and diagnostics.N selfs    A/home/ubuntu/.hermes/hermes-agent/tools/browser_providers/base.pyprovider_namez"CloudBrowserProvider.provider_name             c                     dS )u   Return True when all required env vars / credentials are present.

        Called at tool-registration time (``check_browser_requirements``) to
        gate availability.  Must be cheap — no network calls.
        Nr
   r   s    r   is_configuredz"CloudBrowserProvider.is_configured   r   r   task_idc                     dS )u|  Create a cloud browser session and return session metadata.

        Must return a dict with at least::

            {
                "session_name": str,   # unique name for agent-browser --session
                "bb_session_id": str,  # provider session ID (for close/cleanup)
                "cdp_url": str,        # CDP websocket URL
                "features": dict,      # feature flags that were enabled
            }

        ``bb_session_id`` is a legacy key name kept for backward compat with
        the rest of browser_tool.py — it holds the provider's session ID
        regardless of which provider is in use.
        Nr
   )r   r   s     r   create_sessionz#CloudBrowserProvider.create_session   r   r   
session_idc                     dS )zRelease / terminate a cloud session by its provider session ID.

        Returns True on success, False on failure.  Should not raise.
        Nr
   r   r   s     r   close_sessionz"CloudBrowserProvider.close_session.   r   r   Nc                     dS )u   Best-effort session teardown during process exit.

        Called from atexit / signal handlers.  Must tolerate missing
        credentials, network errors, etc. — log and move on.
        Nr
   r   s     r   emergency_cleanupz&CloudBrowserProvider.emergency_cleanup5   r   r   )__name__
__module____qualname____doc__r   strr   boolr   r   objectr   r   r   r
   r   r   r   r      s         Hs H H H ^H t    ^ c d3;.?    ^"      ^ C D    ^  r   r   N)r   abcr   r   typingr   r   r
   r   r   <module>r%      si    6 6 # # # # # # # #      4 4 4 4 43 4 4 4 4 4r   