+
    iHàj²	  ã                  óv   € R t ^ RIHt ^ RIt^ RIHtHtHtHt  ! R R]P                  4      t
 ! R R]
4      tR# )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                  óp   € ] tR t^tRt]]P                  R R l4       4       t]R R l4       t	R R lt
RtR	# )
ÚProviderBasez8Identity + picker metadata common to every provider ABC.c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚstr© )Úformats   "Ú8/home/ubuntu/.hermes/hermes-agent/agent/provider_base.pyÚ__annotate__ÚProviderBase.__annotate__   s   € ÷ ñ �cñ ó    c                ó   € R# )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.
Nr   ©Úselfs   &r   ÚnameÚProviderBase.name   s   ‚ r   c               ó   € V ^8„  d   QhRR/# r
   r   )r   s   "r   r   r      s   € ÷ ñ ˜cñ r   c                ó   € V P                   # )zEHuman-readable label shown in ``hermes tools``. Defaults to ``name``.)r   r   s   &r   Údisplay_nameÚProviderBase.display_name   s   € ð �y‰yÐr   c               ó   € V ^8„  d   QhRR/# )r   r   zdict[str, Any]r   )r   s   "r   r   r   !   s   € ÷ Sñ S .ñ Sr   c                ó*   € RV P                   RRRRR. /# )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_schemaÚProviderBase.get_setup_schema!   s!   € ð ˜×)Ñ)¨7°B¸¸rÀ:ÈrÐRÐRr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚpropertyÚabcÚabstractmethodr   r   r#   Ú__static_attributes__r   r   r   r   r      sE   † ÙBàØ×Ñôó ó ðð ôó ð÷Sñ Sr   r   c                  óT   € ] tR t^+tRt]R R l4       tR R ltR R ltR R	 lt	R
t
R# )ÚCatalogProviderBasezUProvider with a model catalog; available by default, ``display_name`` is title-cased.c               ó   € V ^8„  d   QhRR/# r
   r   )r   s   "r   r   Ú CatalogProviderBase.__annotate__/   s   € ÷ !ñ !˜cñ !r   c                ó6   € V P                   P                  4       # )zMHuman-readable label shown in ``hermes tools``. Defaults to ``name.title()``.)r   Útitler   s   &r   r   Ú CatalogProviderBase.display_name.   s   € ð �y‰y�‰Ó Ð r   c               ó   € V ^8„  d   QhRR/# )r   r   Úboolr   )r   s   "r   r   r1   3   s   € ÷ ñ ˜dñ r   c                ó   € R# )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_availableÚ CatalogProviderBase.is_available3   s   € ñ r   c               ó   € V ^8„  d   QhRR/# )r   r   zlist[dict[str, Any]]r   )r   s   "r   r   r1   ;   s   € ÷ ñ Ð1ñ r   c                ó   € . # )zQModel catalog entries (``{"id": ..., "display": ...}`` + provider-specific keys).r   r   s   &r   Úlist_modelsÚCatalogProviderBase.list_models;   s   € àˆ	r   c               ó   € V ^8„  d   QhRR/# )r   r   zOptional[str]r   )r   s   "r   r   r1   ?   s   € ÷ 7ñ 7˜}ñ 7r   c                óf   € V P                  4       pV'       d   V^ ,          P                  R4      # R# )zAId of the first catalog entry, or None when the catalog is empty.ÚidN)r<   Úget)r   Úmodelss   & r   Údefault_modelÚ!CatalogProviderBase.default_model?   s*   € à×!Ñ!Ó#ˆß&,ˆv�a�y�}‰}˜TÓ"Ð6°$Ð6r   r   N)r%   r&   r'   r(   r)   r*   r   r8   r<   rC   r-   r   r   r   r/   r/   +   s+   † Ù_àô!ó ð!õõ÷7ñ 7r   r/   )r)   Ú
__future__r   r+   Útypingr   r   r   r   ÚABCr   r/   r   r   r   Ú<module>rH      s6   ðñõ #ã 
ß ,Ó ,ôS�3—7‘7ô Sô67˜,ö 7r   