+
    iHàjí  ã                   óŽ   a € R t0 t R t^ RIt^ RIt^ RIHtHtHtHtH	t	 / t
] ^ k Rs] ^k RtR R ltR R ltR R	 ltR
 R ltR# )z›Transport registry for provider response normalization.
transport = get_transport("anthropic_messages")
result = transport.normalize_response(raw_response)N)ÚNormalizedResponseÚToolCallÚUsageÚbuild_tool_callÚmap_finish_reasonFc                ó4   € V ^8„  d   QhR\         R\        RR/# )é   Úapi_modeÚtransport_clsÚreturnN)ÚstrÚtype)Úformats   "Ú>/home/ubuntu/.hermes/hermes-agent/agent/transports/__init__.pyÚ__annotate__r      s!   € ÷ (ñ (¤ð (´Tð (¸dñ (ó    c                ó   € V\         V &   R# )z2Register a transport class for an api_mode string.N)Ú	_REGISTRY)r	   r
   s   &&r   Úregister_transportr      s   € à'„IˆhÓr   c                ó$   € V ^8„  d   QhR\         /# )r   r	   )r   )r   s   "r   r   r      s   € ÷ *ñ *œCñ *r   c                óˆ   € \         '       d   V \        9  d   \        4        \        P                  V 4      pVf   R# V! 4       # )zbReturn a transport instance for ``api_mode``, or None so callers can fall back to the legacy path.N)Ú_discoveredr   Ú_discover_transportsÚget)r	   Úclss   & r   Úget_transportr      s5   € ÷ ‹;˜(¬)Ô3ÜÔÜ
�-‰-˜Ó
!€CØ’;ˆ4Ð)¡C£EÐ)r   c                ó   € V ^8„  d   QhRR/# )r   r   N© )r   s   "r   r   r   #   s   € ÷ @ñ @˜dñ @r   c                 óÔ   € Rs \         FG  p \        P                  ! \        4      ;_uu_ 4        \
        P                  ! RV  24       RRR4       KI  	  R#   + '       g   i     K^  ; i)z:Import all transport modules to trigger auto-registration.Tzagent.transports.N)r   Ú_TRANSPORT_MODULESÚ
contextlibÚsuppressÚImportErrorÚ	importlibÚimport_module)Únames    r   r   r   #   sL   € ð €Kß"ˆÜ× Ò ¤×-Õ-Ü×#Ò#Ð&7¸°vÐ$>Ô?÷ .Ñ-ó #ß-×-Ð-ús   ®AÁA'c                ó$   € V ^8„  d   QhR\         /# )r   r   )Ú	frozenset)r   s   "r   r   r   ,   s   € ÷  ñ  œiñ  r   c                 óL   € \         '       g   \        4        \        \        4      # )u  Every api_mode with a registered transport, in-tree and plugin-supplied.

``register_transport`` is the public seam for a provider plugin that speaks
its own dialect, but the api_mode gates elsewhere are closed literals â€” a
plugin's mode was rejected there and rewritten to ``chat_completions``, with
the dialect translation dropped and no error raised. Callers that validate an
api_mode use this so a registered transport is accepted on every path.
Discovers first, so a cold registry never reports an empty set.
)r   r   r'   r   r   r   r   Úregistered_api_modesr)   ,   s   € ÷ ‹;ÜÔÜ”YÓÐr   c                óh   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   ^\         9   d
   \        ;R&   # )r   r   r   )Ú__conditional_annotations__ÚdictÚbool)r   s   "r   r   r      s0   € ÷ ;ñ ;÷ Ò Œ4Ñ ñ;÷  Ò ŒTÑ ò!;r   )Ú	anthropicÚcodexÚchat_completionsÚbedrock)r+   Ú__doc__r    r#   Úagent.transports.typesr   r   r   r   r   r   r   r   r   r   r   r)   r   )r+   s   @r   Ú<module>r4      sJ   øðö;ó Û ÷õ ð €	Ó Ø€Ó ØJÐ õ(õ
*õ@÷ r   