
    /j                        S SK Jr  S SKJrJrJr  S SKJrJr  \" S5      r	SS jr
        SS jrSS jrSS jrSS	 jrSS
 jrg)    )annotations)Any	TypeGuardTypeVar)	BaseModelTypeAdapter_Tc                    [        U [        5      (       a  U R                  5       nOU R                  5       n[	        USUS9$ )N pathroot)
isinstancer   json_schemamodel_json_schema_ensure_strict_json_schema)modelschemas     K/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/llm/_strict.pyto_strict_json_schemar   
   s:    %%%""$((*%f2FCC    c               0   [        U 5      (       d  [        SU  SU 35      eU R                  S5      n[        U5      (       a+  UR                  5        H  u  pE[	        U/ UQSPUP7US9  M     U R                  S5      n[        U5      (       a+  UR                  5        H  u  px[	        U/ UQSPUP7US9  M     U R                  S5      n	U	S:X  a  SU ;  a  S	U S'   U R                  S
5      n
[        U
5      (       a\  U
(       aU  [        U
R                  5       5      U S'   U
R                  5        VVs0 s H  u  pU[	        U/ UQS
PUP7US9_M     snnU S
'   U R                  S5      n[        U5      (       a  [	        U/ UQSP7US9U S'   S H  nU R                  U5      n[        U5      (       d  M&  U Vs/ s H  nU0 :w  d  M  UPM     nn[        U5      S:X  a8  U R                  [	        US   / UQUPSP7US95        U R                  US5        M  [        U5      S:  aQ  U R                  US5        [        U5       VVs/ s H!  u  nn[	        U/ UQSP[        U5      P7US9PM#     snnU S'   M  U R                  US5        M     U R                  S5      n[        U5      (       a  [        U5      S:X  a6  U R                  [	        US   / UQSPSP7US95        U R                  S5        O=[        U5       VVs/ s H!  u  nn[	        U/ UQSP[        U5      P7US9PM#     snnU S'   SU ;   a  U R                  SS5        U R                  S5      n[        U[        5      (       a  US/U S'   OA[        U[
        5      (       a,  UR                  5       nSU;  a  UR                  S5        UU S'   U R                  SS5        U R                  SS5        U R                  S5      nU(       a  [!        U S5      (       az  [        U[        5      (       d
   SU 35       e[#        UUS9n[        U5      (       d  [%        SU SU 35      eU R                  0 UEU E5        U R                  S5        [	        XUS9$ S H  nU R                  U5      n[        U5      (       d  M&  [        U5      S:X  d  M7  SS0U;   d  MA  ['        S U 5       S5      n[        U5      (       d   eSU;  a  Mn  US   n[        U[        5      (       a  US/OUUS'   UR                  S5      n[        U5      (       a  UR                  S5        U R                  5        VVs0 s H  u  nnUS;  d  M  UU_M     snnU-  n   U $    U $ s  snnf s  snf s  snnf s  snnf s  snnf ) zcMutates the given JSON schema to ensure it conforms to the `strict` standard
that the API expects.
z	Expected z to be a dictionary; path=z$defsr   definitionstypeobjectadditionalPropertiesF
propertiesrequireditems)anyOfoneOf   r   0N   r    allOfdefaultnulltitlediscriminatorz$refzReceived non-string $ref - )r   refzExpected `$ref: z&` to resolved to a dictionary but got c              3  8   #    U  H  oS S0:w  d  M  Uv   M     g7f)r   r'   Nr   ).0items     r   	<genexpr>-_ensure_strict_json_schema.<locals>.<genexpr>   s     G($vv6F.F(s   	enum)is_dict	TypeErrorgetr   r   listkeysis_listlenupdatepop	enumeratestrr   copyappendhas_more_than_n_keysresolve_ref
ValueErrornext)r   r   r   defsdef_name
def_schemar   definition_namedefinition_schematypr   keyprop_schemar   	union_keyvariantsvivariantall_ofentryttypesr*   resolvednon_nullr0   ks                               r   r   r       s    ;)K=0J4&QRR??7#Dt}}$(JJL H&z8R$8R8R8RY]^ %1 //-0K{2=2C2C2E.O&!<t<]<O< 3F //&
!C
h1D.3*+ .Jzz"&z'8"9J %/$4$4$6%
$6  +K>X>Xl>XTW>X_cdd$6%
L! OOG$Eu~~9%FVFVgFV]abG (	??9-8#+78aqBw8H78}!"".x{AX4AXAXTWAX_cd 	40X!#	40 '0&9(&9
7 /w=Ut=UW=UcRSf=U\`a&9(G$
 	40! (& __W%Fvv;!*6!9;PT;P7;PC;PW[\ OOG$ !*& 1$ 1HAu +57O7Ow7OA7OVZ[ 1$K  K	4( OOF#a#$f+K4  FFHEU"V$"'KOOGT"OOOT* //&
!C
#K33#s##H'B3%%HH#Dc2x  "3%'MhZX 
 	6h6+67 *+tLL (	??9-8X!!38HH8TG(GH 8$$$$X% A.8C.@.@6{aHV<<'Dt}}D! "-!2!2!4!4AAS8S1!4K 1 (0 k%
* 8( $Fs*   3U;9
VV(V (VV&Vc                    UR                  S5      (       d  [        SU< S35      eUSS  R                  S5      nU nU H&  nX4   n[        U5      (       d   SU SU 35       eUnM(     U$ )Nz#/zUnexpected $ref format z; Does not start with #/r$   /z1encountered non-dictionary entry while resolving z - )
startswithr@   splitr1   )r   r*   r   rS   rH   values         r   r?   r?      s    >>$23'9QRSSqr7==DHu~~ 	
?uCzR	
~   Or   c                "    [        U [        5      $ N)r   dictobjs    r   r1   r1      s     c4  r   c                "    [        U [        5      $ r\   )r   r4   r^   s    r   r6   r6      s    c4  r   c                N    SnU R                  5        H  nUS-  nX!:  d  M    g   g)Nr   r"   TF)r5   )r_   nrM   _s       r   r>   r>      s-    	AXXZ	Q5  r   N)r   z"type[BaseModel] | TypeAdapter[Any]returndict[str, Any])r   r   r   ztuple[str, ...]r   dict[str, object]rd   re   )r   rf   r*   r;   rd   r   )r_   r   rd   zTypeGuard[dict[str, object]])r_   r   rd   zTypeGuard[list[object]])r_   rf   rb   intrd   bool)
__future__r   typingr   r   r   pydanticr   r   r	   r   r   r?   r1   r6   r>   r   r   r   <module>rl      se    " * * +T]D,XX X 	X
 Xv !!r   