§
    ‰eî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    ú>/home/div/.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 )z�Release / 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ð ¨d°3¸°;Ô.?ð ð ð ñ „^ðð" ð¨ð °ð ð ð ñ „^ðð ð¨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   