§
    ÷žyj  ã                  ó¨   — d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ  ej        e¦  «        Zddœdd„Zdd„Zdd„Zdd„ZdS )z2Core NeMo Relay adapter for Hermes tool execution.é    )ÚannotationsN)ÚCallable)ÚAny)Úrelay_runtime)ÚmetadataÚ	tool_nameÚstrÚargsúdict[str, Any]ÚcallbackúCallable[[dict[str, Any]], Any]Ú
session_idr   údict[str, Any] | NoneÚreturnútuple[Any, dict[str, Any]]c               ó$  ‡‡‡‡‡‡— t          j        |¦  «        \  }}}|�|�|                     ¦   «         s ‰‰¦  «        ‰fS ‰Ši ŠdŠt          j        ¦   «         Šdˆˆˆˆˆˆfd„}	 t          |                     ||j        j        j	        | t          ‰¦  «        ||t          |pi ¦  «        ¬¦  «        ¦  «        }	nr# t          $ re}
‰�t          j        |
‰¦  «        r‰‚t          |
t          ¦  «        r1‰€/d‰v r+t                               dd	¬
¦  «         ‰d         ‰fcY d}
~
S ‚ d}
~
ww xY wd‰v r t#          |	‰d         ¦  «        r
‰d         ‰fS t          |	t$          ¦  «        r|	‰fS t'          j        t          |	¦  «        d¬¦  «        ‰fS )z?Run one tool call through Relay and return its final arguments.NÚ	next_argsr   r   c                óþ   •— t          | t          ¦  «        r| n‰Šdˆfd„}	 ‰                     ¦   «                              |‰¦  «        }n# t          $ r}|Š‚ d }~ww xY w|‰	d<   t          |¦  «        ‰	d<   ‰	d         S )	NÚ
final_argsr   r   r   c                ót   •— t          j        ¦   «         5   ‰| ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )N)r   Úmanaged_callback_guard)r   r   s    €ú7/home/ragecks/.hermes/hermes-agent/agent/relay_tools.pyÚguardedz(execute.<locals>.invoke.<locals>.guarded(   s…   ø€ õ
 Ô5Ñ7Ô7ð ,ð ,Ø�x 
Ñ+Ô+ð,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   •-­1´1ÚvalueÚjson)r   r   r   r   )Ú
isinstanceÚdictÚcopyÚrunÚBaseExceptionÚ	_jsonable)
r   r   ÚresultÚexcr
   r   Úcallback_contextÚcallback_errorÚobserved_argsÚ
raw_results
       €€€€€€r   Úinvokezexecute.<locals>.invoke$   s±   ø€ å%/°	½4Ñ%@Ô%@ÐJ˜	˜	Àdˆð	,ð 	,ð 	,ð 	,ð 	,ð 	,ð	Ø%×*Ò*Ñ,Ô,×0Ò0°¸-ÑHÔHˆFˆFøÝð 	ð 	ð 	Ø ˆNØøøøøð	øøøð %ˆ
