o
    eiS&                     @   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 dee ddfddZe ejddddfdee fddZedkrse  dS dS )    N)Optional   )ANSI   )_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.)rich_markup_modehelprunzRun the Agent in the CLIT)namer   invoke_without_command)r   
agent_pathreturnc                    s  t   t| \}}|dg }|dg }t t dt }ttj}d8fdd zoz'd}z|	tj  d}W n t
tfyZ   ttj fd	d
 Y nw i }t|dkrtttd |D ]
}	|	d }
|	d }d|
 d}t }|D ]&}|d dkr|di n|di }| D ]\}}||v r|| qq|d}t|tr||v r|d |sttd|
 d qp|
dd }ttd|
 d| d| d dd td I dH  } r  W W |rz	|tj W dS  t
tfy   Y dS w ttj| dS |}|sEt|d!}|r:ttd"| d# nttd$| d% |||
< |D ]/}|d dkrZ|di n|di }| D ]\}}||v rw|| ||||< qdqKqpt  |d}t|tr|}| D ]\}
}|d|
 d|}q||d< t |d&|d'|d(|d||d)4 I dH }|! I dH  tttd*"t|j# |j#D ]}ttd|j$j%  q	 &   r#	 W d  I dH  W W |rz	|tj W dS  t
tfy   Y dS w ttj| dS ztd I dH }dW n1 t'yC   tt(d+dd, Y n t)y`   sU rUY qtt(d-dd, Y nw z|j*|d.2 z3 dH W } rysy n r W W d  I dH  W W |rz	|tj W dS  t
tfy   Y dS w ttj| dS t+|d/r|j,d j-}|j.rt|j.d!dd0 |j/r|j/D ].}|j0rtd1|j0 d2d!d |j$j%rt|j$j% dd |j$j1rt|j$j1 d!d q͐qittd3|j% d4|j2 d5|j. d5dd, qi6 t  W n( t3yC } zt45 }tt(d6| d5| dd, dW Y d}~nd}~ww qW d  I dH  n1 I dH sWw   Y  W n" t3y } zt45 }tt(d7| d5| dd, |d}~ww W |rz	|tj W dS  t
tfy   Y dS w ttj| dS |rz|tj W w  t
tfy   Y w w ttj| w )9z
    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serversTr   Nc                      sD   rd    ttddd d S ttddd    d S )NFz)
Interrupted. Press Ctrl+C again to quit.Tflushz
Exiting...)setprintr   red )abort_event
exit_eventfirst_sigintr   `/home/ubuntu/transcripts/venv/lib/python3.10/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   s    zrun_agent.<locals>.<lambda>r   zfSome initial inputs are required by the agent. Please provide a value or leave empty to load from env.iddescriptionz${input:}typestdioenvheadersapiKeyzInput 'zJ' defined in config but not used by any server or as an API key. Skipping.-r   u    • z: z. (default: load from z). )end)r    z Value successfully loaded from ''zNo value found for 'z'' in environment variables. Continuing.providermodelendpointUrl)r.   r/   base_urlapi_keyr   promptzAgent loaded with {} tools:z
EOF received, exiting.r   z,
Keyboard interrupt during input processing.)r   choices)r+   r   z<Tool >z

Tool[z] 
z
Error during agent run: 
An unexpected error occurred: )r   N)6r   r	   getasyncioEventget_running_loopsignal	getsignalSIGINTadd_signal_handlerAttributeErrorNotImplementedErrorlenr   r   boldbluer   itemsadd
isinstancestryellowreplaceupperr   stripis_setremove_signal_handlerosgetenvgreenr   
load_toolsformatavailable_toolsfunctionr   clearEOFErrorr   KeyboardInterruptr   hasattrr4   deltacontent
tool_callsr!   	argumentstool_call_id	Exception	traceback
format_exc)r   configr3   r   r   looporiginal_sigint_handlersigint_registered_in_loopresolved_inputs
input_iteminput_idr"   env_special_valueinput_usagesserverenv_or_headerskeyvalueraw_api_keyenv_variable_key
user_inputfinal_valuesubstituted_api_keyvalagenttchunkrZ   calletb_strr   )r   r   r   r   r   	run_agent   s~  
$



 
g
&

 

G
G


"

*Ar{   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   show_defaultpathc              
   C   st   z
t t|  W d S  ty    ttddd tjdd t	y9 } zttd| dd |d }~ww )Nz-
Application terminated by KeyboardInterrupt.Tr      )coder7   )
r9   r   r{   rX   r   r   r   typerExitr_   )r}   ry   r   r   r   r      s   __main__)r9   rO   r<   r`   typingr   r   utilsr   
_cli_hacksr   r   ru   r   r	   Typerapprun_cli	add_typerrH   r{   callbackArgumentr   __name__r   r   r   r   <module>   sL    
 M
