§
    ‰eîiÐ  ã                   óZ   — d Z ddlmZmZ ddlmZmZmZmZ ddl	m
Z
  G d„ de¦  «        ZdS )u8  Abstract base for provider transports.

A transport owns the data path for one api_mode:
  convert_messages â†’ convert_tools â†’ build_kwargs â†’ normalize_response

It does NOT own: client construction, streaming, credential refresh,
prompt caching, interrupt handling, or retry logic.  Those stay on AIAgent.
é    )ÚABCÚabstractmethod)ÚAnyÚDictÚListÚOptional)ÚNormalizedResponsec                   ó¢  — e Zd ZdZeedefd„¦   «         ¦   «         Zedee	ee
f                  de
fd„¦   «         Zedee	ee
f                  de
fd„¦   «         Ze	 dd	edee	ee
f                  deee	ee
f                           de	ee
f         fd
„¦   «         Zede
defd„¦   «         Zde
defd„Zde
dee	eef                  fd„Zdedefd„ZdS )ÚProviderTransportzEBase class for provider-specific format conversion and normalization.Úreturnc                 ó   — dS )zGThe api_mode string this transport handles (e.g. 'anthropic_messages').N© )Úselfs    ú7/home/div/.hermes/hermes-agent/agent/transports/base.pyÚapi_modezProviderTransport.api_mode   s	   € ð 	ˆó    Úmessagesc                 ó   — dS )zÕConvert OpenAI-format messages to provider-native format.

        Returns provider-specific structure (e.g. (system, messages) for Anthropic,
        or the messages list unchanged for chat_completions).
        Nr   )r   r   Úkwargss      r   Úconvert_messagesz"ProviderTransport.convert_messages   s	   € ð 	ˆr   Útoolsc                 ó   — dS )z�Convert OpenAI-format tool definitions to provider-native format.

        Returns provider-specific tool list (e.g. Anthropic input_schema format).
        Nr   )r   r   s     r   Úconvert_toolszProviderTransport.convert_tools"   ó	   € ð 	ˆr   NÚmodelc                 ó   — dS )u  Build the complete API call kwargs dict.

        This is the primary entry point â€” it typically calls convert_messages()
        and convert_tools() internally, then adds model-specific config.

        Returns a dict ready to be passed to the provider's SDK client.
        Nr   )r   r   r   r   Úparamss        r   Úbuild_kwargszProviderTransport.build_kwargs*   s	   € ð 	ˆr   Úresponsec                 ó   — dS )z—Normalize a raw provider response to the shared NormalizedResponse type.

        This is the only method that returns a transport-layer type.
        Nr   )r   r   r   s      r   Únormalize_responsez$ProviderTransport.normalize_response;   r   r   c                 ó   — dS )zËOptional: check if the raw response is structurally valid.

        Returns True if valid, False if the response should be treated as invalid.
        Default implementation always returns True.
        Tr   ©r   r   s     r   Úvalidate_responsez#ProviderTransport.validate_responseC   ó	   € ð ˆtr   c                 ó   — dS )z¯Optional: extract provider-specific cache hit/creation stats.

        Returns dict with 'cached_tokens' and 'creation_tokens', or None.
        Default returns None.
        Nr   r#   s     r   Úextract_cache_statsz%ProviderTransport.extract_cache_statsK   r%   r   Ú
raw_reasonc                 ó   — |S )zÆOptional: map provider-specific stop reason to OpenAI equivalent.

        Default returns the raw reason unchanged.  Override for providers
        with different stop reason vocabularies.
        r   )r   r(   s     r   Úmap_finish_reasonz#ProviderTransport.map_finish_reasonS   s
   € ð Ðr   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   Ústrr   r   r   r   r   r   r   r   r	   r!   Úboolr$   Úintr'   r*   r   r   r   r   r      sØ  € € € € € ØOÐOàØð˜#ð ð ð ñ „^ñ „Xðð ð¨¨d°3¸°8¬nÔ)=ð ÈCð ð ð ñ „^ðð ð 4¨¨S°#¨X¬Ô#7ð ¸Cð ð ð ñ „^ðð ð
 15ð	ð àðð �t˜C ˜H”~Ô&ðð ˜˜T # s (œ^Ô,Ô-ð	ð 
ˆc�3ˆhŒðð ð ñ „^ðð  ð¨3ð Ð=Oð ð ð ñ „^ðð¨#ð °$ð ð ð ð ð¨Cð °H¸TÀ#ÀsÀ(¼^Ô4Lð ð ð ð ð¨Cð °Cð ð ð ð ð ð r   r   N)r.   Úabcr   r   Útypingr   r   r   r   Úagent.transports.typesr	   r   r   r   r   ú<module>r6      s�   ððð ð $Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 5Ð 5Ð 5Ð 5Ð 5Ð 5ðIð Ið Ið Ið I˜ñ Iô Ið Ið Ið Ir   