Ë
    uPêj-Z  ã                   ó@  — d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlZd dl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 d d
lmZ d dlmZ d dlmZ d dlm Z m!Z! erd dl"m#Z#m$Z$m%Z%m&Z& neZ#eZ$eZ%eZ& e«       Z'dedz  de(de)ddfd„Z* G d„ de«      Z+ G d„ d«      Z,de-e(e.f   de-e(e.f   dz  de-e(e.f   dz  fd„Z/e!	 	 	 	 	 	 	 d'de(de$de#dz  de&dz  de-e(ef   dz  d e-e(ef   dz  de-e(ef   dz  d!e0ejb                  z  dz  d"e(dz  defd#„«       Z2e!	 	 	 	 	 	 	 d'de(de$de#dz  de&dz  de-e(ef   dz  d e-e(ef   dz  de-e(ef   dz  d!e0ejb                  z  dz  d"e(dz  defd$„«       Z3e!	 	 	 	 	 	 	 d'de(de$de#dz  de&dz  de-e(ef   dz  d e-e(ef   dz  de-e(ef   dz  d!e0ejb                  z  dz  d"e(dz  defd%„«       Z4e!	 	 	 	 	 	 	 d'de(de$de#dz  de&dz  de-e(ef   dz  d e-e(ef   dz  de-e(ef   dz  d!e0ejb                  z  dz  d"e(dz  dee   fd&„«       Z5y)(é    N)ÚIterator)Úpartial)ÚTYPE_CHECKINGÚAnyÚClassVarÚFinal)Ú	BaseModelÚ
ConfigDict)Úrequest_timeout)Ú"GenerateContentToCompletionHandler)ÚLogging)Ú$BaseGoogleGenAIGenerateContentConfig)ÚBaseLLMHTTPHandler)ÚGenericLiteLLMParams)Ú	CallTypes)ÚProviderConfigManagerÚclient)ÚGenerateContentConfigDictÚ#GenerateContentContentListUnionDictÚGenerateContentResponseÚToolConfigDictÚlogging_objÚmarkerÚis_asyncÚreturnc                 óH   — | � || j                   j                  di «      |<   y y )NÚlitellm_params)Úmodel_call_detailsÚ
setdefault)r   r   r   s      ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/google_genai/main.pyÚ_mark_async_entrypointr!   ,   s+   € ØÐØRZˆ×&Ñ&×1Ñ1Ð2BÀBÓGÈÒOð ó    c                   ó¸   — e Zd ZU dZ ed¬«      Zee   ed<   eed<   e	ee
f   ed<   eed<   edz  ed	<   e	ee
f   ed
<   e	eef   ed<   eed<   eed<   edz  ed<   y)ÚGenerateContentSetupResultz<Internal Type - Result of setting up a generate content callT)Úarbitrary_types_allowedÚmodel_configÚmodelÚrequest_bodyÚcustom_llm_providerNÚ generate_content_provider_configÚgenerate_content_config_dictÚnative_request_fieldsr   Úlitellm_logging_objÚlitellm_call_id)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r&   r   Ú__annotations__ÚstrÚdictr   r   Úobjectr   ÚLiteLLMLoggingObj© r"   r    r$   r$   1   sp   … ÙFá)3ÈDÔ)Q€L�(˜:Ñ&ÓQàƒJØ�s˜C�x‘.Ó ØÓØ&JÈTÑ&QÓQØ"& s¨C x¡.Ó0Ø  V Ñ,Ó,Ø(Ó(Ø*Ó*Ø˜4‘ZÔr"   r$   c                   ó|   — e Zd ZdZe	 ddedeeef   fd„«       Ze	 	 	 ddede	de
dz  d	edz  d
edz  defd„«       Zy)ÚGenerateContentHelperz9Helper class for Google GenAI generate content operationsÚmock_responser   c                 ó.   — | d| igddœddg dœgddd	d
œdœS )z7Mock response for generate_content for testing purposesÚtextr'   )ÚpartsÚroleÚSTOPr   )ÚcontentÚfinishReasonÚindexÚsafetyRatingsé
   é   é   )ÚpromptTokenCountÚcandidatesTokenCountÚtotalTokenCount)r=   Ú
