Ë
    uPêjòO  ã                   ó\  — U d dl mZmZ d dlmZmZmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ erd dlmZ d d	lmZ d d
lmZ d dlmZ  eddh«      Z ee!d<   dZ"ee!d<   dZ#ee!d<   de$de%fd„Z&defd„Z'e(ee$e)z  f   Z*de+de,e*   ddfd„Z-de.de,e*   ddfd„Z/de.de%de%de(e,e$   e,e*   f   fd „Z0d!ee+   de(e,e$   e,e*   f   fd"„Z1d#e,e$   de,e*   ddfd$„Z2e$e(e$e)f   z  Z3e	e!d%<    G d&„ d'e«      Z4e(e3e4e$f   Z5 G d(„ d)e«      Z6d*e7de)fd+„Z8d,e+de,e5   fd-„Z9 G d.„ d/e«      Z:y)0é    )ÚMappingÚSequence)ÚTYPE_CHECKINGÚAnyÚFinalÚOptionalÚProtocolÚ	TypeAlias)ÚReadOnlyÚ	TypedDict)Úverbose_proxy_logger)ÚBaseTranslation)Ú+effective_skip_system_message_for_guardrailÚ)effective_skip_tool_message_for_guardrail)ÚGenericGuardrailAPIInputs)ÚCustomGuardrail)ÚLogging)ÚUserAPIKeyAuth)ÚProxyLoggingÚconversezconverse-streamÚ_CONVERSE_ACTIONSzvnd.amazon.eventstreamÚ_EVENT_STREAM_CONTENT_TYPEz"application/vnd.amazon.eventstreamÚ_EVENT_STREAM_MEDIA_TYPEÚendpointÚreturnc                 ór   — | j                  d«      j                  d«      }t        |«      xr |d   t        v S )Nú/éÿÿÿÿ)ÚrstripÚsplitÚboolr   )r   Úpartss     úƒ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/passthrough/guardrail_translation/handler.pyÚ_is_converse_endpointr$      s4   € Ø—?‘? 3Ó'×-Ñ-¨cÓ2€EÜ�‹;Ò9˜5 ™9Ô(9Ð9Ð9ó    c                  ó   — ddl m}   | «       S )zÝ
    Fallback for non-Converse Bedrock routes (e.g. invoke). The generic
    handler scans the full request/response payload so blocking guardrails
    still run, matching how other passthrough providers are guarded.
    r   ©ÚPassThroughEndpointHandler)Ú7litellm.llms.pass_through.guardrail_translation.handlerr(   r'   s    r#   Ú_generic_passthrough_handlerr*      s   € õñ &Ó'Ð'r%   ÚnodeÚholdersNc                 ó®  — | g}|rÐ|j                  «       }t        |t        «      rQ|j                  «       D ]=  \  }}t        |t        «      r|sŒ|j                  ||f«       Œ-|j                  |«       Œ? n[t        |t        «      rKt        |«      D ]=  \  }}t        |t        «      r|sŒ|j                  ||f«       Œ-|j                  |«       Œ? |rŒÏyy)aX  
    Record a (container, key) holder for every non-empty string value nested
    under an arbitrary JSON node, so prompt content a caller hides in fields
    like ``toolUse.input`` or ``toolResult.content[].json`` is still scanned
    and can be written back in place. Iterative to avoid unbounded recursion
    on deeply nested payloads.
    N)ÚpopÚ
