
    wi%                        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	
          Z ej        ddd          Ze                    ed           dee         ddfdZe                                 ej        ddd          fdee         fd            Zedk    r e             dS 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.)rich_markup_modehelprunzRun the Agent in the CLIT)namer   invoke_without_command)r   
agent_pathreturnc                 l   !"K   t                       t          |           \  }}|                    dg           }|                    dg           }t          j                     t          j                    !d"t          j                    }t          j        t          j                  }d: !"fd	 d}	 |	                    t          j                   d}n9# t          t          f$ r% t          j        t          j        fd           Y nw xY wi }t          |          d	k    rt          d
           |D ]}	|	d         }
|	d         }d|
 d}t                      }|D ]m}|d         dk    r|                    di           n|                    di           }|                                D ]\  }}||v r|                    |           n|                    d          }t#          |t$                    r||v r|                    d           |st          d|
 d           |
                    dd                                          }t          d|
 d| d| dd           t+          !           d{V                                 }!                                r^ |r:	 |                    t          j                   dS # t          t          f$ r Y dS w xY wt          j        t          j        |           dS |}|s>t3          j        |d          }|rt          d | d!           nt          d"| d#           |||
<   |D ]w}|d         dk    r|                    di           n|                    di           }|                                D ](\  }}||v r||                             ||          ||<   )xt                       |                    d          }t#          |t$                    r;|}|                                D ]\  }
}|                    d|
 d|          } ||d<   t7          |                    d$          |                    d%          |                    d&          |                    d          ||'          4 d{V 	 }|                                 d{V  t          d(t          |j                   d)           |j        D ]}t          d|j        j         d*            	                                    !                                ro	 ddd          d{V  |r:	 |                    t          j                   dS # t          t          f$ r Y dS w xY wt          j        t          j        |           dS 	 t+          !           d{V }d"nW# tB          $ r t          d+d,           Y n:tD          $ r- "s                                 rY t          d-d,           Y nw xY w	 |#                    | .          2 3 d{V }                                 r"s nt!                                ro ddd          d{V  |r:	 |                    t          j                   dS # t          t          f$ r Y dS w xY wt          j        t          j        |           dS tI          |d/          r|j%        d	         j&        }|j'        rt          |j'        dd0           |j(        r{|j(        D ]s}|j)        rt          d1|j)         d2d           |j        j        rt          |j        j         d           |j        j*        rt          |j        j*         d           tgt          d3|j         d4|j+         d5|j'         d6d,           6 t                       nD# tX          $ r7}t[          j.                    }t          d7| d5| d8d,           d"Y d}~nd}~ww xY w		 ddd          d{V  n# 1 d{V swxY w Y   n?# tX          $ r2}t[          j.                    }t          d9| d5| d8d,           |d}~ww xY w|r:	 |                    t          j                   dS # t          t          f$ r Y dS w xY wt          j        t          j        |           dS # |r8	 |                    t          j                   w # t          t          f$ r Y w w xY wt          j        t          j        |           w xY w);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serversTr   Nc                      r)d                                   t          dd           d S t          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_sigints   z/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/huggingface_hub/inference/_mcp/cli.py_sigint_handlerz"run_agent.<locals>._sigint_handler5   sd     	 LOOIQUVVVVF't4444    Fc                                   S )N )_r   s    r   <lambda>zrun_agent.<locals>.<lambda>G   s    OO4E4E r   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:}typestdioenvheaders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modelendpointUrl)r/   r0   base_url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   N)/r   r	   getasyncioEventget_running_loopsignal	getsignalSIGINTadd_signal_handlerAttributeErrorNotImplementedErrorlenr   r   itemsadd
isinstancestrreplaceupperr   stripis_setremove_signal_handlerosgetenvr   
load_toolsavailable_toolsfunctionr   clearEOFErrorKeyboardInterruptr   hasattrr5   deltacontent
tool_callsr#   	argumentstool_call_id	Exception	traceback
format_exc)#r   configr4   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chunkrW   calletb_strr   r   r   r   s#                                  @@@@r   	run_agentrx      s      '
33NFFZZ"%%FjjB''G-//KJL#%%D$.v}==	 	 	 	 	 	 	 	]B$)!	G##FM?CCC(,%% 34 	G 	G 	GM&-)E)E)E)EFFFFF	G
 +-v;;??V   % 4n 4n
%d+(7$<$<$<$<!  #uu% 2 2F>DVnPW>W>WVZZr%:%:%:]c]g]ghqsu]v]vN&4&:&:&<&< 2 2
U,55(,,S1112 %jj22k3// /4E4T4T $$X...# .( . . .    $,#3#3C#=#=#C#C#E#E l(ll[llXhlll    %2Z$H$H$HHHHHHHOOQQ
$$&& J % 	B**6=99999"$78    M&-)@AAAAAQ )" "$),<b"A"AK" cHXcccdddd};K}}}   -8) & n nF>DVnPW>W>WVZZr%:%:%:]c]g]ghqsu]v]vN&4&:&:&<&< n n
U,552@2E2M2MN_al2m2mN3/nn GGGjj**k3'' 	3"-!0!6!6!8!8 a a#&9&A&ABZhBZBZBZ\_&`&`##2F8ZZ
++**W%%ZZ..JJx((
 
 
 ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ""$$$$$$$$$a#e6K2L2Laaabbb* > ><AJO<<<====2(!!### $$&& %?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	(N % 	B**6=99999"$78    M&-)@AAAAAs'4
'K'K'K!K!K!K!K!K!KJ#'LL   ?tLLLLE(   ' K,>,>,@,@  X`deeee(',yyy'U'U       e&--// " "!E%,,.. #"M?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	(N % 	B**6=99999"$78    M&-)@AAAAAK #5)44 $)M!$4$:E$} I %em4 H H H H$/ T,1,< !T !TD'+w %K(-.Atw.A.A.Ar(J(J(J(J'+}'9 %P(-1C.E3(O(O(O(O'+}'> %T(-1H.JPR(S(S(S(S! p5: p pAS p pW\Wd p p p&*    ' (V0 GGGG  ( ( (&133FYYYfYYYaeffff#'LLLLLL(_2( 2(?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	( ?	(B    %''S1SSSSS[_```` % 	B**6=99999"$78    M&-)@AAAAA % 	B**6=9999"$78    M&-)@AAAAsl  5`< 8"C `< 3D`< DF`< .K K$#K$F`< &B`*7`< U, ,V V&V?>`*?X`*X<`*>X`*X`*_._4/_#`< 7Z Z-,Z-C?_`*
`-``*``*`< *
`44`< 7`48`< ;c <
a8-a33a88c >b b43b4d3c<;d3<dd3d#d3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                     	 t          j        t          |                      d S # t          $ r' t	          dd           t          j        d          t          $ r}t	          d| dd           |d }~ww xY w)Nz8
[red]Application terminated by KeyboardInterrupt.[/red]Tr      )coder9   r8   )r;   r   rx   rU   r   typerExitr\   )rz   rv   s     r   r   r      s    IdOO$$$$$ # # #IQUVVVVjc""""   I1IIIQUVVVVs   !% 9A:A55A:__main__)r;   rN   r>   r]   typingr   r~   r
   r   
_cli_hacksr   r   rr   r   utilsr	   Typerapprun_cli	add_typerrH   rx   callbackArgumentr   __name__r    r   r   <module>r      s    				                   @ @ @ @ @ @ @ @       % % % % % % ek	t  
 %+		#  
 gE " " "ABAB	AB AB AB ABH 	(%.H    
3-   * zCEEEEE r   