candidatesÚusageMetadatar8   ©r;   s    r    Úmock_generate_content_responsez4GenerateContentHelper.mock_generate_content_responseD   sF   € ð "ð ,2°=Ð*AÐ)BÈGÑTØ$*ØØ%'ñ	ðð %'Ø(*Ø#%ññ
ð 	
r"   Nr'   ÚcontentsÚconfigr)   Útoolsc                 óœ  — |j                  d«      }|j                  dd«      }t        di |¤Ž}|j                  dd«      s1|j                  r%t        |j                  t        «      rt        d«      ‚t        j                  | ||j                  |j                  ¬«      \  } }}	}
|j                  €||_
        t        j                  | t        j                  |«      ¬«      }|€.|€t        d	«      ‚t        | |i dt        |xs i «      i |||¬
«	      S |j!                  |xs i | ¬«      }|j                  d«      xs |j                  d«      }|j#                  «       D �ci c]  }||v r|||   “Œ }}|j%                  | ||||¬«      }|€t        d	«      ‚|j'                  || t        |«      d|i|¬«       t        | ||||||||¬
«	      S c c}w )a»  
        Common setup logic for generate_content calls

        Args:
            model: The model name
            contents: The content to generate from
            config: Optional configuration
            custom_llm_provider: Optional custom LLM provider
            tools: Optional tools
            **kwargs: Additional keyword arguments

        Returns:
            GenerateContentSetupResult containing all setup information
        r-   r.   NÚstreamFz)Mock response should be handled by caller)r'   r)   Úapi_baseÚapi_key)r'   Úproviderz-litellm_logging_obj is required, but got None)	r'   r)   r(   r*   r+   r,   r   r-   r.   )r+   r'   ÚsystemInstructionÚsystem_instruction)r'   rO   rQ   r+   rX   )Úkwargsr'   Úoptional_paramsr   r)   r8   )Úgetr   r;   Ú
isinstancer4   Ú
ValueErrorÚlitellmÚget_llm_providerrT   rU   r)   r   Ú1get_provider_google_genai_generate_content_configÚLlmProvidersr$   r5   Ú$map_generate_content_optional_paramsÚ-get_generate_content_request_top_level_fieldsÚ"transform_generate_content_requestÚupdate_from_kwargs)r'   rO   rP   r)   rQ   rY   r-   r.   r   Údynamic_api_keyÚdynamic_api_baser*   r+   rX   Úfieldr,   r(   s                    r    Úsetup_generate_content_callz1GenerateContentHelper.setup_generate_content_callZ   sG  € ð. @F¿z¹zÐJ_Ó?`ÐØ-3¯Z©ZÐ8IÈ4Ó-Pˆô !5Ñ >°vÑ >ˆð —
‘
˜8 UÔ+Ø×,Ò,Ü˜>×7Ñ7¼Ô=äÐHÓIÐIô ×$Ñ$ØØ 3Ø#×,Ñ,Ø"×*Ñ*ô	
ñ	
ØØØØð ×-Ñ-Ð5Ø1DˆNÔ.ô "×SÑSØÜ ×-Ñ-Ð.AÓBôð 	)ð ,Ð3ð #Ð*Ü Ð!PÓQÐQÜ-ØØ$7ØØ15Ü-1°&²,¸BÓ-?Ø&(Ø-Ø$7Ø /ô
ð 
ð  /O×.sÑ.sØ)/ª°2Øð /tó /
Ð$ð
 %+§J¡JÐ/BÓ$CÒ$gÀvÇzÁzÐRfÓGgÐð :×gÑgÓiö;
