+
    iHàj¦
  ã                  óÎ   a € 0 t $ R t^ RIHt ^ RIt^ RIHt ^ RIHt ^ RI	H
t
Ht ]P                  ! ]4      t]
! R]]R7      tR]R	&   ]P#                  ]! 4       4       RtR
 R ltR# )u§  Browser provider registry: cloud browser backends registered by plugins via
:meth:`PluginContext.register_browser_provider`, consumed by ``tools.browser_tool_cloud._get_cloud_provider``.

Active-provider precedence (see :func:`_resolve`): ``browser.cloud_provider`` in config.yaml wins
regardless of ``is_available()`` (so the dispatcher surfaces a typed "X_API_KEY is not set" error
instead of silently switching); else the legacy auto-detect walk ``browser-use`` â†’ ``browserbase``
filtered by availability; else ``None`` (local browser mode). There is no capability split here â€”
every provider implements the full :class:`agent.browser_provider.BrowserProvider` lifecycle.
)ÚannotationsN)ÚOptional)ÚBrowserProvider)ÚProviderRegistryÚis_available_safeÚBrowser)ÚlabelÚprovider_clsÚloggerz!ProviderRegistry[BrowserProvider]Ú	_registryc               ó    € V ^8„  d   QhRRRR/# )é   Ú
configuredzOptional[str]ÚreturnzOptional[BrowserProvider]© )Úformats   "Ú;/home/ubuntu/.hermes/hermes-agent/agent/browser_registry.pyÚ__annotate__r   "   s   € ÷ ñ ˜ð Ð+Dñ ó    c           	     óJ  € \         P                  4       pV R8X  d   R# V '       d.   VP                  V 4      pVe   V# \        P	                  RV 4       \
         FF  pVP                  V4      pVf   K  \        V\        R\        P                  RR7      '       g   KD  Vu # 	  R# )aÑ  Resolve the active browser provider (rules in the module docstring).

Intentionally NO "single-eligible shortcut" (unlike ``agent.web_search_registry._resolve``): only
``_LEGACY_PREFERENCE`` names are auto-eligible. Firecrawl shares its API key with the *web* extract
plugin, so a user with ``FIRECRAWL_API_KEY`` must never be routed to a paid cloud browser without
setting ``browser.cloud_provider``; the same gate applies to third-party browser-provider plugins.
ÚlocalNzVbrowser cloud_provider '%s' configured but not registered; falling back to auto-detectuH   Browser provider %s.is_available() raised %s â€” treating as unavailableT)ÚlevelÚexc_info)	r   ÚmergedÚgetr
   ÚdebugÚ_LEGACY_PREFERENCEr   ÚloggingÚWARNING)r   ÚsnapshotÚproviderÚlegacys   &   r   Ú_resolver"   "   s•   € ô ×ÑÓ!€HØ�WÔÙßØ—<‘< 
Ó+ˆØÒØˆOÜ�‰ØdØô	
÷ %ˆØ—<‘< Ó'ˆØÔÔ$5Ø”fØVÜ—/‘/¨D÷%
õ %
ð
 ŠOñ %ñ r   )zbrowser-useÚbrowserbase)Ú__conditional_annotations__Ú__doc__Ú
__future__r   r   Útypingr   Úagent.browser_providerr   Úagent.provider_registryr   r   Ú	getLoggerÚ__name__r
   r   Ú__annotations__ÚexportÚglobalsr   r"   )r$   s   @r   Ú<module>r/      sg   øðôõ #ã Ý å 2ß Gà	×	Ò	˜8Ó	$€ñ 0@Ø
 /¸&ô0€	Ð,ó ð 
× Ñ ‘“Ô ð 4Ð ÷r   