§
    TCÄj¿!  ã                   óT  — U d Z ddlZddlZ	 ddlZn# e$ r dZY nw xY w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	efd
„Ze	j        rddlmZ ddlmZ ddlmZ ddlmZ n&e
Ze	j        ed<   e
Ze	j        ed<   dZe
ed<   dZe
ed<   ded	ej        fd„Zded	ej        fd„Z 	 d#de!e         ded	e!ej                 fd„Z"dej#        d	efd„Z$dej#        d	efd„Z%de&e'e'f         d	dfd„Z(dej)        d	ej)        fd„Z*ej+        d e
d!e'd	e	j,        e
         fd"„¦   «         Z-dS )$z!Utils for working with MCP tools.é    N)ÚPackageNotFoundErrorÚversion)ÚAnyé   )Ú_common)Útypes)Ú_MULTI_REGIONAL_LOCATIONSÚreturnc                  ó   — dt           j        v S )NÚmcp)ÚsysÚmodules© ó    ú[C:\Projects\Historical\FacebookAutoPoster\venv\Lib\site-packages\google/genai/_mcp_utils.pyÚ_is_mcp_loadedr   "   s   € Ø	•#”+Ð	Ðr   ©ÚTool©ÚClientSession)Ústreamable_http_client)Úcreate_mcp_http_clientÚMcpClientSessionÚMcpToolr   r   Útoolc                 ó:  — t          | dt          | di ¦  «        ¦  «        }t          j        | j        | j        t          j                             t          j        di t          t          | dt          | di ¦  «        ¦  «        ¦  «        ¤Ž¬¦  «        dœg¬¦  «        S )z.Translates an MCP tool to a Google GenAI tool.ÚinputSchemaÚinput_schema)Újson_schema)ÚnameÚdescriptionÚ
parameters©Úfunction_declarationsr   )	Úgetattrr   r   r    r!   ÚSchemaÚfrom_json_schemaÚ
JSONSchemaÚ_filter_to_supported_schema©r   r   s     r   Úmcp_to_gemini_toolr+   0   s³   € å˜˜}­g°d¸NÈBÑ.OÔ.OÑPÔP€,Ý	Œà”)ØÔ)Ýœ×5Ò5ÝÔ*ð ð Ý/ÝØ µ¸¸mÈRÑ0PÔ0Pñô ñô ðð ð 6ñ ô ðð ð 	ð
ñ 
ô 
ð r   c                 óÆ   — t          | dt          | di ¦  «        ¦  «        }t          j        | j        | j        t          | dt          | di ¦  «        ¦  «        dœg¬¦  «        S )z9Translates an Agent Platform tool to a Google GenAI tool.r   r   )r    r!   Úparameters_json_schemar#   )r%   r   r   r    r!   r*   s     r   Úagent_platform_to_gemini_toolr.   D   sr   € å˜˜}­g°d¸NÈBÑ.OÔ.OÑPÔP€,Ý	Œà”)ØÔ)Ý$+Ø�N¥G¨D°-ÀÑ$DÔ$Dñ%ô %ðð ð 	ð
ñ 
ô 
ð r   FÚtoolsÚis_agent_platformc                 ó6   — |rd„ | D ¦   «         S d„ | D ¦   «         S )z?Translates a list of MCP tools to a list of Google GenAI tools.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )r.   ©Ú.0r   s     r   ú
<listcomp>z'mcp_to_gemini_tools.<locals>.<listcomp>X   s!   € ÐBÐBÐB°DÕ)¨$Ñ/Ô/ÐBÐBÐBr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )r+   r3   s     r   r5   z'mcp_to_gemini_tools.<locals>.<listcomp>Y   s!   € Ð	5Ð	5Ð	5 tÕ
˜TÑ
"Ô
"Ð	5Ð	5Ð	5r   r   )r/   r0   s     r   Úmcp_to_gemini_toolsr7   R   s5   € ð
 ð CØBÐB¸EÐBÑBÔBÐBØ	5Ð	5¨uÐ	5Ñ	5Ô	5Ð5r   c                 óö   — t          ¦   «         sdS 	 ddlm} ddlm} n2# t
          $ r% t          ddi ¦  «        }t          ddi ¦  «        }Y nw xY w| D ]%}t          ||¦  «        st          ||¦  «        r dS Œ&dS )	zDChecks whether the list of tools contains any MCP tools or sessions.Fr   r   r   ÚDummySessionr   Ú	DummyToolT)r   r   r   Ú	mcp.typesr   ÚImportErrorÚtypeÚ
