+
    iHàjY	  ã                   óT   € R t ^ RIHtHt ^ RIHtHtHtHt ^ RI	H
t
  ! R R]4      tR# )u  Abstract base for provider transports.
A transport owns one api_mode's data path (convert_messages -> convert_tools -> build_kwargs
-> normalize_response), NOT client construction, streaming, credentials, caching, interrupts
or retries â€” those stay on AIAgent.)ÚABCÚabstractmethod)ÚAnyÚDictÚListÚOptional)ÚNormalizedResponsec                   ó  a € ] tR t^t o RtRt]]V 3R lR l4       4       t]V 3R lR l4       t	]V 3R lR l4       t
]RV 3R	 lR
 ll4       t]V 3R lR l4       tV 3R lR ltV 3R lR ltV 3R lR ltV 3R ltRtV tR# )ÚProviderTransportzEBase class for provider-specific format conversion and normalization.Nc                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn©Ústr)ÚformatÚ__classdict__s   "€Ú:/home/ubuntu/.hermes/hermes-agent/agent/transports/base.pyÚ__annotate__ÚProviderTransport.__annotate__   s   ø€ ÷ Vñ V™#ñ Vó    c                ó   € R# )zGThe api_mode string this transport handles (e.g. 'anthropic_messages').N© )Úselfs   &r   Úapi_modeÚProviderTransport.api_mode   ó   ‚ r   c                óL   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[/# )r   Úmessagesr   ©ÚlistÚdictr   r   )r   r   s   "€r   r   r      s,   ø€ ÷ wñ w©©d±3¹°8­nÕ)=ð wÉCñ wr   c                ó   € R# )zhConvert OpenAI-format messages to the provider-native structure (e.g. (system, messages) for Anthropic).Nr   )r   r   Úkwargss   &&,r   Úconvert_messagesÚ"ProviderTransport.convert_messages   r   r   c                óL   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[/# )r   Útoolsr   r   )r   r   s   "€r   r   r      s,   ø€ ÷ Pñ P¡4©©S±#¨X­Õ#7ð P¹Cñ Pr   c                ó   € R# )zAConvert OpenAI-format tool definitions to provider-native format.Nr   )r   r&   s   &&r   Úconvert_toolsÚProviderTransport.convert_tools   r   r   c          
      ó¤   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[S[S[S[ S[3,          ,          ,          RS[S[ S[3,          /# )r   Úmodelr   r&   r   )r   r   r    r   r   )r   r   s   "€r   r   r   !   s\   ø€ ÷ hñ hÙðhÙ$(©©c±3¨h­Õ$8ðhá™™T¡#¡s (�^Õ,Õ-ðhñ 
‰c‘3ˆh�ñhr   c                ó   € R# )zYPrimary entry point: convert messages/tools and return kwargs ready for the provider SDK.Nr   )r   r+   r   r&   Úparamss   &&&&,r   Úbuild_kwargsÚProviderTransport.build_kwargs    r   r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   Úresponser   )r   r   )r   r   s   "€r   r   r   (   s    ø€ ÷ nñ n©3ð nÑ=Oñ nr   c                ó   € R# )z_Normalize a raw provider response to NormalizedResponse (the only transport-layer return type).Nr   )r   r2   r"   s   &&,r   Únormalize_responseÚ$ProviderTransport.normalize_response'   r   r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r1   )r   Úbool)r   r   s   "€r   r   r   +   s   ø€ ÷ ñ ©#ð ±$ñ r   c                ó   € R# )z?Optional structural validity check; default accepts everything.Tr   ©r   r2   s   &&r   Úvalidate_responseÚ#ProviderTransport.validate_response+   ó   € ár   c                óL   <€ V ^8„  d   QhRS[ RS[S[S[S[3,          ,          /# r1   )r   r   r    r   Úint)r   r   s   "€r   r   r   /   s(   ø€ ÷ ñ ©Cð ±H¹TÁ#ÁsÀ(½^Õ4Lñ r   c                ó   € R# )zEOptional: ``{'cached_tokens', 'creation_tokens'}`` or None (default).Nr   r9   s   &&r   Úextract_cache_statsÚ%ProviderTransport.extract_cache_stats/   r<   r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   Ú
raw_reasonr   r   )r   r   s   "€r   r   r   3   s   ø€ ÷ nñ n©Cð n±Cñ nr   c                óZ   € V P                   f   V# V P                   P                  VR4      # )zaMap a provider stop reason via ``_STOP_REASON_MAP`` (unknown -> 'stop'); passthrough when no map.Ústop)Ú_STOP_REASON_MAPÚget)r   rC   s   &&r   Úmap_finish_reasonÚ#ProviderTransport.map_finish_reason3   s-   € à!×2Ñ2Ò:ˆzÐmÀ×@UÑ@U×@YÑ@YÐZdÐflÓ@mÐmr   c                óL   <€ V ^8„  d   Qh/ S[ S[S[S[3,          ,          ;R&   # )r   rF   )r   r    r   )r   r   s   "€r   r   r      s   ø‡ ‚ ñ
 ™t¡C© H�~Õ.Ñ5ò r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rF   Úpropertyr   r   r#   r(   r.   r4   r:   r@   rH   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r
   r
      s²   ø‡ € ÙOð 26ÐàØ÷Vó ó ðVð ÷wó ðwð ÷Pó ðPð ÷hñ hó ðhð ÷nó ðn÷ð ÷ð ÷nð n÷O ƒ r   r
   N)rO   Úabcr   r   Útypingr   r   r   r   Úagent.transports.typesr   r
   r   r   r   Ú<module>rW      s&   ðñ)÷
 $ß ,Ó ,å 5ô)n˜ö )nr   