isinstanceÚdictÚitemsÚstrÚappendÚlistÚ	enumerate)r+   r,   ÚstackÚcurrentÚkeyÚvalueÚindexs          r#   Ú_collect_stringsr;   .   s¸   € ð #' €EÙ
Ø—)‘)“+ˆÜ�gœtÔ$Ø%Ÿm™m›oò (‘
��UÜ˜e¤SÔ)ÚØŸ™¨° ~Õ6à—L‘L Õ'ñ(ô ˜¤Ô&Ü )¨'Ó 2ò (‘��uÜ˜e¤SÔ)ÚØŸ™¨°Ð'7Õ8à—L‘L Õ'ð(ô r%   Úblockc                 ót   — | j                  d«      }t        |t        «      r|r|j                  | df«       y y y )NÚtext)Úgetr/   r2   r3   )r<   r,   r>   s      r#   Ú_collect_block_textr@   I   s4   € Ø—)‘)˜FÓ#€DÜ�$œÔ¡Ø�‰˜˜v�Õ'ð "&Ðr%   ÚbodyÚskip_systemÚ	skip_toolc                 ó¦  — g }|s7| j                  d«      xs g D ]  }t        |t        «      sŒt        ||«       Œ! | j                  d«      xs g D �]  }t        |t        «      sŒ|j                  d«      xs g D ]Ú  }t        |t        «      sŒ|r	d|v sd|v rŒt        ||«       |j                  d«      }t        |t        «      rt	        |j                  d«      |«       |j                  d«      }t        |t        «      sŒ‰|j                  d«      xs g D ]:  }t        |t        «      sŒt        ||«       t	        |j                  d«      |«       Œ< ŒÜ �Œ	 | j                  d«      }	t        |	t        «      rt	        |	j                  d	«      |«       t	        | j                  d
«      |«       |D �
�cg c]
  \  }
}|
|   ‘Œ }}
}||fS c c}}
w )a:  
    Walk a Bedrock Converse request body and collect text content.

    Returns (texts, holders) where each holder is the (container, key) pair
    that owns the extracted string, so write-back mutates it in place. Besides
    top-level ``text`` blocks this scans the arbitrary-JSON fields a caller can
    hide prompt content in -- ``toolUse.input`` and
    ``toolResult.content[].json`` (alongside ``toolResult.content[].text``) --
    as well as the request-level fields still forwarded to Bedrock that a caller
    can route blocked content through: ``toolConfig.tools`` (tool names,
    descriptions and input schemas) and ``additionalModelRequestFields``. Tool
    message blocks are skipped when tool messages are excluded, but tool
    definitions are always scanned to match the chat-completions guardrail path.
    ÚsystemÚmessagesÚcontentÚtoolUseÚ
toolResultÚinputÚjsonÚ
toolConfigÚtoolsÚadditionalModelRequestFields)r?   r/   r0   r@   r;   )rA   rB   rC   r,   r<   ÚmessageÚtool_useÚtool_resultÚinnerÚtool_configÚ	containerr8   Útextss                r#   Ú_extract_converse_textsrV   O   sª  € ð& +-€GáØ—X‘X˜hÓ'Ò-¨2ò 	4ˆEÜ˜%¤Õ&Ü# E¨7Õ3ð	4ð —8‘8˜JÓ'Ò-¨2ó EˆÜ˜'¤4Ô(ØØ—[‘[ Ó+Ò1¨rò 	EˆEÜ˜e¤TÔ*ØÙ˜i¨5Ñ0°LÀEÑ4IØÜ  wÔ/Ø—y‘y Ó+ˆHÜ˜(¤DÔ)Ü  §¡¨gÓ!6¸Ô@ØŸ)™) LÓ1ˆKÜ˜+¤tÕ,Ø(Ÿ_™_¨YÓ7Ò=¸2ò E�EÜ! %¬Õ.Ü+¨E°7Ô;Ü(¨¯©°6Ó):¸GÕDñEò	EðEð& Ÿ™ ,Ó/€KÜ�+œtÔ$Ü˜Ÿ™¨Ó1°7Ô;ä�T—X‘XÐ<Ó=¸wÔGà9@×A¡~ y°#�I˜c“NÐA€EÑAØ�'ˆ>Ðùó Bs   Æ7GÚcontent_blocksc                 óZ  — g }| D �]  }t        |t        «      sŒt        ||«       |j                  d«      }t        |t        «      rt	        |j                  d«      |«       |j                  d«      }t        |t        «      r-|j                  d«      }t        |t        «      rt        ||«       |j                  d«      }t        |t        «      sŒÍ|j                  d«      xs g D ]  }t        |t        «      sŒt        ||«       Œ! �Œ |D ��	cg c]
  \  }}	||	   ‘Œ }
}}	|
|fS c c}	}w )au  
    Collect user-visible text from Bedrock Converse output content blocks.

    Covers ``text`` blocks plus the other content-bearing fields a model can
    emit -- ``toolUse.input``, ``reasoningContent.reasoningText.text`` and
    ``citationsContent.content[].text`` -- while leaving structural values such
    as reasoning signatures and citation sources untouched.
    rH   rJ   ÚreasoningContentÚreasoningTextÚcitationsContentrG   )r/   r0   r@   r?   r;   )rW   r,   r<   rP   Ú	reasoningÚreasoning_textÚ	citationsÚcitedrT   r8   rU   s              r#   Ú_extract_converse_output_textsr`   †   s  € ð +-€GØó 8ˆÜ˜%¤Ô&ØÜ˜E 7Ô+Ø—9‘9˜YÓ'ˆÜ�h¤Ô%Ü˜XŸ\™\¨'Ó2°GÔ<Ø—I‘IÐ0Ó1ˆ	Ü�i¤Ô&Ø&Ÿ]™]¨?Ó;ˆNÜ˜.¬$Ô/Ü# N°GÔ<Ø—I‘IÐ0Ó1ˆ	Ü�i¤Õ&Ø"Ÿ™ yÓ1Ò7°Rò 8�Ü˜e¤TÕ*Ü'¨¨wÕ7ò8ð8ð" :A×A¡~ y°#�I˜c“NÐA€EÑAØ�'ˆ>Ðùó Bs   ÄD'Úguardrailed_textsc                 óà   — t        | «      t        |«      k  r)t        j                  dt        | «      t        |«      «       t        |«      D ]   \  }\  }}|t        | «      k\  r y | |   ||<   Œ" y )Nz‡BedrockPassthroughGuardrailHandler: guardrail returned %d texts for %d extracted fields; the unreturned fields keep their original text)Úlenr   Úwarningr5   )ra   r,   ÚidxrT   r8   s        r#   Ú_write_back_textsrf   §   sy   € ô ÐÓ¤ G£Ò,Ü×$Ñ$ðOäÐ!Ó"Ü�‹Lô		
