ó
    ±"³j4\  ã                  óö  • % S SK Jr  S SKJr  S SKJr  S SKJr  S SK	J	r	  S SK
JrJrJrJr  S SKrS SKJr  S S	KJr  S S
KJr  Sr0 rS\S'    \S   r \S   r \S   \-  r \S   \-  r \" SS9 " S S\5      5       r\" SS9 " S S\5      5       r " S S\SS9r \" SS9 " S S\5      5       r!\" SS9 " S S\5      5       r"\" SS9 " S  S!\5      5       r#\" SS9 " S" S#\5      5       r$\" SS9 " S$ S%\5      5       r%\" SS9 " S& S'\5      5       r&\" SS9 " S( S)\5      5       r'\" SS9 " S* S+\5      5       r(S,S-K)J*r*  S1S. jr+\," \R[                  5       5      r. \," \'\&\%\(\*R^                  15      r0S/\S0'   g)2é    )Úannotations)ÚABC)ÚSequence)Ú	dataclass)Údatetime)Ú	AnnotatedÚAnyÚLiteralÚUnionN)Úcore_schema)Ú	TypedDict)ÚUploadedFile)ÚAbstractNativeToolÚWebSearchToolÚWebSearchUserLocationÚXSearchToolÚCodeExecutionToolÚWebFetchToolÚImageGenerationModelNameÚImageGenerationToolÚImageAspectRatioÚ	ImageSizeÚ
MemoryToolÚMCPServerToolÚFileSearchToolÚAdvisorModelNameÚAdvisorToolÚNATIVE_TOOL_TYPESÚSUPPORTED_NATIVE_TOOLSÚNATIVE_TOOLS_REQUIRING_CONFIGz#dict[str, type[AbstractNativeTool]]r   )
z21:9z16:9z4:3z3:2z1:1z9:16z3:4z2:3z5:4z4:5)ÚautoÚ	1024x1024Ú	1024x1536Ú	1536x1024Ú512Ú1KÚ2KÚ4K)zgpt-image-2zgpt-image-1.5zgpt-image-1zgpt-image-1-mini)	zclaude-fable-5-1zclaude-fable-5zclaude-mythos-5-1zclaude-mythos-5zclaude-opus-5zclaude-opus-4-8zclaude-opus-4-7zclaude-opus-4-6zclaude-sonnet-4-6T)Úkw_onlyc                  óš   ^ • \ rS rSr% SrSrS\S'    SrS\S'    \SS	 j5       r	\SS
 j5       r
SU 4S jjr\      SS j5       rSrU =r$ )r   éN   z¼A native tool that can be used by an agent.

This class is abstract and cannot be instantiated directly.

The native tools are passed to the model as part of the `ModelRequestParameters`.
Úunknown_native_toolÚstrÚkindFÚboolÚoptionalc                ó   • U R                   $ )zÀA unique identifier for the native tool.

If multiple instances of the same native tool can be passed to the model, subclasses should override this property to allow them to be distinguished.
)r.   ©Úselfs    Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/native_tools/__init__.pyÚ	unique_idÚAbstractNativeTool.unique_ide   s   € ð �y‰yÐó    c                óV   • U R                   R                  SS5      R                  5       $ )zeHuman-readable label for UI display.

