Ë
    áß²j²	  ã                  ót   — d Z ddlmZ ddlZddlmZmZmZmZ  G d„ dej                  «      Z
 G d„ de
«      Zy)	aº  Shared base classes for the pluggable-backend provider ABCs.

Every tool-provider ABC shares the same identity + ``hermes tools`` picker surface.
Concrete ABCs subclass :class:`ProviderBase` (or :class:`CatalogProviderBase` when
the backend also exposes a model catalog and is available by default) and add only
their domain methods. Plugins keep subclassing the concrete ABC, so ``isinstance``
checks and abstract-method sets are unchanged.
é    )ÚannotationsN)ÚAnyÚDictÚListÚOptionalc                  óZ   — e Zd ZdZeej                  dd„«       «       Zedd„«       Zdd„Z	y)ÚProviderBasez8Identity + picker metadata common to every provider ABC.c                 ó   — y)zÝStable short identifier used as the provider's config-key value.

        Lowercase, no spaces (hyphens allowed where they preserve an existing
        user-visible name). Registries key providers by this string.
        N© ©Úselfs    ú8/home/ubuntu/.hermes/hermes-agent/agent/provider_base.pyÚnamezProviderBase.name   s   � ó    c                ó   — | j                   S )zEHuman-readable label shown in ``hermes tools``. Defaults to ``name``.)r   r   s    r   Údisplay_namezProviderBase.display_name   s   € ð �y‰yÐr   c                ó$   — | j                   ddg dœS )zýProvider row for the ``hermes tools`` picker.

        Shape: ``{"name", "badge", "tag", "env_vars": [{"key", "prompt", "url"}, ...]}``
        (browser providers may add ``"post_setup"``). Override to expose API key
        prompts and badges.
        Ú )r   ÚbadgeÚtagÚenv_vars)r   r   s    r   Úget_setup_schemazProviderBase.get_setup_schema!   s   € ð ×)Ñ)°B¸rÈrÑRÐRr   N©ÚreturnÚstr)r   zDict[str, Any])
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpropertyÚabcÚabstractmethodr   r   r   r   r   r   r	   r	      s?   „ ÙBàØ×Ñòó ó ðð òó ðôSr   r	   c                  ó:   — e Zd ZdZedd„«       Zdd„Zd	d„Zd
d„Zy)ÚCatalogProviderBasezUProvider with a model catalog; available by default, ``display_name`` is title-cased.c                ó6   — | j                   j                  «       S )zMHuman-readable label shown in ``hermes tools``. Defaults to ``name.title()``.)r   Útitler   s    r   r   z CatalogProviderBase.display_name.   s   € ð �y‰y�‰Ó Ð r   c                 ó   — y)uÑ   True when this provider can service calls (API key present, SDK importable).

        Must NOT raise and must NOT make network calls â€” the picker and
        ``hermes setup`` call it on every paint.
        Tr   r   s    r   Úis_availablez CatalogProviderBase.is_available3   s   € ð r   c                ó   — g S )zQModel catalog entries (``{"id": ..., "display": ...}`` + provider-specific keys).r   r   s    r   Úlist_modelszCatalogProviderBase.list_models;   s   € àˆ	r   c                óR   — | j                  «       }|r|d   j                  d«      S dS )zAId of the first catalog entry, or None when the catalog is empty.r   ÚidN)r*   Úget)r   Úmodelss     r   Údefault_modelz!CatalogProviderBase.default_model?   s*   € à×!Ñ!Ó#ˆÙ&,ˆv�a‰y�}‰}˜TÓ"Ð6°$Ð6r   Nr   )r   Úbool)r   zList[Dict[str, Any]])r   zOptional[str])	r   r   r   r   r    r   r(   r*   r/   r   r   r   r$   r$   +   s&   „ Ù_àò!ó ð!óóô7r   r$   )r   Ú
__future__r   r!   Útypingr   r   r   r   ÚABCr	   r$   r   r   r   ú<module>r4      s6   ðñõ #ã 
ß ,Ó ,ôS�3—7‘7ô Sô67˜,õ 7r   