ô "+¨7Ó!3ò 0ÑˆÑˆi˜Ø”#Ð'Ó(Ò(ÙØ*¨3Ñ/ˆ	�#Šñ0r%   Ú	_GroupKeyc                   ó4   — e Zd ZdZdedefd„Zdededdfd„Zy)Ú_TextContainerzBJSON object whose ``key`` entry holds a guardrailable text string.r8   r   c                 ó   — y ©N© )Úselfr8   s     r#   Ú__getitem__z_TextContainer.__getitem__¾   ó   � r%   r9   Nc                 ó   — y rk   rl   )rm   r8   r9   s      r#   Ú__setitem__z_TextContainer.__setitem__À   ro   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   rn   rq   rl   r%   r#   ri   ri   »   s$   „ ÙLà2˜sÐ2¨#Ó2à?˜sÐ?¨3Ð?°dÔ?r%   ri   c                   óB   — e Zd ZU dZee   ed<   eeee	e
f         ed<   y)Ú_StreamFramezCOne raw event-stream frame plus the guardrailable texts it carries.ÚrawrU   N)rr   rs   rt   ru   r   ÚbytesÚ__annotations__r   Útuplerg   r2   rl   r%   r#   rw   rw   Æ   s(   … ÙMà	�%‰ÓØ�H˜U 9¨c >Ñ2Ñ3Ñ4Ô4r%   rw   Úbufferc                 ó4   — dd l }|j                  d| «      d   S )Nr   ú!I)ÚstructÚunpack)r|   r   s     r#   Ú_unpack_uint32r�   Í   s   € Ûà�=‰=˜˜vÓ& qÑ)Ð)r%   Údeltac                 ó   — g }t        | t        «      s|S t        | j                  d«      t        «      r|j	                  d| df«       | j                  d«      }t        |t        «      r3t        |j                  d«      t        «      r|j	                  d|df«       | j                  d«      }t        |t        «      r3t        |j                  d«      t        «      r|j	                  d|df«       | j                  d«      }t        |t        «      rmt        |j                  d«      xs g «      D ]L  \  }}t        |t        «      sŒt        |j                  d«      t        «      sŒ7|j	                  d	|f|df«       ŒN |S )
aY  
    Collect the user-visible text strings a Bedrock Converse ``contentBlockDelta``
    can carry, matching the coverage of the non-streaming output handler.

    Each holder is ``(group_key, container, key)`` where ``container[key]`` is the
    text. ``group_key`` ties together fragments that belong to the same logical
    stream (e.g. a single mask token split across frames) so they are
    concatenated before guardrailing and redistributed afterwards. Structural
    values such as reasoning signatures, redacted reasoning and citation sources
    are left out so they are never rewritten.
    r>   rH   rJ   ÚtoolrY   r\   r[   rG   Úcitation)r/   r0   r?   r2   r3   r5   )r‚   r,   rP   r\   r^   r:   r_   s          r#   Ú"_collect_stream_delta_text_holdersr†   Ó   s5  € ð *,€GÜ�eœTÔ"ØˆÜ�%—)‘)˜FÓ#¤SÔ)Ø�‰˜  vÐ.Ô/Ø—i‘i 	Ó*€HÜ�(œDÔ!¤j°·±¸gÓ1FÌÔ&LØ�‰˜ ¨'Ð2Ô3Ø—y‘yÐ!3Ó4€IÜ�)œTÔ"¤z°)·-±-ÀÓ2GÌÔ'MØ�‰˜ Y°Ð7Ô8Ø—y‘yÐ!3Ó4€IÜ�)œTÔ"Ü% i§m¡m°IÓ&>Ò&DÀ"ÓEò 	E‰LˆE�5Ü˜%¤Õ&¬:°e·i±iÀÓ6GÌÕ+MØ—‘ ¨UÐ 3°U¸FÐCÕDð	Eð €Nr%   c                   óâ   — e Zd Zededefd„«       Zedefd„«       Zededefd„«       Zede	dd	d