àØ˜‰ð �6˜%‘=Ñ ð;
Ðð ;
ð
 ?×aÑaØØØØ)EØ1ð bó 
ˆð Ð&ÜÐLÓMÐMà×.Ñ.ØØÜ Ð!=Ó>à! ?ðð !4ð 	/ô 	
ô *ØØ 3Ø%Ø-MØ)EØ"7Ø)Ø 3Ø+ô

ð 
	
ùò7;
s   ÅG	)z;This is a mock response from Google GenAI generate_content.)NNN)r/   r0   r1   r2   Ústaticmethodr4   r5   r   rN   r   r   r   r$   ri   r8   r"   r    r:   r:   A   sŸ   „ ÙCààZñ
Øð
à	ˆc�3ˆh‰ò
ó ð
ð* ð 48Ø*.Ø'+ñ|
Øð|
à5ð|
ð *¨DÑ0ð|
ð ! 4™Zð	|
ð
  Ñ$ð|
ð 
$ò|
ó ñ|
r"   r:   r,   Ú
extra_bodyc                 ó    — | s|€yi | ¥|xs i ¥S )aœ  
    Merge native top-level request fields into ``extra_body`` so the HTTP handler
    forwards them verbatim onto the outgoing request body. An explicit ``extra_body``
    value wins on conflict. Returns ``None`` only when there is genuinely nothing to
    forward (no native fields and no caller-supplied ``extra_body``), preserving the
    prior behavior without discarding an explicit ``extra_body={}``.
    Nr8   )r,   rk   s     r    Ú_merge_native_request_fieldsrm   Ú   s%   € ñ ! ZÐ%7ØØ:Ð#Ð:¨
Ò(8°bÐ:Ð:r"   r'   rO   rP   rQ   Úextra_headersÚextra_queryÚtimeoutr)   c	              ‹   ó   K  — t        «       }
	 t        j                  «       }d|	d<   d|	v r|€|	j                  d«      }|€t	        j
                  | |¬«      \  }}}}t        t        f| ||||||||dœ	|	¤Ž}t        j                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }t        j                  |«      r|ƒ d{  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}t	        j                  | |||
|	¬«      ‚d}~ww xY w­w)z4
    Async: Generate content using Google GenAI
    TÚagenerate_contentÚgenerationConfigN)r'   r)   )	r'   rO   rP   rn   ro   rk   rp   r)   rQ   ©r'   r)   Úoriginal_exceptionÚcompletion_kwargsÚextra_kwargs)ÚlocalsÚasyncioÚget_event_loopÚpopr^   r_   r   Úgenerate_contentÚcontextvarsÚcopy_contextÚrunÚrun_in_executorÚiscoroutineÚ	ExceptionÚexception_type)r'   rO   rP   rQ   rn   ro   rk   rp   r)   rY   Ú
local_varsÚloopÚ_ÚfuncÚctxÚfunc_with_contextÚinit_responseÚresponseÚes                      r    rr   rr   ê   sH  è ø€ ô& ›€Jð-
Ü×,Ñ,Ó.ˆØ&*ˆÐ"Ñ#ð  Ñ'¨F¨NØ—Z‘ZÐ 2Ó3ˆFàÐ&Ü+2×+CÑ+CØØ$7ô,Ñ(ˆAÐ" A qô
 Üð
àØØØ'Ø#Ø!ØØ 3Øñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×Rˆä×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHàˆð  Søð +ùô
 ò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
üsY   ‚DŽB'C# Â5CÂ6C# ÃC!ÃC# ÃDÃC# ÃDÃC# Ã!C# Ã#	DÃ,DÄDÄDc	                 óü  — t        «       }
	 |	j                  dd«      }t        |	j                  d«      t        j
                  j                  |«       d|	v r|€|	j                  d«      }t        di |	¤Ž}|j                  r:t        |j                  t        «      r t        j                  |j                  ¬«      S t        j                  d| ||||dœ|	¤Ž}|	j                  d«      xs |	j                  d	«      }|j                  €1t        j                   d| ||j"                  |||j$                  |d
