§
    Cïj©  ã                  ó´   — U d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
  ej        e¦  «        Z ej        ¦   «         Zi Zded<   dd„Zdd„Zdd„Zdd„ZdS )a	  Module-level registry for DashboardAuthProvider instances.

Plugins call ``register_provider`` via the plugin context hook at startup.
The auth gate middleware iterates ``list_providers()`` and uses
``get_provider`` to dispatch on the session's ``provider`` field.
é    )ÚannotationsN)ÚListÚOptional)ÚDashboardAuthProviderÚassert_protocol_compliancez dict[str, DashboardAuthProvider]Ú
_providersÚproviderr   ÚreturnÚNonec                ó0  — t          t          | ¦  «        ¦  «         t          5  | j        t          v rt          d| j        ›¦  «        ‚| t          | j        <   ddd¦  «         n# 1 swxY w Y   t                               d| j        | j        ¦  «         dS )zœRegister a provider.

    Raises:
        TypeError: on protocol violation.
        ValueError: if a provider with the same name is already registered.
    z,dashboard-auth provider already registered: Nz+dashboard-auth: registered provider %r (%s))	r   ÚtypeÚ_lockÚnamer   Ú
ValueErrorÚ_logÚinfoÚdisplay_name)r	   s    úG/home/ubuntu/.hermes/hermes-agent/hermes_cli/dashboard_auth/registry.pyÚregister_providerr      sÜ   € õ t H™~œ~Ñ.Ô.Ð.Ý	ð -ð -ØŒ=JÐ&Ð&ÝØP¸x¼}ÐPÐPñô ð ð %-
8”=Ñ!ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ 	‡I‚IØ5ØŒxÔ,ñô ð ð ð s   ¤5A%Á%A)Á,A)r   ÚstrúOptional[DashboardAuthProvider]c                óx   — t           5  t                               | ¦  «        cddd¦  «         S # 1 swxY w Y   dS )z@Return the registered provider for ``name``, or None if unknown.N)r   r   Úget)r   s    r   Úget_providerr   +   s{   € å	ð $ð $Ý~Š~˜dÑ#Ô#ð$ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $ó   ˆ/¯3¶3úList[DashboardAuthProvider]c                 ó   — t           5  t          t                               ¦   «         ¦  «        cddd¦  «         S # 1 swxY w Y   dS )z0All registered providers, in registration order.N)r   Úlistr   Úvalues© ó    r   Úlist_providersr"   1   sƒ   € å	ð )ð )Ý•J×%Ò%Ñ'Ô'Ñ(Ô(ð)ð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   ˆ&;»?Á?c                 óx   — t           5  t                               ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )z"Test-only: drop all registrations.N)r   r   Úclearr    r!   r   Úclear_providersr%   7   s~   € å	ð ð Ý×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð r   )r	   r   r
   r   )r   r   r
   r   )r
   r   )r
   r   )Ú__doc__Ú
__future__r   ÚloggingÚ	threadingÚtypingr   r   Úhermes_cli.dashboard_auth.baser   r   Ú	getLoggerÚ__name__r   ÚLockr   r   Ú__annotations__r   r   r"   r%   r    r!   r   ú<module>r0      s  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð
 €wÔ˜Ñ"Ô"€Øˆ	ŒÑÔ€Ø/1€
Ð 1Ð 1Ð 1Ñ 1ðð ð ð ð($ð $ð $ð $ð)ð )ð )ð )ðð ð ð ð ð r!   