isinstance)r/   Ú_McpClientSessionÚ_McpToolr   s       r   Úhas_mcp_tool_usagerA   \   sÉ   € å	Ñ	Ô	ð Øˆ5ð)Ø6Ð6Ð6Ð6Ð6Ð6Ø*Ð*Ð*Ð*Ð*Ð*Ð*øÝ	ð )ð )ð )Ý˜^¨R°Ñ4Ô4ÐÝ�K  RÑ(Ô(€H€H€Hð)øøøð ð ð €dÝ�$˜Ñ!Ô!ð ¥Z°Ð6GÑ%HÔ%Hð ØˆTˆTðà	ˆs   ’ Ÿ,AÁAc                 ó¨   — t          ¦   «         sdS 	 ddlm} n!# t          $ r t	          ddi ¦  «        }Y nw xY w| D ]}t          ||¦  «        r dS ŒdS )z;Checks whether the list of tools contains any MCP sessions.Fr   r   r9   r   T)r   r   r   r<   r=   r>   )r/   r?   r   s      r   Úhas_mcp_session_usagerC   m   s—   € å	Ñ	Ô	ð Øˆ5ð5Ø6Ð6Ð6Ð6Ð6Ð6Ð6øÝ	ð 5ð 5ð 5Ý˜^¨R°Ñ4Ô4ÐÐÐð5øøøð ð ð €dÝ�$Ð)Ñ*Ô*ð ØˆTˆTðà	ˆs   ’ ™7¶7Úheadersc                 óÒ   — t          ¦   «         sdS 	 t          d¦  «        }n# t          $ r d}Y nw xY w|                      dd¦  «        }|d|› �z                        ¦   «         | d<   dS )z;Sets the MCP version label in the Google API client header.Nr   z0.0.0zx-goog-api-clientÚ z
 mcp_used/)r   r   r   ÚgetÚlstrip)rD   Úversion_labelÚexisting_headers      r   Úset_mcp_usage_headerrK   |   sŠ   € å	Ñ	Ô	ð Ø