�7ÑÝ& vÑ.Ô.ˆ
�6ÑØ˜&Ô!Ð!s   ¢(A Á
AÁAÁA)Úhandler   r   z_NeMo Relay tool post-processing failed after dispatch success; returning the Hermes tool resultT)Úexc_infor   F)Úensure_ascii)r   r   r   r   )r   Úresolve_execution_contextÚmanaged_execution_enabledÚcontextvarsÚcopy_contextÚ_run_awaitableÚrun_in_session_asyncÚrelayÚtoolsÚexecuter!   r    Ú _is_relay_wrapped_callback_errorr   Ú	ExceptionÚloggerÚwarningÚ_json_equalr	   r   Údumps)r   r
   r   r   r   ÚruntimeÚsessionÚparentr(   Úmanagedr#   r$   r%   r&   r'   s    ``        @@@@r   r4   r4      s  øøøøøø€ õ  -ÔFÀzÑRÔRÑ€GˆW�fØ€˜'˜/°×1RÒ1RÑ1TÔ1T˜/Øˆx˜‰~Œ~˜tÐ#Ð#à€MØ!#€JØ+/€NÝ"Ô/Ñ1Ô1Ðð"ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð*Ý Ø×(Ò(ØØ”Ô#Ô+ØÝ˜$‘”ØØÝ" 8 >¨rÑ2Ô2ð )ñ ô ñ

ô 

ˆˆøõ ð ð ð àÐ&ÝÔ>¸sÀNÑSÔSð 'ð !Ð å�s�IÑ&Ô&ð
	6àÐ&Ø˜:Ð%Ð%å�NŠNð3àð ñ ô ð ð
 ˜gÔ&¨Ð5Ð5Ð5Ð5Ð5Ð5Ð5Øøøøøð#øøøð& �*ÐÐ¥¨W°jÀÔ6HÑ!IÔ!IÐØ˜'Ô" MÐ1Ð1Ý�'�3ÑÔð &Ø˜Ð%Ð%ÝŒ:•i Ñ(Ô(°uÐ=Ñ=Ô=¸}ÐLÐLs&   Á)AB> Â>
D-ÃAD(Ä!D-Ä'D(Ä(D-r   r   c                óˆ  — | �(t          | t          t          t          t          f¦  «        r| S t          | t
          ¦  «        rd„ |                      ¦   «         D ¦   «         S t          | t          t          t          f¦  «        rd„ | D ¦   «         S t          | dd ¦  «        }t          |¦  «        rS	 	 t           |dd¬¦  «        ¦  «        S # t          $ r t           |¦   «         ¦  «        cY S w xY w# t          $ r Y nw xY w	 t          t          | ¦  «        ¦  «        S # t          t           f$ r t          | ¦  «        cY S w xY w)Nc                óN   — i | ]"\  }}t          |¦  «        t          |¦  «        “Œ#S © )r	   r!   )Ú.0ÚkeyÚitems      r   ú
<dictcomp>z_jsonable.<locals>.<dictcomp>c   s*   € ÐIÐIÐI©i¨c°4•�C‘”�) D™/œ/ÐIÐIÐIó    c                ó,   — g | ]}t          |¦  «        ‘ŒS rA   )r!   )rB   rD   s     r   ú
<listcomp>z_jsonable.<locals>.<listcomp>e   s   € Ð2Ð2Ð2 D•	˜$‘”Ð2Ð2Ð2rF   Ú
model_dumpr   F)ÚmodeÚwarnings)r   r	   ÚintÚfloatÚboolr   ÚitemsÚlistÚtupleÚsetÚgetattrÚcallabler!   Ú	TypeErrorr6   ÚvarsÚAttributeError)r   rI   s     r   r!   r!   _   sg  € Ø€}�
 5­3µµU½DÐ*AÑBÔB€}ØˆÝ�%�ÑÔð JØIÐI¸5¿;º;¹=¼=ÐIÑIÔIÐIÝ�%�$¥¥sÐ+Ñ,Ô,ð 3Ø2Ð2¨EÐ2Ñ2Ô2Ð2Ý˜ ¨dÑ3Ô3€JÝ�
ÑÔð 	ð	ð/Ý   °À%Ð!HÑ!HÔ!HÑIÔIÐIøÝð /ð /ð /Ý   ¡¤Ñ.Ô.Ð.Ð.Ð.ð/øøøøåð 	ð 	ð 	ØˆDð	øøøðÝ�˜e™œÑ%Ô%Ð%øÝ•~Ð&ð ð ð Ý�5‰zŒzÐÐÐðøøøs<   Â0C
 Ã
!C.Ã+C1 Ã-C.Ã.C1 Ã1
C>Ã=C>ÄD Ä EÅ EÚleftÚrightrN   c                óÒ   — 	 t          j        t          | ¦  «        dd¬¦  «        t          j        t          |¦  «        dd¬¦  «        k    S # t          t          f$ r	 | |k    cY S w xY w)NT)Ú,ú:)Ú	sort_keysÚ
separators)r   r:   r!   rU   Ú
ValueError)rX   rY   s     r   r9   r9   w   s‚   € ðÝŒzÝ�d‰OŒO t¸
ð
ñ 
ô 
åŒZ�	 %Ñ(Ô(°DÀZÐPÑPÔPòQð 	Qøõ •zÐ"ð ð ð Ø�uŠ}ÐÐÐðøøøs   ‚A	A ÁA&Á%A&c                ó¾   — t          j        | ¦  «        s| S 	 t          j        ¦   «          n$# t          $ r t          j        | ¦  «        cY S w xY wt	          d¦  «        ‚)NzQSynchronous Hermes Relay tool execution cannot run on an active event-loop thread)ÚinspectÚisawaitableÚasyncioÚget_running_loopÚRuntimeErrorr   )r   s    r   r0   r0   €   sw   € ÝÔ˜uÑ%Ô%ð Øˆð"ÝÔ Ñ"Ô"Ð"Ð"øÝð "ð "ð "ÝŒ{˜5Ñ!Ô!Ð!Ð!Ð!ð"øøøå
Ø[ñô ð s   ˜, ¬AÁA)r   r	   r
   r   r   r   r   r	   r   r   r   r   )r   r   r   r   )rX   r   rY   r   r   rN   )Ú__doc__Ú
__future__r   rc   r.   ra   r   ÚloggingÚcollections.abcr   Útypingr   Úagentr   Ú	getLoggerÚ__name__r7   r4   r!   r9   r0   rA   rF   r   ú<module>rn      s  ðØ 8Ð 8à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð '+ðJMð JMð JMð JMð JMð JMðZð ð ð ð0ð ð ð ð	ð 	ð 	ð 	ð 	ð 	rF   