dde
de	f
d„«       Z	 dde
ddded   deeef   fd„Z	 	 	 ddeddded   d
ed   de
dz  defd„Zy)Ú"BedrockPassthroughGuardrailHandlerÚcontent_typer   c                 ó   — t         | v S rk   )r   )r‰   s    r#   Úis_event_stream_content_typez?BedrockPassthroughGuardrailHandler.is_event_stream_content_typeó   s   € ä)¨\Ð9Ð9r%   c                  ó   — t         S rk   )r   rl   r%   r#   Úevent_stream_media_typez:BedrockPassthroughGuardrailHandler.event_stream_media_type÷   s   € ä'Ð'r%   r   c                 ó   — t        | «      S rk   )r$   )r   s    r#   Ú(event_stream_endpoint_is_de_anonymizablezKBedrockPassthroughGuardrailHandler.event_stream_endpoint_is_de_anonymizableû   s   € ä$ XÓ.Ð.r%   Ú
body_bytesÚproxy_logging_objr   Úuser_api_key_dictr   Údatac           
   ƒ   óÞ
  K  — dd l }dd l}ddlm} ddlm} g }d}	|	dz   t        | «      k  rüt        | |	|	dz    «      }
|
dk  s|	|
z   t        | «      kD  rnÔ| |	|	|
z    }|	|
z  }		  |«       }|j                  |«       t        t        |«      «      }|j                  j                  d«      }|j                  }g }|d	k(  rF	 |j%                  |«      }t'        |j                  d
«      «      D ���cg c]  \  }}}|||   f‘Œ }}}}|j#                  ||dœ«       |	dz   t        | «      k  rŒü| |	d  }g }i }i }t)        |«      D ]g  \  }}t)        |d   «      D ]Q  \  }\  }}||vrg ||<   g ||<   |j#                  |«       ||   j#                  ||f«       ||   j#                  |«       ŒS Œi |D �cg c]  }dj+                  ||   «      sŒ|‘Œ }}|s| S dd|D �cg c]  }ddj+                  ||   «      i‘Œ c}dœiddœ} |j-                  ||| ¬«      ƒ d {  –—† }!t/        |!t0        «      s+t        j                   dt3        |!«      j4                  «       | S 	 |!d   d   d   }"t7        t        |«      «      D �#cg c]
  }#|"|#   d   ‘Œ }$}#i }%t?        ||$«      D ]‰  \  }}&||   }'||   }(tA        d„ |(D «       «      xs d})t        |&«      }*d}+t)        |'«      D ]I  \  },}-|,t        |'«      dz
  k(  r	|&|+d  |%|-<   Œ |+tC        |*t        |(|,   «      z  |)z  «      z   }.|&|+|. |%|-<   |.}+ŒK Œ‹ g }/t)        |«      D �]V  \  }}|d   s|/j#                  |d   «       Œ!|d   }t        |dd «      }0t        |dd «      }1|dd|1z    }2	 |j%                  |d|1z   |0dz
   «      }t)        t'        |j                  d
