U
    ”Ê¹j¨%  ã                   @   sä   d dl Z d dlZd dlZd dlZd dlm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 ejdd	d
�Zejdddd�Zejedd� ee ddœdd„Ze ¡ ejdddd�fee dœdd„ƒZedkràeƒ  dS )é    N)ÚOptional)Úprinté   )Ú_async_promptÚ_patch_anyio_open_process)ÚAgent)Ú_load_agent_configÚrichziA squad of lightweight composable AI applications built on Hugging Face's Inference Client and MCP stack.)Zrich_markup_modeÚhelpÚrunzRun the Agent in the CLIT)Únamer
   Zinvoke_without_command)r   )Ú
agent_pathÚreturnc                 ƒ   sL  t ƒ  t| ƒ\}}| dg ¡}| dg ¡}t ¡ ‰t ¡ ‰d‰t ¡ }t tj¡}ddœ‡‡‡fdd„‰ �z˜�zFd}z| tjˆ ¡ d}W n. t
tfk
r¸   t tj‡ fd	d
„¡ Y nX i }t|ƒdk�rªtdƒ |D �]È}	|	d }
|	d }d|
› d�}tƒ }|D ]T}|d dk�r"| di ¡n
| di ¡}| ¡ D ]\}}||k�r6| |¡ �q6�q| d¡}t|tƒ�r„||k�r„| d¡ |�sœtd|
› d�ƒ qØ|
 dd¡ ¡ }td|
