Ë
    uPêj‡)  ã                   ó¤   — U d 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
mZ ddlmZmZmZmZ dZeed	<    eh d
£«      Zeed<    G d„ de«      Zy)ah  
Google AI Studio Agents API configuration.

Proxies the Gemini v1beta Agents API:
  POST   /v1beta/agents                         create
  GET    /v1beta/agents                         list
  GET    /v1beta/agents/{name}                  get
  DELETE /v1beta/agents/{name}                  delete
  GET    /v1beta/agents/{name}/versions         list versions
é    )ÚAnyÚFinalN)Úverbose_logger)ÚBaseAgentsAPIConfig)ÚGeminiErrorÚGeminiModelInfo)ÚAgentCreateResponseÚAgentDeleteResultÚAgentListResponseÚAgentVersionsResponse)Ú
base_agentÚinstructionsÚbase_environmentÚ_GEMINI_AGENT_BODY_KEYS>   Úapi_keyÚagent_idÚapi_baseÚ	is_publicÚ
agent_nameÚ
guardrailsÚmake_publicÚcost_per_queryÚmax_iterationsÚagent_card_paramsÚcustom_llm_providerÚinput_cost_per_tokenÚoutput_cost_per_tokenÚmax_budget_per_sessionÚprovider_agent_responseÚ"require_trace_id_on_calls_by_agentÚ"require_trace_id_on_calls_to_agentÚ_LITELLM_INTERNAL_KEYSc                   ó¬  — e Zd ZdZedefd„«       Zdedz  defd„Zdeded	e	e
j                  z  defd
„Zdedz  de	eef   defd„Zd	e	eef   de	eef   de	eef   fd„Zde
j"                  ddfd„Zdede	eef   de	eef   fd„Zde
j"                  dedefd„Zdedz  de	eef   deee	eef   f   fd„Zde
j"                  defd„Zdededz  de	eef   deee	eef   f   fd„Zde
j"                  dedefd„Zdededz  de	eef   defd„Zde
j"                  dedefd„Zdededz  de	eef   deee	eef   f   fd„Zde
j"                  dede fd„Z!y)ÚGeminiAgentsConfigzò
    Configuration for the Google AI Studio (Gemini) native Agents API.

    Authentication uses x-goog-api-key, resolved from (in order):
      1. litellm_params["api_key"]
      2. GOOGLE_API_KEY env var
      3. GEMINI_API_KEY env var
    Úreturnc                  ó   — y)NÚv1beta© )Úselfs    ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/gemini/agents/transformation.pyÚapi_versionzGeminiAgentsConfig.api_version@   s   € àó    r   Nc                 óJ   — t        j                  |«      › d| j                  › �S )Nú/)r   Úget_api_baser+   )r)   r   s     r*   Ú	_base_urlzGeminiAgentsConfig._base_urlD   s&   € Ü!×.Ñ.¨xÓ8Ð9¸¸4×;KÑ;KÐ:LÐMÐMr,   Úerror_messageÚstatus_codeÚheadersc                 ó0   — t        ||t        |«      ¬«      S )N©Úmessager2   r3   )r   Údict)r)   r1   r2   r3   s       r*   Úget_error_classz"GeminiAgentsConfig.get_error_classK   s   € ô Ø!Ø#Ü˜“Mô
ð 	
r,   Úlitellm_paramsc                 ó*   — | j                  |«      › d�S )Nú/agents©r0   )r)   r   r9   s      r*   Úget_complete_urlz#GeminiAgentsConfig.get_complete_urlW   s   € ð
 —.‘. Ó*Ð+¨7Ð3Ð3r,   c                 óÒ   — t        |«      }d|d<   |j                  d«      }|j                  d«      r|st        d«      ‚t        j                  |«      }|st        d«      ‚||d<   |S )Nzapplication/jsonzContent-Typer   r   zïWhen overriding api_base for Gemini agents, you must also supply an explicit api_key. Falling back to GOOGLE_API_KEY / GEMINI_API_KEY env vars with a custom api_base is refused to prevent leaking the shared provider key to arbitrary hosts.zRGoogle API key is required. Set GOOGLE_API_KEY or GEMINI_API_KEY, or pass api_key.zx-goog-api-key)r7   ÚgetÚ