œ|	¤ŽS t&        j!                  |j(                  |||j                  |j"                  |j*                  |j$                  |j,                  |t/        |j0                  |«      |xs t2        ||	j                  d«      |	j                  di «      |¬«      }|S # t4        $ r}t7        j8                  | |||
|	¬«      ‚d}~ww xY w)z-
    Generate content using Google GenAI
    rr   Fr-   rs   NrM   ©r'   rO   rP   r)   rQ   rW   rX   )r'   rO   rP   rQ   Ú	_is_asyncr   rn   r   Úlitellm_metadata)r'   rO   rQ   r*   r+   r)   r   r   rn   rk   rp   r�   r   r�   rX   rt   r8   )rx   r{   r!   r[   r   rr   Úvaluer   r;   r\   r4   r:   rN   ri   r*   r   Úgenerate_content_handlerr+   r   Úbase_llm_http_handlerr'   r)   r-   rm   r,   r   r‚   r^   rƒ   )r'   rO   rP   rQ   rn   ro   rk   rp   r)   rY   r„   r�   r   Úsetup_resultrX   r‹   rŒ   s                    r    r|   r|   .  s  € ô& ›€JðC
Ø!Ÿ:™:Ð&9¸5ÓAˆ	ä˜vŸz™zÐ*?Ó@Ä)×B]ÑB]×BcÑBcÐenÔoð  Ñ'¨F¨NØ—Z‘ZÐ 2Ó3ˆFä 4Ñ >°vÑ >ˆØ×'Ò'¬J°~×7SÑ7SÔUXÔ,YÜ(×GÑGÐVd×VrÑVrÐGÓsÐsô 4×OÑOð 
ØØØØ 3Øñ
ð ñ
ˆð %+§J¡JÐ/BÓ$CÒ$gÀvÇzÁzÐRfÓGgÐð ×8Ñ8Ð@ä5×NÑNð 	ØØ!Ø#×@Ñ@ØØ#Ø+×:Ñ:Ø+ñ	ð ñ	ð 	ô 0×HÑHØ×$Ñ$ØØØ-9×-ZÑ-ZØ)5×)RÑ)RØ ,× @Ñ @Ø'×6Ñ6Ø$×8Ñ8Ø'Ü3°L×4VÑ4VÐXbÓcØÒ.œØØ—:‘:˜hÓ'Ø#ŸZ™ZÐ(:¸BÓ?Ø1ð Ió 
ˆð$ ˆøÜò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
ús&   ŒB-G Â:A;G Ä6BG Ç	G;ÇG6Ç6G;c	              ‹   óö  K  — t        «       }
	 d|	d<   t        |	j                  d«      t        j                  j
                  d«       d|	v r|€|	j                  d«      }|€,t        j                  | |
j                  dd«      ¬«      \  }}}}t        j                  d| ||||dœ|	¤Ž}|	j                  d	«      xs |	j                  d
«      }|j                  €Od|	v r|	j                  dd«       t        j                  d| ||j                  |j                  |d|dœ|	¤Žƒ d{  –—† S t         j#                  |j$                  ||j                  |j                  ||j&                  |j                  |j(                  |t+        |j,                  |«      |xs t.        d|	j                  d«      d|	j                  di «      |¬«      ƒ d{  –—† S 7 Œ¨7 Œ# t0        $ r}t        j2                  | |||
|	¬«      ‚d}~ww xY w­w)zL
    Async: Generate content using Google GenAI with streaming response
    TÚagenerate_content_streamr-   rs   NÚbase_url)r'   rT   rŽ   rW   rX   rS   )r'   rO   rP   r   rQ   rS   rn   r   r�   ©r'   rO   r*   r+   rQ   r)   r   r   rn   rk   rp   r�   r   rS   r�   rX   rt   r8   )rx   r!   r[   r   r–   r‘   r{   r^   r_   r:   ri   r*   r   Úasync_generate_content_handlerr+   r   r“   r’   r'   r)   r-   rm   r,   r   r‚   rƒ   )r'   rO   rP   rQ   rn   ro   rk   rp   r)   rY   r„   r†   r”   rX   rŒ   s                  r    r–   r–   ˆ  s)  è ø€ ô& ›€JðH
