Ë
    tPêj   ã                   óè   — U d dl mZmZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ g aee   ed<   	 	 	 ddee   dedz  d	edz  fd
„Zdee   ddfd„Zdeeeef      dedededeeef   f
d„Zy)é    )ÚAnyÚFinalÚcastN)ÚRouter)Úverbose_proxy_logger)Úinitialize_callbacks_on_proxy)Ú	GuardrailÚGuardrailItemÚGuardrailItemSpecÚall_guardrailsÚconfig_file_pathÚ
llm_routerc                 ó.  — ddl m} g }| D ]:  }	 |j                  t        t        |«      ||d¬«      }|sŒ*|j                  |«       Œ< t        |¬«       y # t
        t        f$ r0}t        j                  d|j                  d«      |«       Y d }~Œ„d }~ww xY w)Nr   ©ÚIN_MEMORY_GUARDRAIL_HANDLERÚconfig)Ú	guardrailr   r   Úsourcez\Skipping guardrail '%s': invalid configuration, proxy is starting WITHOUT this guardrail: %sÚguardrail_name)Úguardrail_list)Ú+litellm.proxy.guardrails.guardrail_registryr   Úinitialize_guardrailr   r	   Ú
ValueErrorÚ	TypeErrorr   ÚerrorÚgetÚappendÚ_populate_router_guardrail_list)r   r   r   r   r   r   Úinitialized_guardrailÚ
init_errors           úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/guardrails/init_guardrails.pyÚinit_guardrails_v2r"      s¦   € õ
 Xà-/€Nà#ò 9ˆ	ð	Ø$?×$TÑ$TÜœy¨)Ó4Ø!1Ø%Øð	 %Uó %Ð!ò !Ø×!Ñ!Ð"7Õ8ð!9ô* $°>ÖBøô œIÐ&ò 	Ü ×&Ñ&ØnØ—‘Ð.Ó/Øôô
 ûð	ús   �#AÁBÁ$&BÂBr   Úreturnc           
      ór  — ddl m} ddlm} ddlm} |€t        j                  d«       yg }| D ]à  }|j                  d«      }|j                  d«      }|j                  d	i «      }d}	|r|j                  j                  |«      }	t        |d
«      r|j                  «       n
t        |«      }
 ||xs d|
j                  dd«      |
j                  dd«      |
j                  d«      |
j                  d«      dœ|	|¬«      }|j                  |«       Œâ ||_        t        j                  dt        |«      «       y)z´
    Populate the router's guardrail_list from initialized guardrails.

    This enables load balancing across multiple guardrail deployments
    with the same guardrail_name.
    r   r   )r   )ÚGuardrailTypedDictNz>Router not initialized yet, skipping guardrail_list populationÚguardrail_idr   Úlitellm_paramsÚ
model_dumpÚ r   ÚmodeÚapi_keyÚapi_base)r   r*   r+   r,   )r   r'   ÚcallbackÚidz2Populated router guardrail_list with %s guardrails)r   r   Úlitellm.proxy.proxy_serverr   Úlitellm.types.routerr%   r   Údebugr   Ú guardrail_id_to_custom_guardrailÚhasattrr(   Údictr   r   Úlen)r   r   r   r%   Úrouter_guardrail_listr   r&   r   r'   r-   Úparams_dictÚrouter_guardrails               r!   r   r   4   s3  € õ XÝ5Ý7àÐÜ×"Ñ"Ð#cÔdØà=?Ðà#ò 7ˆ	Ø —}‘} ^Ó4ˆØ"Ÿ™Ð'7Ó8ˆØ'Ÿm™mÐ,<¸bÓAˆð ˆÙØ2×SÑS×WÑWÐXdÓeˆHô 6=¸^È\Ô5Z�n×/Ñ/Ô1Ô`dÐesÓ`tˆá/AØ)Ò/¨Rà(Ÿ_™_¨[¸"Ó=Ø#Ÿ™¨°Ó3Ø&Ÿ?™?¨9Ó5Ø'ŸO™O¨JÓ7ñ	ð Øô
0
Ðð 	×$Ñ$Ð%5Õ6ð37ð6 !6€JÔÜ×ÑÐSÔUXÐYnÓUoÕpó    Úguardrails_configÚpremium_userÚlitellm_settingsc                 ó@  — 	 t        j                  d| «       | D ]R  }	 |j                  «       D ]<  \  }}t        d	i |¤d|i¤Ž}t        j                  |«       |t        j                  |<   Œ> ŒT t        «       }i }	t        D ]º  }
t        j                  |
j                  «       t        j                  |
j                  «       |	j                  |
j                  «       |
j                  du sŒk|
j                  D ]A  }|t        j                  vr|j                  |«       |
j                  du sŒ5|dk(  sŒ;ddi|	d<   ŒC Œ¼ t!        |«      }t#        |«      dkD  rt%        |||||	¬«       t        j                  S # t&        $ r}t        j(                  d|«       |‚d }~ww xY w)
Nz validating  guardrails passed %sr   TÚpresidioÚlogging_onlyr   )Úvaluer;   r   r<   Úcallback_specific_paramsz error initializing guardrails %s© )r   r1   Úitemsr
   r   r   ÚlitellmÚguardrail_name_config_mapÚsetr   Ú
default_onÚupdateÚcallback_argsÚ	callbacksÚaddr?   Úlistr5   r   Ú	ExceptionÚ	exception)r:   r;   r   r<   ÚitemÚkÚvÚguardrail_itemÚdefault_on_callbacksrA   r   r-   Údefault_on_callbacks_listÚes                 r!   Úinitialize_guardrailsrV   e   s¨  € ð.Ü×"Ñ"Ð#EÐGXÔYà%ò 		FˆDðð
 Ÿ
™
›ò F‘��1Ü!.Ñ!E°Ñ!EÀ1Ò!E�Ü×%Ñ% nÔ5Ø7E”×1Ñ1°!Ò4ñFð		Fô '*£eÐØ*,Ð Ü'ò 	ZˆIÜ ×&Ñ& y×'?Ñ'?Ô@Ü ×&Ñ& y×';Ñ';Ô<à$×+Ñ+¨I×,CÑ,CÔDà×#Ñ# tÒ+à )× 3Ñ 3ò Z�HØ¤w×'8Ñ'8Ñ8Ø,×0Ñ0°Ô:à ×-Ñ-°Ò5Ø# zÓ1ØDRÐTXÐCYÐ4°ZÒ@ñZð	Zô  ,0Ð0DÓ+EÐ!ÜÐ(Ó)¨AÒ-Ü)Ø/Ø)Ø!1Ø!1Ø)Aõô ×0Ñ0Ð0øÜò Ü×&Ñ&Ð'IÈ1ÔMØˆûðús,   ‚C)E7 Ã,A E7 Ä-E7 Ä3AE7 Å7	FÆ FÆF)NN)Útypingr   r   r   rD   r   Úlitellm._loggingr   Ú)litellm.proxy.common_utils.callback_utilsr   Úlitellm.types.guardrailsr	   r
   r   r   rL   Ú__annotations__r4   Ústrr"   r   ÚboolrV   rB   r9   r!   ú<module>r^      sÔ   ðß #Ò #ã Ý Ý 1Ý S÷ QÑ Pà&(€��]Ñ#Ó (ðð $(Ø $ñCØ˜‘JðCà˜D‘jðCð ˜‘óCðB-q°D¸±Oð -qÈó -qðb4Ø˜D Ð&7Ð!7Ñ8Ñ9ð4àð4ð ð4ð ð	4ð
 
ˆ#ˆ}Ð
Ñô4r9   