«      «      «      D ]$  \  }\  }3}}|%j                  ||f«      }4|4€Œ |4||<   Œ& |jE                  |d¬«      jG                  «       }5d|1z   t        |5«      z   dz   }6|jI                  d|6|1«      }7 ||7«      d z  }8|jI                  d!|8«      }9|9|2z   |5z   }: ||:|8«      d z  };|jI                  d!|;«      }<|/j#                  |7|9z   |2z   |5z   |<z   «       �ŒY |/j#                  |«       d"j+                  |/«      S # t        $ r5}t        j                   d|«       |j#                  |g dœ«       Y d }~�ŒÇd }~ww xY wc c}}}w # t        $ r!}t        j                   d|«       Y d }~�Œd }~ww xY wc c}w c c}w 7 �Œc c}#w # t8        t:        t<        f$ r | cY S w xY w# t        $ r |/j#                  |«       Y �Œ<w xY w­w)#Nr   )Úcrc32)ÚEventStreamBufferé   é   z:event-typezeBedrockPassthroughGuardrailHandler: could not decode event-stream frame, forwarding it unmodified: %s)rx   rU   ÚcontentBlockDeltar‚   znBedrockPassthroughGuardrailHandler: could not parse contentBlockDelta payload, forwarding frame unmodified: %srU   Ú rO   Ú	assistantr>   )ÚrolerG   Úend_turn)ÚoutputÚ
stopReason)r“   r’   ÚresponsezgBedrockPassthroughGuardrailHandler: post_call_success_hook returned %s, leaving event stream unmodifiedrž   rG   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrk   )rc   )Ú.0Úts     r#   ú	<genexpr>zOBedrockPassthroughGuardrailHandler.de_anonymize_event_stream.<locals>.<genexpr>j  s   è ø€ Ò8¨œS ŸVÑ8ùs   ‚é   rx   é   é   )ú,ú:)Ú
separatorsz!IIl   ÿÿ r~   r%   )%rK   r   Úbinasciir•   Úbotocore.eventstreamr–   rc   r�   Úadd_dataÚnextÚiterÚheadersr?   ÚpayloadÚ	Exceptionr   Údebugr3   Úloadsr†   r5   ÚjoinÚpost_call_success_hookr/   r0   Útyperr   ÚrangeÚKeyErrorÚ
IndexErrorÚ	TypeErrorÚzipÚsumÚroundÚdumpsÚencodeÚpack)=r�   r‘   r’   r“   Ú_jsonr   Ú	esm_crc32r–   ÚframesÚoffsetÚtotal_lengthÚ	frame_rawÚbufÚmsgÚ
event_typeÚpayload_bytesÚerU   Úpayload_dictÚ	group_keyrT   r8   Útrailing_bytesÚgroup_orderÚgroup_membersÚgroup_textsÚ	frame_idxÚframeÚ	local_idxr>   ÚgkÚactive_groupsÚsynthetic_responseÚ	processedÚprocessed_blocksÚiÚde_anonymized_textsÚnew_text_mapÚde_anonymized_textÚmembersÚ
orig_textsÚ
total_origÚde_anon_lenÚposÚkÚmemberÚendÚresult_partsÚ
orig_totalÚorig_hdrs_lenÚheaders_bytesÚ_Únew_textÚnew_payloadÚ	new_totalÚpreludeÚprelude_crc_valÚprelude_crc_bÚpart_for_msg_crcÚmsg_crc_valÚ	msg_crc_bs=                                                                r#   Úde_anonymize_event_streamz<BedrockPassthroughGuardrailHandler.de_anonymize_event_streamÿ   si  è ø€ ó 	ÛÝ/å:à,.ˆØˆà�r‰kœS ›_Ò,Ü)¨*°V¸fÀq¹jÐ*IÓJˆLØ˜bÒ  F¨\Ñ$9¼CÀ
»OÒ$KØØ" 6¨F°\Ñ,AÐBˆIØ�lÑ"ˆFðÙ'Ó)�Ø—‘˜YÔ'Üœ4 ›9“o�Ø Ÿ[™[Ÿ_™_¨]Ó;�
Ø #§¡�ð 24ˆEØÐ0Ò0ðØ6;·k±kÀ-Ó6P�Lô :\Ð\h×\lÑ\lÐmtÓ\uÓ9v÷ð á5˜I y°#ð # I¨c¡NÒ3ð�Eò ð �M‰M )°eÑ<Ô=ðK �r‰kœS ›_Ó,ðN !+¨6¨7Ð 3ˆà.0ˆØGIˆØ9;ˆÜ )¨&Ó 1ò 	4ÑˆI�uÜ09¸%À¹.Ó0Iò 4Ñ,�	Ñ,˜I tØ MÑ1Ø/1�M )Ñ,Ø-/�K 	Ñ*Ø×&Ñ& yÔ1Ø˜iÑ(×/Ñ/°¸IÐ0FÔGØ˜IÑ&×-Ñ-¨dÕ3ñ4ð	4ð .9ÖU r¸B¿G¹GÀKÐPRÁOÕ<T¢ÐUˆÐUÙØÐð Ø'ØMZÖ[Àr ¨¯©°¸R±Ó)AÒ BÒ[ñðð %ñ+
Ðð "3×!IÑ!IØØ/Ø'ð "Jó "
÷ 
ˆ	ô ˜)¤TÔ*Ü ×&Ñ&ð2ä�Y“×(Ñ(ôð
 Ðð	Ø&/°Ñ&9¸)Ñ&DÀYÑ&OÐÜOTÔUXÐYfÓUgÓOhÖ)iÈ!Ð*:¸1Ñ*=¸fÓ*EÐ)iÐÐ)ið ;=ˆÜ-0°Ð@SÓ-Tò 	Ñ)ˆIÐ)Ø# IÑ.ˆGØ$ YÑ/ˆJÜÑ8¨ZÔ8Ó8Ò=¸AˆJÜÐ0Ó1ˆKØˆCÜ& wÓ/ò ‘	��6Øœ˜G› qÑ(Ò(Ø+=¸c¸dÐ+C�L Ò(à¤ k´C¸
