+
    iHàjÌ  ã                   óv   € R t ^ RIHtHtHtHt ^ RIHt ^ RIH	t	H
t
Ht  ! R R]4      t^ RIHt ]! R]4       R# )	z³AWS Bedrock Converse API transport.

Delegates format conversion to agent/bedrock_adapter.py. Bedrock uses its own
boto3 client, so client construction and calls stay on AIAgent.
)ÚAnyÚDictÚListÚOptional)ÚProviderTransport)ÚNormalizedResponseÚToolCallÚUsagec                   óº   a € ] tR t^t o RtRRRRRRRRR	R
RR
/t]V 3R lR l4       tV 3R lR ltV 3R lR lt	RV 3R lR llt
V 3R lR ltV 3R lR ltRtV tR# )ÚBedrockTransportz*Transport for api_mode='bedrock_converse'.Úend_turnÚstopÚtool_useÚ
tool_callsÚ
max_tokensÚlengthÚstop_sequenceÚguardrail_intervenedÚcontent_filterÚcontent_filteredc                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)Ústr)ÚformatÚ__classdict__s   "€Ú=/home/ubuntu/.hermes/hermes-agent/agent/transports/bedrock.pyÚ__annotate__ÚBedrockTransport.__annotate__   s   ø€ ÷ "ñ "™#ñ "ó    c                ó   € R # )Úbedrock_converse© )Úselfs   &r   Úapi_modeÚBedrockTransport.api_mode   s   € á!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,   ø€ ÷ Qñ Q©©d±3¹°8­nÕ)=ð QÉCñ Qr   c                ó>   € ^ RI Hp V! WP                  R4      R7      # )z3Convert OpenAI messages to Bedrock Converse format.)Úconvert_messages_to_converseÚmodel)r-   )Úagent.bedrock_adapterr,   Úget)r#   r'   Úkwargsr,   s   &&, r   Úconvert_messagesÚ!BedrockTransport.convert_messages   s   € åFÙ+¨H¿J¹JÀwÓ<OÔPÐPr   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(   ø€ ÷ 0ñ 0¡4©©S±#¨X­Õ#7ð 0¹Cñ 0r   c                ó   € ^ RI Hp V! V4      # )z;Convert OpenAI tool schemas to Bedrock Converse toolConfig.)Úconvert_tools_to_converse)r.   r6   )r#   r4   r6   s   && r   Úconvert_toolsÚBedrockTransport.convert_tools   s   € åCÙ(¨Ó/Ð/r   Nc          
      ó¤   <€ 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   r-   r'   r4   r   )r   r)   r*   r   r   )r   r   s   "€r   r   r   $   sV   ø€ ÷ ñ ÙðÙ$(©©c±3¨h­Õ$8ðá™™T¡#¡s (�^Õ,Õ-ðñ 
‰c‘3ˆh�ñr   c                óä   € ^ RI Hp Wn        V! WW4P                  R4      VP                  R4      VP                  R4      VP                  R4      R7      pRVR&   VP                  R	R
4      VR&   V# )zIBuild Converse kwargs, leaving the optional output limit to the provider.)Úbuild_converse_kwargsr   ÚtemperatureÚguardrail_configÚreasoning_config)r-   r'   r4   r   r<   r=   r>   TÚ__bedrock_converse__Úregionz	us-east-1Ú__bedrock_region__)r.   r;   Ú_modelr/   )r#   r-   r'   r4   Úparamsr;   r0   s   &&&&,  r   Úbuild_kwargsÚBedrockTransport.build_kwargs$   sr   € õ
 	@àŒÙ&Ø°%ÇJÁJÈ|ÓD\ØŸ
™
 =Ó1ÀFÇJÁJÐOaÓDbØ#ŸZ™ZÐ(:Ó;ô
ˆð *.ˆÐ%Ñ&Ø'-§z¡z°(¸KÓ'HˆÐ#Ñ$Øˆr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   Úresponser   )r   r   )r   r   s   "€r   r   r   6   s   ø€ ÷ 
ñ 
©3ð 
Ñ=Oñ 
r   c                óª  € ^ RI Hp \        VR4      '       d   VP                  '       d   TMV! V4      pVP                  ^ ,          pVP                  pVP
                  '       d[   VP
                   Uu. uFC  p\        VP                  VP                  P                  VP                  P                  R7      NKE  	  upMRpR U	u/ uF#  p	\        WiR4      '       g   K  V	\        Wi4      bK%  	  p
