Ë
    Z²jÞ  ã                   ó¾   — d Z ddlZddlmZ ddlmZm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mZ erdd
lmZ dddefd„Zdedefd„Zdee   deeee   f   fd„Zy)zÃ
Utility functions for MCPClient and Tiny Agents.

Formatting utilities taken from the JS SDK: https://github.com/huggingface/huggingface.js/blob/main/packages/mcp-client/src/ResultFormatter.ts.
é    N)ÚPath)ÚTYPE_CHECKINGÚOptional)Úsnapshot_download)ÚEntryNotFoundErroré   )ÚDEFAULT_AGENTÚDEFAULT_REPO_IDÚFILENAME_CONFIGÚPROMPT_FILENAMES)ÚAgentConfig)ÚtypesÚresultzmcp_types.CallToolResultÚreturnc                 ó8  — | j                   }t        |«      dk(  ryg }|D �]g  }|j                  xdk(  r |j                  |j                  «       Œ1xdk(  r7 |j                  d|j
                  › dt        |j                  «      › d�«       Œmxdk(  r7 |j                  d	|j
                  › dt        |j                  «      › d�«       Œ©d
k(  sŒ®|j                  }t        |d«      r6t        |j                  t        «      r|j                  |j                  «       Œüt        |d«      s�Œ
t        |j                  t        «      s�Œ&|j                  d|j                  › d|j
                  › dt        |j                  «      › d�«       �Œj dj                  |«      S )a  
    Formats a mcp.types.CallToolResult content into a human-readable string.

    Args:
        result (CallToolResult)
            Object returned by mcp.ClientSession.call_tool.

    Returns:
        str
            A formatted string representing the content of the result.
    r   z[No content]ÚtextÚimagez[Binary Content: Image z, zC bytes]
The task is complete and the content accessible to the UserÚaudioz[Binary Content: Audio ÚresourceÚblobz[Binary Content (z): ú
)ÚcontentÚlenÚtypeÚappendr   ÚmimeTypeÚ_get_base64_sizeÚdatar   ÚhasattrÚ
isinstanceÚstrr   ÚuriÚjoin)r   r   Úformatted_partsÚitemr   s        úc/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/huggingface_hub/inference/_mcp/utils.pyÚformat_resultr'      sn  € ð �n‰n€Gä
ˆ7ƒ|�qÒØà!#€Oàó ˆØ�i‰iÝØ×&Ñ& t§y¡yÕ1åØ×&Ñ&Ø-¨d¯m©m¨_¸BÔ?OÐPT×PYÑPYÓ?ZÐ>[ð \Rð Sõõ
 Ø×&Ñ&Ø-¨d¯m©m¨_¸BÔ?OÐPT×PYÑPYÓ?ZÐ>[ð \Rð Sõô
 ØŸ=™=�ä˜8 VÔ,´¸H¿M¹MÌ3Ô1OØ#×*Ñ*¨8¯=©=Õ9ä˜X vÖ.´:¸h¿m¹mÌSÖ3QØ#×*Ñ*Ø+¨H¯L©L¨>¸¸X×=NÑ=NÐ<Oð PÜ,¨X¯]©]Ó;Ð<ð =VðWöð1ð< �9‰9�_Ó%Ð%ó    Ú
base64_strc                 ó¬   — d| v r| j                  d«      d   } d}| j                  d«      rd}n| j                  d«      rd}t        | «      dz  dz  |z
  S )	z2Estimate the byte size of a base64-encoded string.ú,r   r   z==é   ú=é   é   )ÚsplitÚendswithr   )r)   Úpaddings     r&   r   r   J   se   € ð ˆjÑØ×%Ñ% cÓ*¨1Ñ-ˆ
à€GØ×Ñ˜4Ô Ø‰Ø	×	Ñ	˜SÔ	!Øˆä�
‹O˜aÑ AÑ%¨Ñ/Ð/r(   Ú
agent_pathc                 óÄ  — dt         dt        t        t        t           f   fd„}| €t
        dfS t        | «      j                  «       }|j                  «       r't        j                  |j                  d¬«      «      dfS |j                  «       r ||«      S 	 t        t        t        | › d�d¬	«      «      } ||| z  «      S # t        $ r}t        d
| › d�«      |‚d}~ww xY w)zLoad server config and prompt.Ú	directoryr   c                 ó  — | t         z  }|j                  «       st        d| › d�«      ‚t        j                  |j                  d¬«      «      }d }t        D ].  }| |z  }|j                  «       sŒ|j                  d¬«      } ||fS  ||fS )Nz Config file not found in z$! Please make sure it exists locallyúutf-8©Úencoding)r   ÚexistsÚFileNotFoundErrorÚjsonÚloadsÚ	read_textr   )r5   Úcfg_fileÚconfigÚpromptÚfilenameÚprompt_files         r&   Ú	_read_dirz%_load_agent_config.<locals>._read_dir\   sž   € ØœÑ.ˆØ�‰Ô Ü#Ð&@ÀÀÐKoÐ$pÓqÐqä"Ÿj™j¨×);Ñ);ÀWÐ);Ó)MÓNˆØ $ˆÜ(ò 	ˆHØ# hÑ.ˆKØ×!Ñ!Õ#Ø$×.Ñ.¸Ð.Ó@�ØØ�vˆ~Ðð	ð
 �vˆ~Ðr(   Nr7   r8   z/*Údataset)Úrepo_idÚallow_patternsÚ	repo_typez Agent z} not found in tiny-agents/tiny-agents! Please make sure it exists in https://huggingface.co/datasets/tiny-agents/tiny-agents.)r   Útupler   r   r!   r	   Ú
expanduserÚis_filer<   r=   r>   Úis_dirr   r
   Ú	Exceptionr   )r3   rD   ÚpathÚrepo_dirÚerrs        r&   Ú_load_agent_configrQ   Y   sð   € ðœTð ¤e¬K¼Ä#¹Ð,FÑ&Gó ð ÐÜ˜dÐ"Ð"ä�
Ó×&Ñ&Ó(€Dà‡|�|„~Ü�z‰z˜$Ÿ.™.°'˜.Ó:Ó;¸TÐAÐAà‡{�{„}Ù˜‹ÐðÜÜÜ'Ø", ¨RÐ0Ø#ôó
ˆñ ˜ JÑ.Ó/Ð/øÜò Ü Ø�j�\ð  "_ð  `ó
àð	ûðús   Â(C Ã	CÃ
CÃC)Ú__doc__r<   Úpathlibr   Útypingr   r   Úhuggingface_hubr   Úhuggingface_hub.errorsr   Ú	constantsr	   r
   r   r   r   r   ÚmcpÚ	mcp_typesr!   r'   Úintr   rI   rQ   © r(   r&   ú<module>r\      sz   ðñó Ý ß *å -Ý 5ç XÓ XÝ ñ Ý&ð1&Ð4ð 1&¸ó 1&ðh0 ð 0¨ó 0ð) 8¨C¡=ð )°U¸;ÈÐQTÉÐ;UÑ5Vô )r(   