À1¹Ó4FÑ&FÈÑ&SÓ TÑT�CØ+=¸cÀ#Ð+F�L Ñ(Ø‘Cñð	ð ,.ˆä )¨&Ó 1ó 	cÑˆI�uØ˜’>Ø×#Ñ# E¨%¡LÔ1Øà˜e™ˆIÜ'¨	°!°A¨Ó7ˆJÜ*¨9°Q°q¨>Ó:ˆMØ% b¨2°Ñ+=Ð>ˆMðØ$Ÿ{™{¨9°R¸-Ñ5GÈ*ÐWXÉ.Ð+YÓZ�Ü6?Ü6°|×7GÑ7GÈÓ7PÓQó7ò 2Ñ2�IÑ2  9¨cð  ,×/Ñ/°¸IÐ0FÓG�HØÑ+Ø)1˜	 #šð2ð $Ÿk™k¨,À:˜kÓN×UÑUÓW�ð
 ˜]Ñ*¬S°Ó-=Ñ=ÀÑAˆIØ—k‘k %¨°MÓBˆGÙ'¨Ó0°:Ñ=ˆOØ"ŸK™K¨¨oÓ>ˆMØ,¨}Ñ<¸{ÑJÐÙ#Ð$4°oÓFÈÑSˆKØŸ™ D¨+Ó6ˆIà×Ñ ¨-Ñ 7¸-Ñ GÈ+Ñ UÐXaÑ aÖbð?	cðB 	×Ñ˜NÔ+Ø�x‰x˜Ó%Ð%øô{ ò Ü$×*Ñ*ð:àôð
 —‘ i¸"Ñ=Ô>Ýûðüôøô !ò Ü(×.Ñ.ðUà÷ò ûðüò.  Vùò  \ð