Subclasses should override this to provide a meaningful label.
Ú_Ú )r.   ÚreplaceÚtitler2   s    r4   ÚlabelÚAbstractNativeTool.labelm   s$   € ð �y‰y× Ñ   cÓ*×0Ñ0Ó2Ð2r7   c                óL   >• [         TU ]  " S0 UD6  U [        U R                  '   g )N© )ÚsuperÚ__init_subclass__r   r.   )ÚclsÚkwargsÚ	__class__s     €r4   rB   Ú$AbstractNativeTool.__init_subclass__u   s"   ø€ Ü‰Ò!Ñ+ FÒ+Ø&)Ô˜#Ÿ(™(Ò#r7   c                ó†  • U [         La  U" U 5      $ [        R                  5       n[        U5      S:X  a  [	        [        U5      5      nOlU Vs/ s H,  n[        U[        R                  " UR                  5      4   PM.     nn[        [        [        U5         [        R                  " [        5      4   nU" U5      $ s  snf )Né   )r   r   ÚvaluesÚlenÚnextÚiterr   ÚpydanticÚTagr.   r   ÚtupleÚDiscriminatorÚ_tool_discriminator)rC   Ú_source_typeÚhandlerÚtoolsÚ
tools_typeÚtoolÚtools_annotateds          r4   Ú__get_pydantic_core_schema__Ú/AbstractNativeTool.__get_pydantic_core_schema__y   s¡   € ð Ô(Ò(Ù˜3“<Ðä!×(Ñ(Ó*ˆÜˆu‹:˜‹?Üœd 5›kÓ*‰JáTYÓZÒTYÈDœy¨¬x¯|ª|¸D¿I¹IÓ/FÐ)FÔGÑTYˆOÐZÜ"¤5¬¨Ó)?Ñ#@Ä(×BXÒBXÔYlÓBmÐ#mÑnˆJá�zÓ"Ð"ùò [s   Á3B>r@   ©Úreturnr-   )rD   r	   r[   ÚNone)rR   r	   rS   zpydantic.GetCoreSchemaHandlerr[   zcore_schema.CoreSchema)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r.   Ú__annotations__r0   Úpropertyr5   r=   rB   ÚclassmethodrX   Ú__static_attributes__Ú__classcell__)rE   s   @r4   r   r   N   s   ø‡ ñð &€Dˆ#Ó%Øbà€HˆdÓðð óó ðð ó3ó ð3÷*ð ð#Øð#Ø)Fð#à	ó#ó ö#r7   r   c                  óˆ   • \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    Sr	S	\S'    Sr
S\S'    SrS\S'    SrS\S'   Srg)r   éŠ   a  A native tool that allows your agent to search the web for information.

The parameters that PydanticAI passes depend on the model, as some parameters may not be supported by certain models.
OpenRouter uses its Beta web-search server tool, which lets the model decide whether to search and how often.
It accepts the portable settings below, though their effect depends on OpenRouter's selected
search engine and downstream provider.

Supported by:

* Anthropic
* OpenAI Responses
* Groq
* Google
* xAI
* OpenRouter
Úmediumz Literal['low', 'medium', 'high']Úsearch_context_sizeNzWebSearchUserLocation | NoneÚuser_locationúlist[str] | NoneÚblocked_domainsÚallowed_domainsú
int | NoneÚmax_useszbool | NoneÚexternal_web_accessÚ
web_searchr-   r.   r@   )r]   r^   r_   r`   ra   rj   rb   rk   rm   rn   rp   rq   r.   re   r@   r7   r4   r   r   Š   sƒ   ‡ ñð" =EÐÐ9ÓDðð 37€MÐ/Ó6ðð )-€OÐ%Ó,ðð )-€OÐ%Ó,ðð  €HˆjÓð	ð (,Ð˜Ó+ð
ð €Dˆ#ÓÚr7   r   c                  óH   • \ rS rSr% SrS\S'    S\S'    S\S'    S\S'   Srg	)
r   éê   z„Allows you to localize search results based on a user's location.

Supported by:

* Anthropic
* OpenAI Responses
* xAI
* OpenRouter
r-   ÚcityÚcountryÚregionÚtimezoner@   N)r]   r^   r_   r`   ra   rb   re   r@   r7   r4   r   r   ê   s.   ‡ ñð ƒIØ-àƒLðgð ƒKØ8àƒMÚ.r7   r   F)Útotalc                  ó¤   • \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    Sr	S\S	'    S
r
S\S'    S
rS\S'    S
rS\S'    SrS\S'    SS jrSrg)r   i  aƒ  A native tool that allows your agent to search X/Twitter for posts and content.

See <https://docs.x.ai/developers/tools/x-search> for more details.

When used via the [`XSearch`][pydantic_ai.capabilities.XSearch] capability with a
`fallback_subagent_model` set, this tool also works with non-xAI models by delegating to a
subagent running the specified xAI model.

Supported by:

