Ë
    ãß²j„  ã                   óT   — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZ d„ Zd„ Zy)	zBRoute connector calls through the normal dispatch policy pipeline.é    N)Úasdict)Ú
tool_error)ÚMAX_CALLS_PER_DISPATCH)Úassemble_resultsÚfill_remote_failureÚpartition_callsc                 óê   — ddl m} t        | |dœg«      } ||j                  |d d ¬«      }|d   }t	        j
                  |j                  «       D ��ci c]  \  }}|dv sŒ||“Œ c}}d¬«      S c c}}w )Nr   )Ú
run_remote)ÚnameÚ	arguments)ÚavailabilityÚclient_factory>   ÚerrorÚresponseF©Úensure_ascii)Útools.connectors.gateway.bridger
   r   ÚremoteÚjsonÚdumpsÚitems)	r   r   Útool_call_idr
   Ú	partitionÚentriesÚentryÚkeyÚvalues	            ú>/home/ubuntu/.hermes/hermes-agent/tools/connectors/dispatch.pyÚdispatch_connector_callr      sq   € Ý:ä¨$¸YÑ!GÐ HÓI€IÙ˜×)Ñ)¨<ÀdÐ[_Ô`€GØ�A‰J€EÜ�:‰:°E·K±K³M×b¡j c¨5ÀSÐLaÒEa�s˜E‘zÓbØ#(ô*ð *ùÓbs   ÁA/
Á A/
c                óþ  — ddl m} ddlm} t	        | «      t
        kD  rt        dt	        | «      › dt
        › d�«      S t        | «      }	|	j                  rddl	m
}
 t         |
| «      «      S t        |	j                  «      }t        |	j                  «      D �]*  \  }} |«       r,|j                  t!        |	j                  |d  dd	¬
«      «        nô ||j"                  |j$                  fi t'        |«      ¤||t        |«      ddd||dœ¤Ž}	 t)        |t*        «      rt-        j.                  |«      n|}|j2                  |j"                  dœ}t)        |t4        «      r-d|v r)|d   }t)        |t4        «      r|ndt+        |«      dœ|d<   n't)        |t4        «      r|j7                  d|«      n||d<   |j9                  |«       �Œ- t-        j:                  t=        t	        | «      |«      d¬«      S # t0        $ r |}Y ŒÈw xY w)Nr   )Úhandle_function_call)Úis_interruptedztoo many calls: z > max z#. Retry with fewer calls per batch.)Úlocal_batch_errorz.Stopped by the user before this call was made.ÚINTERRUPTED)ÚcodeF)Ú	user_taskÚenabled_toolsÚtool_request_middleware_traceÚskip_pre_tool_call_hookÚskip_tool_request_middlewareÚskip_tool_execution_middlewareÚenabled_toolsetsÚdisabled_toolsets)Úindexr   r   Ú
TOOL_ERROR)r%   Úmessager   r   )Úmodel_toolsr!   Útools.interruptr"   Úlenr   r   r   ÚlocalÚtools.tool_search_validationr#   ÚlistÚerrorsÚ	enumerater   Úextendr   r   r   r   Ú
isinstanceÚstrr   ÚloadsÚ
ValueErrorÚpositionÚdictÚgetÚappendr   r   )ÚcallsÚidsr&   r'   Úmiddleware_tracer,   r-   r!   r"   r   r#   r   ÚoffsetÚplanÚpayloadr   r   r   s                     r   Údispatch_connector_batchrH      sÛ  € å0Ý.ä
ˆ5ƒzÔ*Ò*ÜÐ,¬S°«Z¨L¸Ô@VÐ?Wð X>ð >ó ?ð 	?ä Ó&€IØ‡‚ÝBÜÑ+¨EÓ2Ó3Ð3Ü�9×#Ñ#Ó$€GÜ! )×"2Ñ"2Ó3ó ‰ˆ�ÙÔà�N‰NÔ.Ø× Ñ   Ð)Ð+[Ø"ô$ô %ñ á&Ø�I‰I�t—~‘~ñ
Ü)/°«ð
Ø@IØ'ÄtÐL\ÓG]Ø$)ÈØ+0Ø-ÐARó
ˆð	Ü+5°g¼sÔ+C”D—J‘J˜wÔ'ÈˆEð Ÿ-™-°·±Ñ;ˆÜ�eœTÔ" w°%Ñ'7Ø˜'‘NˆEÜ&0°¼Ô&=™UÈLÔehÐinÓeoÑCpˆE�'ŠNä@JÈ5ÔRVÔ@W §	¡	¨*°eÔ <Ð]bˆE�*ÑØ�‰�uÖð3ô4 �:‰:Ô&¤s¨5£z°7Ó;È%ÔPÐPøô ò 	ØŠEð	ús   Ä'G.Ç.G<Ç;G<)Ú__doc__r   Údataclassesr   Útools.registryr   Útools.connectors.gateway.configr   Útools.connectors.gateway.merger   r   r   r   rH   © ó    r   ú<module>rP      s%   ðÙ Hã Ý å %Ý Bß aÑ aò*ó'QrO   