ûò  *jøÜœ*¤iÐ0ò 	ØÒð	ûôN ò Ø×#Ñ# IÔ.Úðüs  ‚AU-Á"AR) Â5U-Â=/S1 Ã,S*Ã>S1 Ä%U-Ä(BU-Æ,TÇTÇ
U-ÇT#Ç3 U-ÈT(È?U-É!T0 É5T+ÊT0 ÊC1U-Í8AUÏ(UÏ=B,U-Ò)	S'Ò2*S"ÓU-Ó"S'Ó'U-Ó*S1 Ó1	TÓ:TÔU-ÔTÔU-Ô+T0 Ô0U	ÕU-ÕU	Õ	U-ÕU*Õ&U-Õ)U*Õ*U-NÚguardrail_to_applyr   Úlitellm_logging_objÚLiteLLMLoggingObjc              ƒ   ó2  K  — |j                  dd«      }|j                  d«      }t        |«      s$t        «       j                  |||¬«      ƒ d {  –—† S t	        |t
        «      rt	        |j                  d«      t        «      s|S t        |«      }t        |«      }t        |||«      \  }}	|s|S t        |¬«      }
|j                  d«      }|r||
d<   |j                  |
|d|¬	«      ƒ d {  –—† }|j                  d
g «      }|rt        ||	«       |S 7 ŒÂ7 Œ(­w)Nr   rš   r“   )r“   rö   r÷   rF   ©rU   ÚmodelÚrequest©ÚinputsÚrequest_dataÚ
input_typeÚlogging_objrU   )r?   r$   r*   Úprocess_input_messagesr/   r0   r4   r   r   rV   r   Úapply_guardrailrf   )rm   r“   rö   r÷   r   rA   rB   rC   rU   r,   rþ   rû   Úguardrailed_inputsra   s                 r#   r  z9BedrockPassthroughGuardrailHandler.process_input_messages›  s+  è ø€ ð Ÿ(™( :¨rÓ2ˆØ—h‘h˜vÓ&ˆä$ XÔ.Ü5Ó7×NÑNØØ#5Ø$7ð Oó ÷ ð ô ˜$¤Ô%¬Z¸¿¹ÀÓ8LÌdÔ-SØˆKäHÐI[Ó\ˆÜDÐEWÓXˆ	ä0°°{ÀIÓN‰ˆˆwáØˆKä1¸Ô>ˆØ—x‘x Ó(ˆÙØ#ˆF�7‰Oà*<×*LÑ*LØØØ Ø+ð	 +Mó +
÷ %
Ðð $6×#9Ñ#9¸'À2Ó#FÐÙÜÐ/°Ô9àˆðCøð,%
ús%   ‚ADÁDÁBDÃ,DÃ-'DÄDr    rÿ   c              ƒ   óú  K  — |xs i j                  dd«      }|r1t        |«      s&t        «       j                  |||||¬«      ƒ d {  –—† S t	        |t
        «      s|S t	        |j                  d«      t
        «      r"|j                  di «      j                  di «      ni }t	        |t
        «      r|j                  d«      nd }t	        |t        «      s|S t        |«      \  }	}
