§
    }ŠtjÞ  ã                   óÒ   — 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dS )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                 ó"  — | j         }t          |¦  «        dk    rdS g }|D �]Y}|j        xdk    r |                     |j        ¦  «         Œ+xdk    r5 |                     d|j        › dt          |j        ¦  «        › d�¦  «         Œfxdk    r5 |                     d	|j        › dt          |j        ¦  «        › d�¦  «         Œ¡d
k    r³|j        }t          |d¦  «        r5t          |j        t          ¦  «        r|                     |j        ¦  «         Œòt          |d¦  «        rUt          |j        t          ¦  «        r;|                     d|j        › d|j        › dt          |j        ¦  «        › d�¦  «         �ŒY�Œ[d                     |¦  «        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        úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/inference/_mcp/utils.pyÚformat_resultr'      s	  € ð Œn€Gå
ˆ7�|„|�qÒÐØˆ~à!#€Oàð ñ ˆØŒiØ�’��Ø×&Ò& t¤yÑ1Ô1Ð1Ð1à�’��Ø×&Ò&ðS¨d¬mð Sð SÕ?OÐPTÔPYÑ?ZÔ?Zð Sð Sð Sñô ð ð ð
 �’��Ø×&Ò&ðS¨d¬mð Sð SÕ?OÐPTÔPYÑ?ZÔ?Zð Sð Sð Sñô ð ð ð
 ’�Øœ=�å˜8 VÑ,Ô,ð µ¸H¼MÍ3Ñ1OÔ1Oð Ø#×*Ò*¨8¬=Ñ9Ô9Ð9Ð9å˜X vÑ.Ô.ð µ:¸h¼mÍSÑ3QÔ3Qð Ø#×*Ò*ðW¨H¬Lð Wð W¸XÔ=Nð Wð WÝ,¨X¬]Ñ;Ô;ðWð Wð Wñô ð ùñ ð �9Š9�_Ñ%Ô%Ð%ó    Ú
base64_strc                 óÒ   — d| v r|                       d¦  «        d         } d}|                      d¦  «        rd}n|                      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   s   € ð ˆjÐÐØ×%Ò% cÑ*Ô*¨1Ô-ˆ
à€GØ×Ò˜4Ñ Ô ð ØˆˆØ	×	Ò	˜SÑ	!Ô	!ð Øˆå�
‰OŒO˜aÑ AÑ%¨Ñ/Ð/r(   Ú
agent_pathc                 ó*  — dt           dt          t          t          t                   f         fd„}| €	t
          dfS t          | ¦  «                             ¦   «         }|                     ¦   «         r*t          j	        | 
                    d¬¦  «        ¦  «        dfS |                     ¦   «         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                 ó6  — | t           z  }|                     ¦   «         st          d| › d�¦  «        ‚t          j        |                     d¬¦  «        ¦  «        }d }t          D ]3}| |z  }|                     ¦   «         r|                     d¬¦  «        } nŒ4||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·   € Ø�Ñ.ˆØ�ŠÑ Ô ð 	rÝ#Ð$pÀÐ$pÐ$pÐ$pÑqÔqÐqå"œj¨×);Ò);ÀWÐ);Ñ)MÔ)MÑNÔNˆØ $ˆÝ(ð 	ð 	ˆHØ# hÑ.ˆKØ×!Ò!Ñ#Ô#ð Ø$×.Ò.¸Ð.Ñ@Ô@�Ø�ðð �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   sM  € ð�Tð ¥e­K½Å#¼Ð,FÔ&Gð ð ð ð ð ÐÝ˜dÐ"Ð"å�
ÑÔ×&Ò&Ñ(Ô(€Dà‡|‚|�~„~ð BÝŒz˜$Ÿ.š.°'˜.Ñ:Ô:Ñ;Ô;¸TÐAÐAà‡{‚{�}„}ð Øˆy˜‰ŒÐðÝÝÝ'Ø",Ð0Ð0Ð0Ø#ðñ ô ñ
ô 
ˆð ˆy˜ JÑ.Ñ/Ô/Ð/øÝð ð ð Ý ð `�jð  `ð  `ð  `ñ
ô 
àð	øøøøðøøøs   Â:4C/ Ã/
DÃ9DÄD)Ú__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\      s?  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à -Ð -Ð -Ð -Ð -Ð -Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ Ð Ð Ð Ð Ð ð ð 'Ø&Ð&Ð&Ð&Ð&Ð&ð1&Ð4ð 1&¸ð 1&ð 1&ð 1&ð 1&ðh0 ð 0¨ð 0ð 0ð 0ð 0ð) 8¨C¤=ð )°U¸;ÈÐQTÌÐ;UÔ5Vð )ð )ð )ð )ð )ð )r(   