a
    h%                     @   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re  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                    s^  t   t| \}}|dg }|dg }t t dt }ttj}ddfdd zzd}z|	tj  d}W n, t
tfy   ttj fd	d
 Y n0 i }t|dkrtd |D ]}	|	d }
|	d }d|
 d}t }|D ]T}|d dkr |di n
|di }| D ]\}}||v r4|| q4q|d}t|tr||v r|d |std|
 d q|
dd }td|
 d| d| ddd td I dH  } r2 W W |r z|tj W n t
tfy   Y n0 nttj| dS |}|spt|d!}|r`td"| d# ntd$| d% |||
< |D ]^}|d dkr|di n
|di }| D ](\}}||v r|| ||||< qq|qt  |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, q    rW d  I dH  W W |rz|tj W n t
tfy   Y n0 nttj| dS ztd I dH }dW nb t!yV   td-dd. Y qVY n> t"y   s| r|Y qntd/dd. Y qVY n0 zn|j#|d02 zP3 dH W } rʈs q r2 W W d  I dH  W W |r z|tj W n t
tfy   Y n0 nttj| dS t$|d1r|j%d j&}|j'rbt|j'd!dd2 |j(r|j(D ]\}|j)rtd3|j) d4d!d |jjrt|jj dd |jj*rpt|jj* d!d qpn&td5|j d6|j+ d7|j' d8dd. q6 t  W nL t,yP } z2t-. }td9| d7| d:dd. dW Y d}~n
d}~0 0 qW d  I dH  q1 I dH sz0    Y  W nL t,y } z2t-. }td;| d7| d:dd. |W Y d}~n
d}~0 0 W |rz|tj W n t
tfy   Y n0 nttj| nB|rJz|tj W n t
tfyF   Y n0 nttj| 0 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` 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   ^/var/www/html/assistant/venv/lib/python3.9/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add_signal_handlerAttributeErrorNotImplementedErrorlenr   r   itemsadd
isinstancestrreplaceupperr   stripis_setZremove_signal_handler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@   
&




e
&



5

!



PrY   zPath 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y<   tddd tjddY n< tyv } z$td| ddd |W Y d }~n
d }~0 0 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