+
    i                     ,  a  R t0 t R t^ RIHtHt ^ RIt^ RIHt ^RIHt ^RIH	t	 ]P                  '       d   ^ RIHt ^ RIHt M]t] ^ k ]t] ^k  ^ RIHt ^ RIHt R R	 ltR
 R ltR R ltR R ltR R ltR R ltR#   ] d    RtRt L3i ; i)z!Utils for working with MCP tools.)PackageNotFoundErrorversionN)Any)_common)types)Tool)ClientSessionc                D    V ^8  d   QhR\         R\        P                  /# )   toolreturn)McpToolr   r   )formats   "j/Users/igloo/.openclaw/workspace/scratch/fb_ad_env/lib/python3.14/site-packages/google/genai/_mcp_utils.py__annotate__r   '   s      W      c                    \         P                  ! RV P                  RV P                  R\         P                  P                  \         P                  ! R/ \        V P                  4      B R7      /.R7      # )z.Translates an MCP tool to a Google GenAI tool.namedescription
parameters)json_schema)function_declarations )	r   r   r   r   Schemafrom_json_schema
JSONSchema_filter_to_supported_schemainputSchema)r   s   &r   mcp_to_gemini_toolr   '   sk    	
$))
))
55** /0@0@A 6  	

 
r   c                p    V ^8  d   QhR\         \        ,          R\         \        P                  ,          /# r
   toolsr   )listr   r   r   )r   s   "r   r   r   6   s'     6 6tG} 6ejj1A 6r   c                B    V  Uu. uF  p\        V4      NK  	  up# u upi )z?Translates a list of MCP tools to a list of Google GenAI tools.)r   r!   r   s   & r   mcp_to_gemini_toolsr%   6   s     /4	5ut
T
"u	55	5s   c                D    V ^8  d   QhR\         P                  R\        /# r    r   ToolListUnionbool)r   s   "r   r   r   ;   s       e11 d r   c                    \         f   R# V  F2  p\        V\        4      '       g   \        V\         4      '       g   K1   R# 	  R# )zDChecks whether the list of tools contains any MCP tools or sessions.FT)McpClientSession
isinstancer   r$   s   & r   has_mcp_tool_usager-   ;   s7    d$  Jt5E$F$F  
r   c                D    V ^8  d   QhR\         P                  R\        /# r    r'   )r   s   "r   r   r   E   s       !4!4  r   c                ^    \         f   R# V  F  p\        V\         4      '       g   K   R# 	  R# )z;Checks whether the list of tools contains any MCP sessions.FT)r+   r,   r$   s   & r   has_mcp_session_usager0   E   s+    d$())  
r   c                J    V ^8  d   QhR\         \        \        3,          RR/# )r
   headersr   N)dictstr)r   s   "r   r   r   O   s"      $sCx. T r   c                    \         f   R#  \        R4      pV P                  RR4      pVRV 2,           P	                  4       V R&   R#   \         d    Rp L@i ; i)z;Sets the MCP version label in the Google API client header.Nmcpz0.0.0zx-goog-api-client z
 mcp_used/)r+   r   r   getlstrip)r2   version_labelexisting_headers   &  r   set_mcp_usage_headerr<   O   sc    
ENM KK 3R8/*]O44
FH 

 
 Ms   A AAc                X    V ^8  d   QhR\         P                  R\         P                  /# )r
   schemar   )r   
StringDict)r   s   "r   r   r   ]   s(      r   c           	         \        \        P                  P                  P	                  4       4      pRpRpRpV P                  4        Fw  w  rVWR9   d   \        V4      W&   K  WS9   d    V Uu. uF  p\        V4      NK  	  upW&   K?  WT9   g   KG  VP                  4        UUu/ uF  w  rV\        V4      bK  	  uppW&   Ky  	  V P                  4        UUu/ uF  w  rW9   g   K  WbK  	  upp# u upi u uppi u uppi )zKFilters the schema to only include fields that are supported by JSONSchema.)items)any_of)
properties)setr   r   model_fieldskeysrA   r   )	r>   supported_fieldsschema_field_nameslist_schema_field_namesdict_schema_field_names
field_namefield_valuevaluekeys	   &        r   r   r   ]   s     #5#3#3#@#@#E#E#GH#-) )8!'j'6{Cf		.:E:E
%e
,+f 
	. (--//jc *51
1/f "0 $*<<>
#1ZSS5Ljcj>
 
s   ,C/"C4
C:%C:c                    V ^8  d   Qh/ ^ \         9   d   \        P                  ;R&   ^\         9   d   \        P                  ;R&   # )r
   r+   r   )__conditional_annotations__typingType)r   s   "r   r   r      s4     ' ' &%FKK% ( 6;; (r   )rP   __doc__importlib.metadatar   r   rQ   r   r7   r   r   TYPE_CHECKING	mcp.typesr   r   r6   r   r+   ImportErrorr   r%   r-   r0   r<   r   r   )rP   s   @r   <module>rX      s     ( <    	'3"%%')56
w 
 Gs   B BB