p	V
P                  R4      '       d8   \        V RR4      '       d%   ^ RI Hp . V
R,          ORVR	V P                  /NV
R&   \        VP                   TVP"                  ;'       g    R
\        VRR4      ;'       g    \        VRR4      \        VRR4      '       d!   \$        P&                  ! VP(                  4      MRT
;'       g    RR7      # u upi u up	i )zYNormalize either a raw boto3 dict or an already-normalized SimpleNamespace with .choices.)Únormalize_converse_responseÚchoices)ÚidÚnameÚ	argumentsNÚreasoning_detailsrB   )ÚCONVERSE_ISSUER_TYPEÚtyper-   r   Ú	reasoningÚreasoning_contentÚusage)Úcontentr   Úfinish_reasonrR   rT   Úprovider_data)rO   Úbedrock_content_blocks)r.   rJ   ÚhasattrrK   Úmessager   r   rL   ÚfunctionrM   rN   Úgetattrr/   rP   rB   r   rU   rV   r	   Úfrom_openairT   )r#   rH   r0   rJ   ÚnsÚchoiceÚmsgÚtcr   ÚkeyrW   rP   s   &&,         r   Únormalize_responseÚ#BedrockTransport.normalize_response6   s¨  € åEä  ¨9×5Ò5¸(×:J×:JÐ:J‰XÑPkÐltÓPuˆØ—‘˜A•ˆØ�n‰nˆð �~�~ˆ~ð cf×bpÒbpÓqÑbpÐ\^ŒX˜Ÿ™ R§[¡[×%5Ñ%5ÀÇÁ×AVÑAV×WÑbpÒqØ#'ð 	ñ
 /^ó
Ù.] sÔahÐilÐsw×axÔ"ˆC”˜Ó"Ò"Ñ.]ð 	ð 
ð ×ÑÐ0×1Ò1´g¸dÀHÈd×6SÒ6SÝBð2h°=ÐATÕ3Uð 2hØ39Ð;OÐQXÐZ^×ZeÑZeÐ2fð2hˆMÐ-Ñ.ä!Ø—K‘K¨JØ ×.Ñ.×8Ð8°&Ü˜c ;°Ó5×`Ð`¼ÀÐFYÐ[_Ó9`Ü18¸¸WÀd×1KÒ1K”%×#Ò# B§H¡HÔ-ÐQUÐer×ezÐezÐvzô	
ð 	
ùò rùò
s   Á4A	GÃGÃGc                ó&   <€ V ^8„  d   QhRS[ RS[/# rG   )r   Úbool)r   r   s   "€r   r   r   P   s   ø€ ÷ [ñ [©#ð [±$ñ [r   c                óp   € \        V\        4      '       d   RV9   # Ve   \        \        VRR4      4      # R# )zXRaw Bedrock dict needs an 'output' key; a normalized namespace needs non-empty .choices.ÚoutputNrK   F)Ú
isinstancer*   rf   r\   )r#   rH   s   &&r   Úvalidate_responseÚ"BedrockTransport.validate_responseP   s9   € ä�h¤×%Ò%Ø˜xÑ'Ð'Ø;CÒ;OŒt”G˜H i°Ó6Ó7ÐZÐUZÐZr   )rB   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú_STOP_REASON_MAPÚpropertyr$   r1   r7   rD   rc   rj   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      sz   ø‡ € Ù4ð 	�F˜J¨°lÀHÈoÐ_eØÐ 0Ð2DÐFVðÐð
 ÷"ó ð"÷Qð Q÷
0ð 0÷
ò ÷$
ð 
÷4[ö [r   r   )Úregister_transportr!   N)rp   Útypingr   r   r   r   Úagent.transports.baser   Úagent.transports.typesr   r   r	   r   Úagent.transportsru   r"   r   r   Ú<module>rz      s>   ðñ÷ -Ó ,å 3ß FÑ FôG[Ð(ô G[õT 0á Ð%Ð'7Ö 8r   