ValueErrorr   Úget_api_key)r)   r3   r9   Úexplicit_api_keyr   s        r*   Úvalidate_environmentz'GeminiAgentsConfig.validate_environment^   s€   € ô
 �w“-ˆØ"4ˆ�ÑØ"0×"4Ñ"4°YÓ"?Ðð ×Ñ˜jÔ)Ñ2BÜðQóð ô )×4Ñ4Ð5EÓFˆÙÜÐqÓrÐrØ$+ˆÐ Ñ!Øˆr,   Úraw_responsec                 óœ   — d|j                   cxk  rdk  s7n t        |j                  |j                   t        |j                  «      ¬«      ‚y )NéÈ   i,  r5   )r2   r   Útextr7   r3   )r)   rD   s     r*   Ú_raise_for_statusz$GeminiAgentsConfig._raise_for_statusx   sG   € Ø�|×/Ñ/Ô5°#Ô5ÜØ$×)Ñ)Ø(×4Ñ4Ü˜\×1Ñ1Ó2ôð ð 6r,   Únamec                 ó‚   — d|i}t         D ]  }|j                  |«      }|€Œ|||<   Œ t        j                  d|«       |S )NrI   z"GeminiAgentsConfig create body: %s)r   r?   r   Údebug)r)   rI   r9   ÚbodyÚkeyÚvalues         r*   Útransform_create_requestz+GeminiAgentsConfig.transform_create_request„   sS   € ð
 (.¨t nˆÜ*ò 	"ˆCØ"×&Ñ& sÓ+ˆEØÑ Ø!��S’	ð	"ô 	×ÑÐAÀ4ÔHØˆr,   c                 ó<  — | j                  |«       	 |j                  «       }|j                  d|«       |j                  d|d   «       t        j                  d|«       t        di |¤ŽS # t        $ r' t        j                  d|j
                  «       d|i}Y Œww xY w)z�
        Gemini returns:
          {"id": "my-agent", "base_agent": "waverunner",
           "system_instruction": "...", "base_environment": {...}}
        z9GeminiAgentsConfig: non-JSON create response (status=%d).ÚidrI   z&GeminiAgentsConfig create response: %sr(   )	rH   ÚjsonÚ	Exceptionr   Úwarningr2   Ú
setdefaultrK   r	   ©r)   rD   rI   Údatas       r*   Útransform_create_responsez,GeminiAgentsConfig.transform_create_response‘   sœ   € ð 	×Ñ˜|Ô,ð	 Ø#/×#4Ñ#4Ó#6ˆDð 	�‰˜˜dÔ#Ø�‰˜  T¡
Ô+Ü×ÑÐEÀtÔLÜ"Ñ* TÑ*Ð*øô ò 	 Ü×"Ñ"ØKØ×(Ñ(ôð ˜$�<ŠDð	 ús   “A+ Á+-BÂBc                 óš   — | j                  |«      › d�}i }|j                  d«      r|d   |d<   |j                  d«      r|d   |d<   ||fS )Nr;   Ú	page_sizeÚpageSizeÚ
page_tokenÚ	pageToken©r0   r?   )r)   r   r9   ÚurlÚparamss        r*   Útransform_list_requestz)GeminiAgentsConfig.transform_list_request®   sc   € ð
 Ÿ™ xÓ0Ð1°Ð9ˆØ(*ˆØ×Ñ˜kÔ*Ø!/°Ñ!<ˆF�:ÑØ×Ñ˜lÔ+Ø"0°Ñ">ˆF�;ÑØ�Fˆ{Ðr,   c                 óì   — | j                  |«       	 |j                  «       }t        j                  d|«       t        |j                  dg «      |j                  d«      ¬«      S # t        $ r i }Y ŒOw xY w)Nz$GeminiAgentsConfig list response: %sÚagentsÚnextPageToken)rc   Únext_page_token)rH   rR   rS   r   rK   r   r?   )r)   rD   rW   s      r*   Útransform_list_responsez*GeminiAgentsConfig.transform_list_response»   su   € ð 	×Ñ˜|Ô,ð	Ø×$Ñ$Ó&ˆDô 	×ÑÐCÀTÔJÜ Ø—8‘8˜H bÓ)Ø ŸH™H _Ó5ô
ð 	
øô ò 	ØŠDð	ús   “A% Á%A3Á2A3c                 ó6   — | j                  |«      › d|› �}|i fS ©Nú/agents/r<   )r)   rI   r   r9   r_   s        r*   Útransform_get_requestz(GeminiAgentsConfig.transform_get_requestÎ   s'   € ð Ÿ™ xÓ0Ð1°¸$¸Ð@ˆØ�Bˆwˆr,   c                 óü   — | j                  |«       	 |j                  «       }|j                  d|«       |j                  d|d   «       t	        j
                  d|«       t        di |¤ŽS # t        $ r d|i}Y ŒWw xY w)uD   Same shape as create response â€” Gemini returns "id" as identifier.rQ   rI   z#GeminiAgentsConfig get response: %sr(   )rH   rR   rS   rU   r   rK   r	   rV   s       r*   Útransform_get_responsez)GeminiAgentsConfig.transform_get_response×   s€   € ð 	×Ñ˜|Ô,ð	 Ø×$Ñ$Ó&ˆDð 	�‰˜˜dÔ#Ø�‰˜  T¡
Ô+Ü×ÑÐBÀDÔIÜ"Ñ* TÑ*Ð*øô ò 	 Ø˜$�<ŠDð	 ús   “A+ Á+A;Á:A;c                 ó.   — | j                  |«      › d|› �S rh   r<   )r)   rI   r   r9   s       r*   Útransform_delete_requestz+GeminiAgentsConfig.transform_delete_requestë   s   € ð —.‘. Ó*Ð+¨8°D°6Ð:Ð:r,   c                 ó€   — | j                  |«       t        j                  d|j                  |«       t	        |d¬«      S )z=Gemini returns an empty body ``{}`` with HTTP 200 on success.z0GeminiAgentsConfig delete (status=%d) agent '%s'T)rI   Údeleted)rH   r   rK   r2   r
   )r)   rD   rI   s      r*   Útransform_delete_responsez,GeminiAgentsConfig.transform_delete_responseó   s>   € ð 	×Ñ˜|Ô,Ü×ÑØ>Ø×$Ñ$Øô	