* xAI
Nrl   Úallowed_x_handlesÚexcluded_x_handleszdatetime | NoneÚ	from_dateÚto_dateFr/   Úenable_image_understandingÚenable_video_understandingÚinclude_outputÚx_searchr-   r.   c                ó$  • U R                   b  U R                  b  [        S5      eU R                   (       a$  [        U R                   5      S:”  a  [        S5      eU R                  (       a%  [        U R                  5      S:”  a  [        S5      eg g )Nz<Cannot specify both allowed_x_handles and excluded_x_handlesé   z5allowed_x_handles cannot contain more than 20 handlesz6excluded_x_handles cannot contain more than 20 handles)r{   r|   Ú
ValueErrorrJ   r2   s    r4   Ú__post_init__ÚXSearchTool.__post_init__Z  s|   € Ø×!Ñ!Ñ-°$×2IÑ2IÑ2UÜÐ[Ó\Ð\Ø×!×!¤c¨$×*@Ñ*@Ó&AÀBÓ&FÜÐTÓUÐUØ×"×"¤s¨4×+BÑ+BÓ'CÀbÓ'HÜÐUÓVÐVð (IÐ"r7   r@   ©r[   r\   )r]   r^   r_   r`   ra   r{   rb   r|   r}   r~   r   r€   r�   r.   r†   re   r@   r7   r4   r   r     s™   ‡ ñð +/ÐÐ'Ó.ðð ,0ÐÐ(Ó/ðð "&€IˆÓ%ðð  $€Gˆ_Ó#ðð (-Ð Ó,ðð (-Ð Ó,ðð !€N�DÓ ðð €Dˆ#ÓØ÷Wr7   r   c                  ó8   • \ rS rSr% SrSrS\S'    SrS\S'   S	rg)
r   ic  zˆA native tool that allows your agent to execute code.

Supported by:

* Anthropic
* OpenAI Responses
* Google
* Bedrock (Nova2.0)
* xAI
Nzlist[UploadedFile] | NoneÚfilesÚcode_executionr-   r.   r@   )	r]   r^   r_   r`   ra   rŠ   rb   r.   re   r@   r7   r4   r   r   c  s(   ‡ ñ	ð (,€EÐ$Ó+ðð !€Dˆ#Ó Úr7   r   c                  óx   • \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    S	r	S
\S'    Sr
S\S'    SrS\S'   Srg)r   i  zÌAllows your agent to access contents from URLs.

The parameters that PydanticAI passes depend on the model, as some parameters may not be supported by certain models.

Supported by:

* Anthropic
* Google
Nro   rp   rl   rn   rm   Fr/   Úenable_citationsÚmax_content_tokensÚ	web_fetchr-   r.   r@   )r]   r^   r_   r`   ra   rp   rb   rn   rm   r�   rŽ   r.   re   r@   r7   r4   r   r     so   ‡ ñð  €HˆjÓðð )-€OÐ%Ó,ðð )-€OÐ%Ó,ðð #Ð�dÓ"ðð &*Ð˜
Ó)ðð €Dˆ#ÓÚr7   r   c                  óØ   • \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    Sr	S\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'   Srg) r   i»  zeA native tool that allows your agent to generate images.

Supported by:

* OpenAI Responses
* Google
r!   z#Literal['generate', 'edit', 'auto']Úactionz(Literal['transparent', 'opaque', 'auto']Ú
backgroundNzLiteral['high', 'low'] | NoneÚinput_fidelityzLiteral['auto', 'low']Ú
moderationzImageGenerationModelName | NoneÚmodelro   Úoutput_compressionz%Literal['png', 'webp', 'jpeg'] | NoneÚoutput_formatr   ÚintÚpartial_imagesz(Literal['low', 'medium', 'high', 'auto']ÚqualityzImageSize | NoneÚsizezImageAspectRatio | NoneÚaspect_ratioÚimage_generationr-   r.   r@   )r]   r^   r_   r`   ra   r‘   rb   r’   r“   r”   r•   r–   r—   r™   rš   r›   rœ   r.   re   r@   r7   r4   r   r   »  sÝ   ‡ ñð 39€FÐ/Ó8ðð <B€JÐ8ÓAðð 59€NÐ1Ó8ðð *0€JÐ&Ó/ðð .2€EÐ*Ó1ð
ð &*Ð˜
Ó)ðð <@€MÐ8Ó?ðð €N�CÓðð 9?€GÐ5Ó>ðð "€DÐ
Ó!ðð -1€LÐ)Ó0ðð #€Dˆ#Ó"Úr7   r   c                  ó(   • \ rS rSr% SrSrS\S'   Srg)r   i,  zPA native tool that allows your agent to use memory.

Supported by:

* Anthropic
Úmemoryr-   r.   r@   N)r]   r^   r_   r`   ra   r.   rb   re   r@   r7   r4   r   r   ,  s   ‡ ñð €Dˆ#ÓÚr7   r   c                  ó¨   • \ rS rSr% SrS\S'    S\S'    SrS\S'    SrS\S	'    SrS
\S'    Sr	S\S'    Sr
S\S'   \SS j5       r\SS j5       rSrg)r   i9  znA native tool that allows your agent to use MCP servers.

Supported by:

* OpenAI Responses
* Anthropic
* xAI
r-   ÚidÚurlNú
str | NoneÚauthorization_tokenÚdescriptionrl   Úallowed_toolszdict[str, str] | NoneÚheadersÚ
mcp_serverr.   c                óP   • SR                  U R                  U R                  /5      $ )NÚ:)Újoinr.   r¡   r2   s    r4   r5   ÚMCPServerTool.unique_idw  s   € à�x‰x˜Ÿ™ D§G¡GÐ,Ó-Ð-r7   c                ó    • SU R                    3$ )NzMCP: )r¡   r2   s    r4   r=   ÚMCPServerTool.label{  s   € à�t—w‘w�iÐ Ð r7   r@   rZ   )r]   r^   r_   r`   ra   rb   r¤   r¥   r¦   r§   r.   rc   r5   r=   re   r@   r7   r4   r   r   9  s”   ‡ ñð 	ƒGØ1à	ƒHðð
 '+Ð˜Ó*ðð #€K�Ó"ðð '+€MÐ#Ó*ðð &*€GÐ"Ó)ðð €Dˆ#Óàó.ó ð.ð ó!ó ó!r7   r   c                  ód   • \ rS rSr% SrS\S'    SrS\S'    SrS\S	'    SrS
\S'    Sr	S\S'   Sr
g)r   i€  ad  A native tool that allows your agent to search through uploaded files using vector search.

This tool provides a fully managed Retrieval-Augmented Generation (RAG) system that handles
file storage, chunking, embedding generation, and context injection into prompts.

Supported by:

* OpenAI Responses
* Google (Gemini)
* xAI (mapped to collections search)
zSequence[str]Úfile_store_idsNro   Úmax_num_resultsr£   Úinstructionsz/Literal['hybrid', 'semantic', 'keyword'] | NoneÚretrieval_modeÚfile_searchr-   r.   r@   )r]   r^   r_   r`   ra   rb   r±   r²   r³   r.   re   r@   r7   r4   r   r   €  sY   ‡ ñ
ð "Ó!ðð #'€O�ZÓ&ðð  $€L�*Ó#ðð GK€NÐCÓJðð €Dˆ#ÓÚr7   r   c                  óp   • \ rS rSr% SrS\S'    SrS\S'    SrS\S'    SrS	\S
'    Sr	S\S'    SS jr
Srg)r   i²  a   A native tool that lets a faster executor model consult a stronger advisor model mid-generation.