|	s|S |xs i }d|vr|�| j                  |«      }|ri |¥d|i¥}t        |	¬«      }|r|j                  d	«      nd }|r||d	<   |j                  ||d
|¬«      ƒ d {  –—† }|j                  dg «      }|rt        ||
«       |S 7 �Œ/7 Œ)­w)Nr   rš   )r    rö   r÷   r’   rÿ   rž   rO   rG   Úlitellm_metadatarú   rû   r    rý   rU   )r?   r$   r*   Úprocess_output_responser/   r0   r4   r`   Ú'transform_user_api_key_dict_to_metadatar   r  rf   )rm   r    rö   r÷   r’   rÿ   r   Úoutput_messagerW   rU   r,   Úeffective_request_dataÚuser_metadatarþ   rû   r  ra   s                    r#   r  z:BedrockPassthroughGuardrailHandler.process_output_responseÈ  s¾  è ø€ ð (Ò-¨2×2Ñ2°:¸rÓBˆÙÔ1°(Ô;Ü5Ó7×OÑOØ!Ø#5Ø$7Ø"3Ø)ð Pó ÷ ð ô ˜(¤DÔ)ØˆOô >HÈÏÉÐU]ÓH^Ô`dÔ=eˆH�L‰L˜ 2Ó&×*Ñ*¨9°bÔ9Ðkmð 	ô BLÈNÔ\`ÔAa × 2Ñ 2°9Ô =Ðgkˆä˜.¬$Ô/ØˆOä7¸ÓG‰ˆˆwáØˆOà!-Ò!3°ÐØÐ%;Ñ;Ð@QÐ@]Ø#'×#OÑ#OÐPaÓ#bˆMÙð*Ø,ð*à&¨ñ*Ð&ô
 2¸Ô>ˆÙ>TÐ-×1Ñ1°'Ô:ÐZ^ˆÙØ#ˆF�7‰Oà*<×*LÑ*LØØ/Ø!Ø+ð	 +Mó +
÷ %
Ðð $6×#9Ñ#9¸'À2Ó#FÐÙÜÐ/°Ô9àˆðcùðL%
ús%   ‚AE;ÁE6ÁDE;ÅE9Å'E;Å9E;rk   )NNN)rr   rs   rt   Ústaticmethodr2   r!   r‹   r�   r�   ry   r0   rõ   r   r   Úobjectr  r  rl   r%   r#   rˆ   rˆ   ò   sE  „ Øð:°3ð :¸4ò :ó ð:ð ð( Sò (ó ð(ð ð/¸3ð /À4ò /ó ð/ð ðY&ØðY&à)ðY&ð ,ðY&ð ð	Y&ð
 
òY&ó ðY&ð~ >Bñ	+àð+ð .ð+ð &Ð&9Ñ:ð	+ð
 
��f�Ñ	ó+ðb >BØ8<Ø$(ñ;àð;ð .ð;ð &Ð&9Ñ:ð	;ð
 $Ð$4Ñ5ð;ð ˜T‘kð;ð 
ô;r%   rˆ   );Úcollections.abcr   r   Útypingr   r   r   r   r	   r
   Útyping_extensionsr   r   Úlitellm._loggingr   Ú<litellm.llms.base_llm.guardrail_translation.base_translationr   Ú1litellm.llms.base_llm.guardrail_translation.utilsr   r   Úlitellm.types.utilsr   Ú%litellm.integrations.custom_guardrailr   Ú*litellm.litellm_core_utils.litellm_loggingr   rø   Úlitellm.proxy._typesr   Úlitellm.proxy.utilsr   Ú	frozensetr   rz   r   r   r2   r!   r$   r*   r{   ÚintÚ_StringHolderr  r4   r;   r0   r@   rV   r`   rf   rg   ri   Ú_DeltaHolderrw   ry   r�   r†   rˆ   rl   r%   r#   ú<module>r     sâ  ðß -Ð -ß K× Kç 1å 1Ý X÷õ :áÝEÝWÝ3Ý0á$ jÐ2CÐ%DÓEÐ �5Ó EØ$<Ð ˜EÓ <Ø"FÐ ˜%Ó Fð: Cð :¨Dó :ð

( oó 
(ð �c˜3 ™9�nÑ%€ð(˜6ð (¨D°Ñ,?ð (ÀDó (ð6(˜tð (¨d°=Ñ.Að (Àdó (ð4Ø
ð4àð4ð ð4ð ˆ4�‰9�d˜=Ñ)Ð)Ñ*ó	4ðnØ˜VÑ$ðà
ˆ4�‰9�d˜=Ñ)Ð)Ñ*óðB0Ø˜C‘yð0à�-Ñ ð0ð 
ó0ð" ˜U 3¨ 8™_Ñ,€	ˆ9Ó ,ô@�Xô @ð �Y °Ð3Ñ4€ô5�9ô 5ð*˜5ð * Só *ð¨fð ¸¸lÑ9Kó ô>Q¨õ Qr%   