ô
 ! d°DÔ9Ð9r,   c                 ó    — | j                  |«      › d|› d�}i }|j                  d«      r|d   |d<   |j                  d«      r|d   |d<   ||fS )Nri   z	/versionsrZ   r[   r\   r]   r^   )r)   rI   r   r9   r_   r`   s         r*   Útransform_list_versions_requestz2GeminiAgentsConfig.transform_list_versions_request  si   € ð Ÿ™ xÓ0Ð1°¸$¸¸yÐIˆØ(*ˆØ×Ñ˜kÔ*Ø!/°Ñ!<ˆF�:ÑØ×Ñ˜lÔ+Ø"0°Ñ">ˆF�;ÑØ�Fˆ{Ðr,   c                 óî   — | j                  |«       	 |j                  «       }t        j                  d||«       t        |j                  dg «      |j                  d«      ¬«      S # t        $ r i }Y ŒPw xY w)z�
        Gemini returns:
          {"agentVersions": [{"agent": "waverunner", "name": "agents/.../versions/uuid", ...}]}
        z6GeminiAgentsConfig list_versions response for '%s': %sÚagentVersionsrd   )Úagent_versionsre   )rH   rR   rS   r   rK   r   r?   rV   s       r*   Ú transform_list_versions_responsez3GeminiAgentsConfig.transform_list_versions_response  sy   € ð 	×Ñ˜|Ô,ð	Ø×$Ñ$Ó&ˆDô 	×ÑÐUÐW[Ð]aÔbÜ$ØŸ8™8 O°RÓ8Ø ŸH™H _Ó5ô
ð 	
øô ò 	ØŠDð	ús   “A& Á&A4Á3A4)"Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpropertyÚstrr+   r0   Úintr7   ÚhttpxÚHeadersrS   r8   r   r=   rC   ÚResponserH   rO   r	   rX   Útuplera   r   rf   rj   rl   rn   r
   rq   rs   r   rw   r(   r,   r*   r$   r$   6   sÕ  „ ñð ð˜Sò ó ððN #¨¡*ð N°ó Nð

àð

ð ð

ð ˜Ÿ™Ñ%ð	

ð
 
ó

ð4à˜‘*ð4ð ˜S #˜X™ð4ð 
ó	4ðà�c˜3�h‘ðð ˜S #˜X™ðð 
ˆc�3ˆh‰ó	ð4¨e¯n©nð Àó ðàðð ˜S #˜X™ðð 
ˆc�3ˆh‰ó	ð+à—n‘nð+ð ð+ð 
ó	+ð:à˜‘*ðð ˜S #˜X™ðð 
ˆs�D˜˜c˜‘NÐ"Ñ	#ó	ð
à—n‘nð
ð 
ó
ð&àðð ˜‘*ðð ˜S #˜X™ð	ð
 
ˆs�D˜˜c˜‘NÐ"Ñ	#óð+à—n‘nð+ð ð+ð 
ó	+ð(;àð;ð ˜‘*ð;ð ˜S #˜X™ð	;ð
 
ó;ð:à—n‘nð:ð ð:ð 
ó	:ð$àðð ˜‘*ðð ˜S #˜X™ð	ð
 
ˆs�D˜˜c˜‘NÐ"Ñ	#óð
à—n‘nð
ð ð
ð 
ô	
r,   r$   )r{   Útypingr   r   r   Úlitellm._loggingr   Ú+litellm.llms.base_llm.agents.transformationr   Ú litellm.llms.gemini.common_utilsr   r   Úlitellm.types.agentsr	   r
   r   r   r   Ú__annotations__Ú	frozensetr"   r$   r(   r,   r*   ú<module>rŠ      s[   ðò	÷ ã å +Ý Kß I÷ó ð "TÐ ˜Ó Sñ !*òó!Ð ˜ó ô.o
Ð,õ o
r,   