€FðÝ˜E‘N”N€M€MøÝ	ð ð ð Ø€M€M€Mðøøøà—K’KÐ 3°RÑ8Ô8€/àÐ4 ]Ð4Ð4Ñ4ß
‚F�H„Hð 
Ð
ÑÐÐs   ’" ¢1°1Úschemac                 óŒ  — t          t          j        j                             ¦   «         ¦  «        }|                     g d¢¦  «         d}d}d}i }|                      ¦   «         D ]_\  }}||v rt          |¦  «        ||<   Œ||v rd„ |D ¦   «         ||<   Œ0||v r"d„ |                     ¦   «         D ¦   «         ||<   ŒV||v r|||<   Œ`|S )zKFilters the schema to only include fields that are supported by JSONSchema.)ÚadditionalPropertiesÚanyOfÚoneOfú$defsz$ref)ÚitemsrN   Úadditional_properties)rO   Úany_ofrP   Úone_of)Ú
propertiesÚdefsrQ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   ©r)   )r4   Úvalues     r   r5   z/_filter_to_supported_schema.<locals>.<listcomp>¡   s.   € ð %ð %ð %Ø16Õ
% eÑ
,Ô
,ð%ð %ð %r   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r   rY   )r4   ÚkeyrZ   s      r   ú
<dictcomp>z/_filter_to_supported_schema.<locals>.<dictcomp>¥   s7   € ð %ð %ð %áˆc�5ð Õ*¨5Ñ1Ô1ð%ð %ð %r   )Úsetr   r(   Úmodel_fieldsÚkeysÚupdaterR   r)   )rL   Úsupported_fieldsÚschema_field_namesÚlist_schema_field_namesÚdict_schema_field_namesÚfiltered_schemaÚ
field_nameÚfield_values           r   r)   r)   Š   s5  € õ  #¥5Ô#3Ô#@×#EÒ#EÑ#GÔ#GÑHÔHÐà×Òð ð ð ñ ô ð ðÐð
 CÐØ;Ðà$&€/Ø!'§¢¡¤ð 0ð 0Ñ€j�+ØÐ'Ð'Ð'Ý$?ÀÑ$LÔ$L€o�jÑ!Ð!Ø	Ð.Ð	.Ð	.ð%ð %Ø:Eð%ñ %ô %€o�jÑ!Ð!ð 
Ð.Ð	.Ð	.ð%ð %à'×-Ò-Ñ/Ô/ð%ñ %ô %€o�jÑ!Ð!ð 
Ð'Ð	'Ð	'Ø$/€o�jÑ!øà	Ðr   Ú
api_clientÚtoolset_namec                óì  ‡‡K  — t           €t          d¦  «        ‚d}t          | d¦  «        r!t          | j        d¦  «        r| j        j        }|r'|                     d¦  «        r
|dd…         }|› d|› �}n7t          | dd	¦  «        }|d	k    rd
|› �}n|t          v r	d|› d|› �}nd|› d|› �}|                      ¦   «         ƒ d{V —†}t          | dd¦  «        }i }t          | d¦  «        r,| j        r%| j        j	        rt          | j        j	        ¦  «        }d|› �|d<   |r||d<   t          |¦  «         t          �t          j        |d¬¦  «        }nt          j        |d¬¦  «        }	 |4 ƒd{V —† t          ||¬¦  «        4 ƒd{V —†	 }	|	d         }
|	d         }t          |
|¦  «        4 ƒd{V —†}|                     ¦   «         ƒ d{V —† 	 |W V — nD# t"          $ r7 Y ddd¦  «        ƒd{V —† ddd¦  «        ƒd{V —† ddd¦  «        ƒd{V —† dS w xY w	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS # t$          $ rd}g Šdt&          ddfˆˆfd„Št)          |¦  «        j        dv st          |d¦  «        r! ‰|¦  «         t-          d|› d‰› �¦  «        |‚Y d}~dS d}~ww xY w)zGInternal helper to manage the Agent Platform MCP lifecycle per request.Nz@The 'mcp' package is required to use Agent Platform MCP servers.Ú_http_optionsÚbase_urlú/éÿÿÿÿz/mcp/ÚlocationÚglobalz&https://aiplatform.googleapis.com/mcp/zhttps://aiplatform.z.rep.googleapis.com/mcp/zhttps://z-aiplatform.googleapis.com/mcp/ÚprojectzBearer ÚAuthorizationzX-Goog-User-Project)rD   Útimeout)ÚurlÚhttp_clientr   r   Úexcr
   c           	      óü  •— t          | d¦  «        r| j        D ]} ‰|¦  «         Œd S t          | ¦  «        j        › dt	          | ¦  «        › �}t          | d¦  «        rˆ| j        ��t          | j        dt          | j        dd¦  «        ¦  «        }t          | j        dt	          | j        ¦  «        ¦  «        }t          |¦  «        rt	          | j        ¦  «        }|d|› d|› d	�z  }‰                     |¦  «         d S )
NÚ
exceptionsz: ÚresponseÚstatus_codeÚstatusÚUnknownÚtextz (HTTP ú))	Úhasattrry   r=   Ú__name__Ústrrz   r%   ÚcallableÚappend)rw   ÚeÚmsgr|   r~   Ú_extract_errorsÚerror_messagess        €€r   r‡   z4_connect_agent_platform_mcp.<locals>._extract_errorsì   s  ø€ å	��lÑ	#Ô	#ð #Ø”ð 	ð 	ˆAØ
ˆ/˜!Ñ
Ô
Ð
Ð
ð	ð 	õ �c‘”Ô#Ð1Ð1¥s¨3¡x¤xÐ1Ð1ˆÝ�3˜
Ñ#Ô#ð 		-¨¬Ð(@ÝØŒlØÝ�c”l H¨iÑ8Ô8ñô ˆ&õ
 ˜œ v­s°3´<Ñ/@Ô/@ÑAÔAˆ$Ý�d‰^Œ^ð %Ý�s”|Ñ$Ô$ˆDØ
Ð,˜6Ð,Ð, TÐ,Ð,Ð,Ñ
,ˆ#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"r   )ÚExceptionGroupÚBaseExceptionGroupry   z2Failed to connect to Agent Platform MCP Server at z.
Underlying errors: )r   r<   r€   rl   rm   Úendswithr%   r	   Ú_async_access_tokenrD   ÚdictrK   Úhttpx2ÚAsyncClientÚhttpxr   Ú
initializeÚGeneratorExitÚBaseExceptionr   r=   r�   Ú
ValueError)ri   rj   rm   Úmcp_urlrp   Útokenrr   rD   rv   ÚstreamsÚread_streamÚwrite_streamÚsessionÚegr‡   rˆ   s                 @@r   Ú_connect_agent_platform_mcprœ   ®   s8  øøè è € õ Ð#Ý
ØHñô ð ð €(ÝˆZ˜Ñ)Ô)ð 1­g°jÔ6NÐPZÑ.[Ô.[ð 1ØÔ'Ô0€Hàð SØ×Ò˜ÑÔð Ø˜#˜2˜#”€hØÐ.Ð. Ð.Ð.€G€Gå�z :¨xÑ8Ô8€HØ�8ÒÐØG¸ÐGÐG€g€gØ	Õ.Ð	.Ð	.ØV hÐVÐVÈÐVÐV€g€gàR˜8ÐRÐRÀLÐRÐR€gà×.Ò.Ñ0Ô0Ð
0Ð
0Ð
0Ð
0Ð
0Ð
0€%Ý�J 	¨4Ñ0Ô0€'à€'ÝˆZ˜Ñ)Ô)ð 5¨jÔ.Fð 5È:ÔKcÔKkð 5Ý�:Ô+Ô3Ñ4Ô4€Gà. uÐ.Ð.€'ˆ/ÑØð -Ø%,€GÐ!Ñ"å�wÑÔÐõ ÐÝÔ$¨W¸dÐCÑCÔC€K€KåÔ#¨G¸TÐBÑBÔB€Kð,Øð ð ð ð ð ð ð ð Ý'Ø ;ðñ ô ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
àØ˜a”jˆØ˜q”zˆÝ# K°Ñ>Ô>ð 	ð 	ð 	ð 	ð 	ð 	ð 	À'Ø×"Ò"Ñ$Ô$Ð
$Ð
$Ð
$Ð
$Ð
$Ð
$Ð
$ðØˆMˆMˆMˆMˆMøÝð ð ð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ñ ô ð ð ð ð ð ð ð ð ð ðøøøð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð øõ 
ð ð ð à€Nð#�Sð # Tð #ð #ð #ð #ð #ð #ð #õ& ˆB�x„xÔÐDÐDÐDÍØ
ˆLñIô IÐDð €o�bÑÔÐÝð1¸wð 1ð 1Ø .ð1ð 1ñô ð ðð	 EÐDÐDÐDÐDÐDøøøøð/øøøs»   Å*J Å2I2Æ'IÆ2H+ÇGÇH+Ç
H	ÇH+ÇIÇ0I2ÈJ ÈH	ÈH+ÈIÈ+
H5È5IÈ8H5È9IÈ<I2É
I	ÉI2ÉI	ÉI2ÉJ É2
I<É<J É?I<Ê J Ê
K3ÊAK.Ë.K3)F).Ú__doc__Ú
contextlibr�   rŽ   r<   r   Úimportlib.metadatar   r   Útypingr   rF   r   r   Ú_api_clientr	   Úboolr   ÚTYPE_CHECKINGr;   r   r   r   r   r   Úmcp.client.streamable_httpr   Úmcp.shared._httpx_utilsr   ÚTypeÚ__annotations__r+   r.   Úlistr7   ÚToolListUnionrA   rC   r�   r‚   rK   Ú
StringDictr)   ÚasynccontextmanagerÚAsyncIteratorrœ   r   r   r   ú<module>r­      s  ðð  (Ð 'Ð 'Ø Ð Ð Ð Ø €€€ðØ€-€-€-€-øØð ð ð Ø€&€&€&ðøøøà 
€
€
€
à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð˜ð ð ð ð ð 
Ôð 	%Ø'Ð'Ð'Ð'Ð'Ð'Ø3Ð3Ð3Ð3Ð3Ð3Ø?Ð?Ð?Ð?Ð?Ð?Ø<Ð<Ð<Ð<Ð<Ð<Ð<à"%Ð�F”KÐ%Ð%Ñ%Ø€'ˆ6Œ;ÐÐÑØ $Ð˜#Ð$Ð$Ñ$Ø $Ð˜#Ð$Ð$Ñ$ð˜Wð ¨¬ð ð ð ð ð(¨ð °E´Jð ð ð ð ð  $ð6ð 6Ø�Œ=ð6àð6ð 
ˆ%Œ*Ôð6ð 6ð 6ð 6ð˜eÔ1ð °dð ð ð ð ð" Ô!4ð ¸ð ð ð ð ð $ s¨C x¤.ð °Tð ð ð ð ð"ØÔð"àÔð"ð "ð "ð "ðH ÔðW°#ð WÀSð WÈVÔMaÐbeÔMfð Wð Wð Wñ  ÔðWð Wð Ws   � ’›