Ø-1ˆÐ)Ñ*ä˜vŸz™zÐ*?Ó@Ä)×BdÑBd×BjÑBjÐlpÔqð  Ñ'¨F¨NØ—Z‘ZÐ 2Ó3ˆFàÐ&Ü+2×+CÑ+CØ j§n¡n°ZÀÓ&Fô,Ñ(ˆAÐ" A qô
 4×OÑOð 
ØØØØ 3Øñ
ð ñ
ˆð %+§J¡JÐ/BÓ$CÒ$gÀvÇzÁzÐRfÓGgÐð ×8Ñ8Ð@Ø˜6Ñ!Ø—
‘
˜8 TÔ*ô <×ZÑZð 	ØØ!Ø#×@Ñ@Ø+×:Ñ:ØØØ+ñ	ð ñ	÷ 	ð 	ô +×CÑCØ×$Ñ$ØØ-9×-ZÑ-ZØ)5×)RÑ)RØØ ,× @Ñ @Ø'×6Ñ6Ø$×8Ñ8Ø'Ü3°L×4VÑ4VÐXbÓcØÒ.œØØ—:‘:˜hÓ'ØØ#ŸZ™ZÐ(:¸BÓ?Ø1ð! Dó 
÷ 
ð 	
ð	øð
ùô& ò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
üsZ   ‚G9ŽDG Ä!G
Ä"G Ä%G9Ä&BG ÇGÇG Ç	G9Ç
G ÇG Ç	G6ÇG1Ç1G6Ç6G9c	                 ó„  — t        «       }
	 |	j                  dd«      }t        |	j                  d«      t        j
                  j                  |«       d|	v r|€|	j                  d«      }t        j                  d| ||||dœ|	¤Ž}|	j                  d«      xs |	j                  d«      }|j                  €Gd	|	v r|	j                  d	d«       t        j                  d| ||j                  ||j                  d
|dœ|	¤ŽS t        j                  |j                  ||j                  |j                  ||j                   |j                  |j"                  |t%        |j&                  |«      |xs t(        ||	j                  d«      d
|	j                  di «      |¬«      S # t*        $ r}t-        j.                  | |||
|	¬«      ‚d}~ww xY w)zE
    Generate content using Google GenAI with streaming response
    r–   Fr-   rs   NrŽ   rW   rX   rS   T)r'   rO   rP   r�   r   rS   rn   r   r�   r˜   rt   r8   )rx   r{   r!   r[   r   r–   r‘   r:   ri   r*   r   r’   r+   r   r“   r'   r)   r-   rm   r,   r   r‚   r^   rƒ   )r'   rO   rP   rQ   rn   ro   rk   rp   r)   rY   r„   r�   r”   rX   rŒ   s                  r    Úgenerate_content_streamr›   ç  sä  € ô& ›€JðB