The fields map 1:1 to the parameters of Anthropic's advisor tool definition. OpenRouter exposes
the advisor as a gateway server tool that honors a subset (`model`, `max_tokens`) and ignores
the unsupported fields; see the per-field docstrings for which provider supports each.

Supported by:

* Anthropic
* OpenRouter
r   r•   Nro   rp   Ú
max_tokenszLiteral['5m', '1h'] | NoneÚcachingÚadvisorr-   r.   c                óV   • U R                   b  U R                   S:  a  [        S5      eg g )Ni   z,AdvisorTool.max_tokens must be at least 1024)r¶   r…   r2   s    r4   r†   ÚAdvisorTool.__post_init__õ  s,   € Ø�?‰?Ñ&¨4¯?©?¸TÓ+AÜÐKÓLÐLð ,BÐ&r7   r@   rˆ   )r]   r^   r_   r`   ra   rb   rp   r¶   r·   r.   r†   re   r@   r7   r4   r   r   ²  s]   ‡ ñ
ð Óð
ð  €HˆjÓðð "€J�
Ó!ð	ð +/€GÐ'Ó.ðð €Dˆ#ÓØ÷Mr7   r   rH   )Ú_tool_searchc                ó„   • [        U [        5      (       a   U R                  S[        R                  5      $ U R                  $ )Nr.   )Ú
isinstanceÚdictÚgetr   r.   )Ú	tool_datas    r4   rQ   rQ     s1   € Ü�)œT×"Ñ"Ø�}‰}˜VÔ%7×%<Ñ%<Ó=Ð=à�~‰~Ðr7   z#frozenset[type[AbstractNativeTool]]r    )rÀ   z#dict[str, Any] | AbstractNativeToolr[   r-   )1Ú
__future__r   Ú_annotationsÚabcr   Úcollections.abcr   Údataclassesr   r   Útypingr   r	   r
   r   rM   Úpydantic_corer   Útyping_extensionsr   Úpydantic_ai.messagesr   Ú__all__r   rb   r   r   r-   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú r»   rQ   Ú	frozensetrI   r   ÚToolSearchToolr    r@   r7   r4   Ú<module>rÎ      s[  ðÞ 2å Ý $Ý !Ý ß 1Ó 1ã Ý %Ý 'å -ð€ð* :<Ð Ð6Ó ;ðð
 ÐbÑcÐ ðð ÐZÑ[€	Ø 1à"Ð#dÑeÐhkÑkÐ Ø Rð ð	ñ
ð 
ñ
ð ðñ �4Ñô8#˜ó 8#ó ð8#ñv �4Ñô\Ð&ó \ó ð\ô~/˜I¨Uò /ñ4 �4Ñô[WÐ$ó [Wó ð[Wñ| �4ÑôÐ*ó ó ðñ6 �4Ñô8Ð%ó 8ó ð8ñv �4ÑômÐ,ó mó ðmñ` �4Ñô	Ð#ó 	ó ð	ñ �4ÑôC!Ð&ó C!ó ðC!ñL �4Ñô.Ð'ó .ó ð.ñb �4ÑôDMÐ$ó DMó ðDMõZ +ôñ #Ð#4×#;Ñ#;Ó#=Ó>Ð Ø #áENØ�] J°¸\×=XÑ=XÐYóFÐ ÐBô r7   