› d|› d|› d�dd� tˆd �I dH  ¡ }ˆ ¡ �rø W W �¢dS |}|�s6t |d!¡}|�r&td"|› d#�ƒ ntd$|› d%�ƒ |||
< |D ]^}|d dk�r`| di ¡n
| di ¡}| ¡ D ](\}}||k�rt||  ||¡||< �qt�qBqØtƒ  | d¡}t|tƒ�rô|}| ¡ D ]\}
}| d|
› d�|¡}�qÌ||d< t| d&¡| d'¡| d(¡| d¡||d)�4 I dH �š|}| ¡ I dH  td*t|jƒ› d+�ƒ |jD ]}td|jj› d,�ƒ �qVˆ  ¡  ˆ ¡ �r W 5 Q I dH R £ W W �¢hdS ztˆd �I dH }d‰W nf t!k
�rà   td-dd.� Y �q¢Y n@ t"k
�r   ˆ�sˆ ¡ �rY �qrntd/dd.� Y �q¢Y nX �z0|j#|ˆd0�2 �z3 dH W }ˆ ¡ �rVˆ�sV �qJˆ ¡ �r€ W W 5 Q I dH R £ W W �¢ˆdS t$|d1ƒ�r|j%d j&}|j'�r°t|j'd!dd2� |j(�rD|j(D ]\}|j)�ràtd3|j)› d4�d!d� |jj�rüt|jj› dd� |jj*�r¾t|jj*› d!d� �q¾n&td5|j› d6|j+› d7|j'› d8�dd.� �q26 tƒ  W nJ t,k
�rœ } z*t- .¡ }td9|› d7|› d:�dd.� d‰W 5 d}~X Y nX �qrW 5 Q I dH R X W nJ t,k
�rþ } z*t- .¡ }td;|› d7|› d:�dd.� |‚W 5 d}~X Y nX W 5 |�r8z| 	tj¡ W n t
tfk
�r4   Y nX nt tj|¡ X dS )<zú
    Tiny Agent loop.

    Args:
        agent_path (`str`, *optional*):
            Path to a local folder containing an `agent.json` and optionally a custom `PROMPT.md` or `AGENTS.md` file or a built-in agent stored in a Hugging Face dataset.

    ÚinputsÚserversTN)r   c                      s8   ˆr d‰ˆ   ¡  tddd� d S tddd� ˆ  ¡  d S )NFz4
[red]Interrupted. Press Ctrl+C again to quit.[/red]T©Úflushz
[red]Exiting...[/red])Úsetr   © )Úabort_eventÚ
exit_eventÚfirst_sigintr   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/huggingface_hub/inference/_mcp/cli.pyÚ_sigint_handler5   s    z"run_agent.<locals>._sigint_handlerFc                     s   ˆ ƒ S )Nr   )Ú_)r   r   r   Ú<lambda>G   ó    zrun_agent.<locals>.<lambda>r   z}[bold blue]Some initial inputs are required by the agent. Please provide a value or leave empty to load from env.[/bold blue]ÚidÚdescriptionz${input:Ú}ÚtypeZstdioÚenvÚheadersZapiKeyz[yellow]Input 'zS' defined in config but not used by any server or as an API key. Skipping.[/yellow]ú-r   u   [blue] â€¢ z	[/blue]: z. (default: load from z).ú )Úend)r   Ú z'[green]Value successfully loaded from 'z	'[/green]z[yellow]No value found for 'z0' in environment variables. Continuing.[/yellow]ÚproviderÚmodelZendpointUrl)r'   r(   Úbase_urlZapi_keyr   Úpromptz[bold blue]Agent loaded with z tools:[/bold blue]z[/blue]z"
[red]EOF received, exiting.[/red]r   z7
[red]Keyboard interrupt during input processing.[/red])r   Úchoices)r%   r   z<Tool ú>z

[green]Tool[z] Ú
z	[/green]
z#
[bold red]Error during agent run: ú[/bold red]ú)
[bold red]An unexpected error occurred: )/r   r   ÚgetÚasyncioÚEventZget_running_loopÚsignalÚ	getsignalÚSIGINTZremove_signal_handlerÚAttributeErrorÚNotImplementedErrorZadd_signal_handlerÚlenr   r   ÚitemsÚaddÚ
isinstanceÚstrÚreplaceÚupperr   ÚstripÚis_setÚosÚgetenvr   Z
load_toolsZavailable_toolsÚfunctionr   ÚclearÚEOFErrorÚKeyboardInterruptr   Úhasattrr+   ÚdeltaÚcontentZ
tool_callsr   Ú	argumentsZtool_call_idÚ	ExceptionÚ	tracebackÚ
format_exc)r   Úconfigr*   r   r   ÚloopZoriginal_sigint_handlerZsigint_registered_in_loopZresolved_inputsZ
input_itemZinput_idr   Zenv_special_valueZinput_usagesÚserverZenv_or_headersÚkeyÚvalueZraw_api_keyZenv_variable_keyZ
user_inputZfinal_valueZsubstituted_api_keyÚvalÚagentÚtÚchunkrH   ÚcallÚeZtb_strr   )r   r   r   r   r   Ú	run_agent   s
   ÿ
&



ÿþ

ÿ&

ú



 


þ
.rY   z¿Path to a local folder containing an agent.json file or a built-in agent stored in the 'tiny-agents/tiny-agents' Hugging Face dataset (https://huggingface.co/datasets/tiny-agents/tiny-agents)F)r
   Zshow_default)Úpathc              
   C   s|   zt  t| ƒ¡ W nd tk
r>   tddd� tjdd�‚Y n: tk
rv } ztd|› d�dd� |‚W 5 d }~X Y nX d S )Nz8
[red]Application terminated by KeyboardInterrupt.[/red]Tr   é‚   )Úcoder/   r.   )r1   r   rY   rF   r   ÚtyperZExitrK   )rZ   rX   r   r   r   r   à   s    Ú__main__)r1   rA   r3   rL   Útypingr   r]   r	   r   Z
_cli_hacksr   r   rT   r   Úutilsr   ZTyperZappZrun_cliZ	add_typerr<   rY   ÚcallbackZArgumentr   Ú__name__r   r   r   r   Ú<module>   sD   þýþ Eùÿÿ