à!Ÿ:™:Ð&@À%ÓHˆ	ä˜vŸz™zÐ*?Ó@Ä)×BdÑBd×BjÑBjÐluÔvð  Ñ'¨F¨NØ—Z‘ZÐ 2Ó3ˆFä3×OÑOð 
ØØØØ 3Øñ
ð ñ
ˆð %+§J¡JÐ/BÓ$CÒ$gÀvÇzÁzÐRfÓGgÐð ×8Ñ8Ð@Ø˜6Ñ!Ø—
‘
˜8 TÔ*ô 6×NÑNð 	ØØ!Ø#×@Ñ@Ø#Ø+×:Ñ:ØØ+ñ	ð ñ	ð 	ô %×=Ñ=Ø×$Ñ$ØØ-9×-ZÑ-ZØ)5×)RÑ)RØØ ,× @Ñ @Ø'×6Ñ6Ø$×8Ñ8Ø'Ü3°L×4VÑ4VÐXbÓcØÒ.œØØ—:‘:˜hÓ'ØØ#ŸZ™ZÐ(:¸BÓ?Ø1ð! >ó 
ð 	
øô& ò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
ús   ŒC.F Ã;BF Æ	F?Æ F:Æ:F?)NNNNNNN)6ry   r}   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   ÚhttpxÚpydanticr	   r
   r^   Úlitellm.constantsr   Ú%litellm.google_genai.adapters.handlerr   Ú*litellm.litellm_core_utils.litellm_loggingr   r7   Ú1litellm.llms.base_llm.google_genai.transformationr   Ú*litellm.llms.custom_httpx.llm_http_handlerr   Úlitellm.types.routerr   Úlitellm.types.utilsr   Úlitellm.utilsr   r   Úlitellm.types.google_genai.mainr   r   r   r   r“   r4   Úboolr!   r$   r:   r5   r6   rm   ÚfloatÚTimeoutrr   r|   r–   r›   r8   r"   r    ú<module>r­      ss  ðÛ Û Ý $Ý ß 6Ó 6ã ß *ã Ý -õ UÝ Sõõ JÝ 5Ý )ß 7á÷ô ð !$ÐØ*-Ð'Ø!ÐØ€Nñ
 +Ó,Ð ð[Ð(9¸DÑ(@ð [È#ð [ÐY]ð [Ðbfó [ô
  ô  ÷ V
ñ V
ðr;Ø  V Ñ,ð;à�S˜&�[Ñ! DÑ(ð;ð 
ˆ#ˆvˆ+Ñ˜Ñó;ð  ð 04Ø#'ð ,0Ø)-Ø(,Ø,0à&*ñ@
Øð@
à1ð@
ð &¨Ñ,ð@
ð ˜DÑ ð	@
ð ˜˜S˜‘> DÑ(ð@
ð �c˜3�h‘ $Ñ&ð@
ð �S˜#�X‘ Ñ%ð@
ð �U—]‘]Ñ" TÑ)ð@
ð ˜t™ð@
ð 	ò@
ó ð@
ðF ð 04Ø#'ð ,0Ø)-Ø(,Ø,0à&*ñV
ØðV
à1ðV
ð &¨Ñ,ðV
ð ˜DÑ ð	V
ð ˜˜S˜‘> DÑ(ðV
ð �c˜3�h‘ $Ñ&ðV
ð �S˜#�X‘ Ñ%ðV
ð �U—]‘]Ñ" TÑ)ðV
ð ˜t™ðV
ð 	òV
ó ðV
ðr ð 04Ø#'ð ,0Ø)-Ø(,Ø,0à&*ñ[
Øð[
à1ð[
ð &¨Ñ,ð[
ð ˜DÑ ð	[
ð ˜˜S˜‘> DÑ(ð[
ð �c˜3�h‘ $Ñ&ð[
ð �S˜#�X‘ Ñ%ð[
ð �U—]‘]Ñ" TÑ)ð[
ð ˜t™ð[
ð 	ò[
ó ð[
ð| ð 04Ø#'ð ,0Ø)-Ø(,Ø,0à&*ñU
ØðU
à1ðU
ð &¨Ñ,ðU
ð ˜DÑ ð	U
ð ˜˜S˜‘> DÑ(ðU
ð �c˜3�h‘ $Ñ&ðU
ð �S˜#�X‘ Ñ%ðU
ð �U—]‘]Ñ" TÑ)ðU
ð ˜t™ðU
ð ˆc�]òU
ó ñU
r"   