
    PL
j                       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	Z	ddl
Z
ddlZddlmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZmZmZmZ ddlm Z m!Z!m"Z#m$Z%m&Z& dd	l'm(Z(m)Z)  ej*        e+          Z,d
Z-d Z.dddZ/dddZ0ddgZ1dS )u  Tool-call execution — sequential and concurrent dispatch.

Both AIAgent methods (``_execute_tool_calls_sequential`` and
``_execute_tool_calls_concurrent``) live here as module-level
functions that take the parent ``AIAgent`` as their first argument.

``run_agent`` keeps thin wrappers so existing call sites work; tests
that patch ``run_agent._set_interrupt`` are honored because the
extracted functions reach back through the ``run_agent`` module via
``_ra()`` for that symbol.
    )annotationsN)AnyOptional)KawaiiSpinnerbuild_tool_previewget_cute_tool_messageget_tool_emoji_detect_tool_failure)ToolGuardrailDecision)_is_destructive_command_is_multimodal_tool_result_multimodal_text_summary!_append_subdir_hint_to_multimodal)_get_approval_callback_get_sudo_password_callbackset_approval_callbackset_sudo_password_callbackget_active_env)maybe_persist_tool_resultenforce_turn_budget   c                     ddl } | S )zRLazy reference to ``run_agent`` so patches like ``run_agent._set_interrupt`` work.r   N	run_agentr   s    7/home/kuhnn/.hermes/hermes-agent/agent/tool_executor.py_rar   :   s        messageslisteffective_task_idstrapi_call_countintreturnNonec                &   ;<=>? |j         }t          |          } j        rXt           j         d| d           |D ]9}                    d|j        j        d|j        j         d|j        d           :dS g >|D ]0}|j        j        }	|	dk    rd	 _	        n|	d
k    rd	 _
        	 t          j        |j        j                  }
n# t          j        $ r i }
Y nw xY wt          |
t                     si }
|	dv rn j        j        rb	 |
                    dd          }|r8 j                            |          } j                            |d|	            n# t,          $ r Y nw xY w|	dk    r j        j        r	 |
                    dd          }t/          |          ra|
                    d          p%t1          j        dt1          j                              } j                            |d|dd                     n# t,          $ r Y nw xY wd}d}	 d	dlm}  ||	|
pd          }n# t,          $ r d}Y nw xY w|t          j        d|id          }n9 j                            |	|
          }|j         s !                    |          }d}>                    ||	|
||f           2d"                    d >D                       } j#        s't          d| d|            tI          >d          D ] \  }\  }}}}}t          j        |d          } j%        rqt          d | d!| d"tM          |'                                           d#           t           (                    d$t          j        |d%d&                               t          |           j)        k    r|d j)                 d'z   n|}t          d | d!| d"tM          |'                                           d(|            >D ]j\  }}}}}| j*        rX	 tW          ||          } *                    d)|||           <# t,          $ r!}tY          j-        d*|            Y d}~bd}~ww xY wk>D ]^\  }}}}}| j.        rL	  .                    |j        ||           0# t,          $ r!}tY          j-        d+|            Y d}~Vd}~ww xY w_dg|z  ?tI          >          D ]\  }\  }}}}}||||d,ddf?|<   | _/         0                    d-| d.|            tc                      ;te                      <;< ?fd/}d} 3                                rj 4                                rVtk          j6        to          j8                              }to          | d0| d1d2 j9        3          }|:                                 	 d4 tI          >          D             }g =|rtw          t          |          tx                    } tz          j>        ?                    | 5          5 }!|D ]N\  }}}}t          jA                    }"|!B                    |"jC        |||||          }#=                    |#           Ot          jD                    }$d}%	 tz          j>        E                    =d67          \  }&}'|'sn j        rn|%s1d}% F                     j         d8t          |'           d9d:           |'D ]}#|#G                                 tz          j>        E                    |'d;7           nt          t          jD                    |$z
            }(|(d	k    r_|(d<z  d=k     rV=>fd>|'D             }) 0                    d?|( d@t          |'           dAd"                    |)ddB                    d#           &ddd           n# 1 swxY w Y   |rRt          dC ?D                       }*t          dD ?D                       }+|J                    dE|* dF| dG|+dHdI           nZ# |rSt          dC ?D                       }*t          dD ?D                       }+|J                    dE|* dF| dG|+dHdI           w w xY wtI          >          D ]\  }\  }}}}}?|         },d}-|, j        rd| d}.ndJ| dK}.d,}/nW|,\  }	}
}.}/}0}-|-s K                    |	|
|.|0L          }.|0rKt          |.          }1t          |1          dMk    r
|1ddM         n|1}2t          N                    dN|	|/|2           |-sF	  O                    |	|
|.|0           n,# t,          $ r}3tY          j-        dO|3           Y d}3~3nd}3~3ww xY w|-sR j*        rK	  *                    dP|	dd|/|0Q           n.# t,          $ r!}tY          j-        d*|            Y d}~nd}~ww xY w j%        rCtY          j-        dR|	 dS|/dTdU           tY          j-        dVt          |.           dW|.             3                                r,t          |||/|.X          }4 Q                    dY|4            n j#        st          |.          }5 j%        r>t          dZ|dz    dS|/dTdU           t           (                    d[|5                     nHt          |5           j)        k    r|5d j)                 d'z   n|5}6t          dZ|dz    dS|/dTd\|6            d _/         0                    d]| d^|/dHd_           |-sT jR        rM	  R                    |j        |||.           n.# t,          $ r!}tY          j-        d`|            Y d}~nd}~ww xY wt          |.          s%t          |.||j        t                    a          n|.}. jV        W                    ||          }7|7r%t          |.          rt          |.|7           n|.|7z  }. Y                    ||.          }8d||8|j        d}9                    |9            Z                    d           t          >          }|d	k    r)| d         }:t          |:t                    b           |d	k    r Z                    |           dS dS )czExecute multiple tool calls concurrently using a thread pool.

    Results are collected in the original tool-call order and appended to
    messages so the API sees them in the expected sequence.
       ⚡ Interrupt: skipping  tool call(s)tool   [Tool execution cancelled — # was skipped due to user interrupt]rolenamecontenttool_call_idNmemoryr   skill_manage>   patch
write_filepath before terminalcommandworkdirTERMINAL_CWDbefore terminal: <   Fget_pre_tool_call_block_messagetask_iderrorensure_asciiTz, c              3  &   K   | ]\  }}}}}|V  d S N ).0_r.   s      r   	<genexpr>z0execute_tool_calls_concurrent.<locals>.<genexpr>   s-      II(84AqtIIIIIIr   u     ⚡ Concurrent: u    tool calls —         📞 Tool : ()Args:    indentrD   ...) - tool.startedTool progress callback error: Tool start callback error:         z
executing z tools concurrently: c                &   t          j                    j        }j        5  j                            |           ddd           n# 1 swxY w Y   j        r4	 t                                          d|           n# t          $ r Y nw xY w	 ddl
m}  |j                   n# t          $ r Y nw xY w!	 t                     n# t          $ r Y nw xY w!	 t                     n# t          $ r Y nw xY wt          j                    }	                     |||j        d          }n=# t          $ r0}d| d| }t$                              d||d	           Y d}~nd}~ww xY wt          j                    |z
  }	t)          ||          \  }
}|
r&t$                              d
||	|dd                    n*t$                              d||	t-          |                     ||||	|
df| <   j        5  j                            |           ddd           n# 1 swxY w Y   	 t                                          d|           n# t          $ r Y nw xY w	 t          d           t          d           dS # t          $ r Y dS w xY w)z%Worker function executed in a thread.NTr   set_activity_callback)r   pre_tool_block_checkedError executing tool '': z_invoke_tool raised for %s: %sexc_infoztool %s failed (%.2fs): %s   #tool %s completed (%.2fs, %d chars)F)	threadingcurrent_threadident_tool_worker_threads_lock_tool_worker_threadsadd_interrupt_requestedr   _set_interrupt	Exceptiontools.environments.baser\   _touch_activity_set_approval_callback_set_sudo_password_callbacktime_invoke_toolidloggerrB   r
   infolendiscard)index	tool_callfunction_namefunction_args_worker_tidr\   startresult
tool_errordurationis_errorrI   _parent_approval_cb_parent_sudo_cbagentr    r   resultss               r   	_run_toolz0execute_tool_calls_concurrent.<locals>._run_tool   s   
  .006, 	8 	8&**;777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 % 	$$T;7777   	EEEEEE!!%"78888 	 	 	D	 *&':;;;;   &+O<<<<   		e''!!'+ (  FF  	e 	e 	eLmLL
LLFLL9=*_cLdddddddd	e 9;;&*=&AA! 	eKK4mXvVZWZVZ|\\\\KK=}hX[\bXcXcddd'(TYZ , 	< 	<&..{;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	EE  4444 	 	 	D		"4((('----- 	 	 	DD	s   AAA"A> >
B
BB& &
B32B39C	 	
CCC, ,
C98C9 D1 1
E+;&E&&E+;H""H&)H&."I 
II"J 
JJu    ⚡ running z tools concurrentlydotsspinner_typeprint_fnc                0    g | ]\  }\  }}}}}|||||fS rF   rG   )rH   itcr.   argsblock_resultblocked_by_guardrails          r   
<listcomp>z1execute_tool_calls_concurrent.<locals>.<listcomp>  sA     
 
 
GGBdL2F# D$###r   )max_workersg      @)timeoutu   ⚡ Interrupt: cancelling z pending concurrent tool(s)forceg      @      c                Z    g | ]'}|v                      |                   d          (S )rK   )rx   )rH   ffuturesparsed_callss     r   r   z1execute_tool_calls_concurrent.<locals>.<listcomp>L  s@     * * * ! G|| )q)9)9:1=+||r   zconcurrent tools running (zs, z remaining:    c              3     K   | ]}|dV  	d S )NrK   rG   rH   rs     r   rJ   z0execute_tool_calls_concurrent.<locals>.<genexpr>X  s"      @@!!-A----@@r   c              3  *   K   | ]}||d         V  d S )Nr   rG   r   s     r   rJ   z0execute_tool_calls_concurrent.<locals>.<genexpr>Y  s&      CCQQ]AaD]]]]CCr   u   ⚡ /z tools completed in .1fzs totalr^   z!': thread did not return a resultfailedrb   "Tool %s returned error (%.2fs): %s(file-mutation verifier record failed: %stool.completedr   r   Tool  completed in .2fsTool result (	 chars): r~          ✅ Tool Result: s - tool completed:  (s)Tool complete callback error: r/   	tool_nametool_use_idenvr   )\
tool_callsrv   rj   print
log_prefixappendfunctionr.   rs   _turns_since_memory_iters_since_skilljsonloads	argumentsJSONDecodeError
isinstancedict_checkpoint_mgrenabledgetget_working_dir_for_pathensure_checkpointrl   r   osgetenvgetcwdhermes_cli.pluginsr?   dumps_tool_guardrailsbefore_callallows_execution_guardrail_block_resultjoin
quiet_mode	enumerateverbose_loggingr   keys_wrap_verboselog_prefix_charstool_progress_callback_build_tool_previewloggingdebugtool_start_callback_current_toolrn   r   r    _should_emit_quiet_tool_messages_should_start_quiet_spinnerrandomchoicer   get_waiting_faces	_print_fnr}   min_MAX_TOOL_WORKERS
concurrentr   ThreadPoolExecutorcontextvarscopy_contextsubmitrunrq   wait_vprintcancelr#   sumstop_append_guardrail_observationr   rt   warning_record_file_mutation_result_get_cute_tool_message_impl_safe_printtool_complete_callbackr   r   r   _subdirectory_hintscheck_tool_callr   %_tool_result_content_for_active_model$_apply_pending_steer_to_tool_resultsr   )@r   assistant_messager   r    r"   r   	num_toolsr   ry   rz   r{   	file_pathwork_dircmdcwdr   r   r?   block_messageguardrail_decisiontool_names_strr   r.   r   args_strargs_previewpreviewcb_errr   spinnerfacerunnable_callsr   executorctxr   _conc_start_interrupt_loggeddonenot_done_conc_elapsed_still_running	completed	total_durr   blockedfunction_resulttool_durationr   	_err_textresult_preview_ver_errcute_msg_preview_strresponse_previewsubdir_hints_tool_contenttool_msgturn_tool_msgsr   r   r   r   r   s@   ` ``                                                       @@@@@r   execute_tool_calls_concurrentr)  @   s    #-JJI ! 	!SS9SSSTTT 	 	BOO(qBK<Lqqq "	      	 L 8k 8k	!*/ H$$()E%%n,,'(E$	 Jy'9'CDDMM# 	 	 	MMM	-.. 	M 3338M8U3)--fb99	 a$4MMiXXH);;HF_P]F_F_```    J&&5+@+H&#''	266*3// '++I66`")NTVT]T_T_:`:`C);;;SbS;;       $	!JJJJJJ;;}6G6M2  MM  	! 	! 	! MMM	! $:w&>USSSLL!&!7!C!CMS`!a!a%6 ,$<<=OPP'+$Y}lThijjjj YYIILIIIIIN 	XN9NNnNNOOOGPQ]_`GaGa 	X 	XCACD$.Bz$U;;;H$ XEQEE$EEdiikk1B1BEEEFFFe))(DJtA\a4b4b4bccddddLOPXMM\a\rLrLrx(?)?(?@5HH  yAVQVV$VVdiikk1B1BVVVVWWWW>J I I:D$&:#' 	II-dD99,,^T7DQQQQ I I IGvGGHHHHHHHHI		I ?K F F:D$&:#$ 	FF))"%t<<<< F F FDFDDEEEEEEEEF	F fy GCL\CZCZ E E??BdL*>#lCtDGAJ )E	WyWW~WWXXX 122133OI I I I I I I I I IX G--// E4U4U4W4W }]<>>??4 T Ti T T Tcity  uD  E  E  ECc
 
KTUaKbKb
 
 

  6	c.113DEEK#66;6OO 4S[)7 & &%Ar4%244C Ar4NNANN1%%%% #ikk$)!&%/%7%<%< &= & &ND( $  1 0 04-!MM#(#3 !N !N#&x==!N !N !N&* *   
 "* ' 'AHHJJJJ #*//#/FFF$'	k(A$B$BM$q((]R-?!-C-C* * * * *%-* * *
 --[ [ ["8}}[ [:>))NSUTUSUDV:W:W[ [ [  G&4 4 4 4 4 4 4 4 4 4 4 4 4 4 4l  	c@@w@@@@@ICC'CCCCCILLa	aaIaa9aaaabbb	  	c@@w@@@@@ICC'CCCCCILLa	aaIaa9aaaabbbb		c DM\CZCZ l@ l@??BdL*>AJ9) c"l4"l"l"l"b4"b"b"bMM^_[M=/=(T[ "'"E"E!!##	 #F # #  s4_EE	47	NNS4H4H4C4iC]Tacqrrr
  XX66%}ox    ! X X XM"LhWWWWWWWWX  Mu; MM00(-t!. 1     ! M M MM"K6"K"KLLLLLLLLM $ `WmWW=WWWWXXX^c/.B.B^^_^^___ 1133 
	b24}UdeeeHo8oo....! 	b3ODDL$ bKAaCKK}KKKKLLLe))*lCCDDDDTWXdTeTehmh~T~T~<0G1G0G#H5#P#P  EQ `AaC``}```N^``aaa"NNNNNNNOOO 	I57 	II,,RUD$PPPP I I IGvGGHHHHHHHHI ,O<<R3#011	
 
 
 

 CR 	 0@@tLL 	0)/:: 0 2/<PPPP</ CCD/ZZ$E	
 
 	!!!
 	228Q???? L!!I1}}!9*++.N?P0Q0QRRRR 1}}228YGGGGG }s   -CC C AE
E)(E)?BH
HHH22I I(Q  
Q+
Q&&Q+R!!
S+SSA `! 'F_5`! _`! _	`! !Aa8.e
e0e++e0=f
g#f??g"m  
m+
m&&m+c                ,   t          |j        d          D ]\  }}| j        r||j        |dz
  d         }|r/|                     | j         dt          |           dd           |D ]3}|j        j        }	d|	d|	 d	|j        d
}
|	                    |
           4 ns|j        j        }	 t          j        |j        j                  }n5# t          j        $ r#}t          j        d|            i }Y d}~nd}~ww xY wt!          |t"                    si }d}	 ddlm}  ||||pd          }n# t(          $ r Y nw xY wd}|$| j                            ||          }|j        s|}|dup|du}|rn|dk    rd| _        n|dk    rd| _        | j        st          j        |d          }| j        rqt;          d| d| dt=          |                                           d           t;          |                      dt          j        |dd                               nft          |          | j!        k    r|d| j!                 dz   n|}t;          d| d| dt=          |                                           d|            |s|| _"        | #                    d|            |s(	 ddl$m%}  || j#                   n# t(          $ r Y nw xY w|s_| j&        rX	 tO          ||          }| &                    d|||           n.# t(          $ r!}t          j(        d |            Y d}~nd}~ww xY w|sS| j)        rL	 | )                    |j        ||           n.# t(          $ r!}t          j(        d!|            Y d}~nd}~ww xY w|sr|d"v rn| j*        j+        rb	 |,                    d#d          }|r8| j*        -                    |          }| j*        .                    |d$|            n# t(          $ r Y nw xY w|s|d%k    r| j*        j+        r	 |,                    d&d          }t_          |          ra|,                    d'          p%ta          j1        d(ta          j2                              }| j*        .                    |d)|dd*                     n# t(          $ r Y nw xY wtg          j3                    }|t          j        d+|id          }d,}nu|| 4                    |          }d,}nZ|d-k    rdd.l5m6}  ||,                    d/          |,                    d0d          | j7        1          }tg          j3                    |z
  }| 8                                r)|                     d2ts          d-|||3                      n|d4k    r| :                                } | s&dd5l;m<}! t          j        d |!            d6          }nVdd7l=m>}"  |"|,                    d8d          |,                    d9          |,                    d:d;          | | j?        <          }tg          j3                    |z
  }| 8                                r)|                     d2ts          d4|||3                      
n|dk    rY|,                    d=d          }#dd>l@mA}$  |$|,                    d?          |#|,                    d@          |,                    dA          | jB        B          }| jC        r|,                    d?          dCv r|	 | jC        D                    |,                    d?d          |#|,                    d@d          | E                    |t          |dDd          E          F           n# t(          $ r Y nw xY wtg          j3                    |z
  }| 8                                r)|                     d2ts          d|||3                      	nr|dGk    rddHlGmH}%  |%|,                    dId          |,                    dJ          | jI        K          }tg          j3                    |z
  }| 8                                r)|                     d2ts          dG|||3                      n|dLk    r|,                    dM          }&|&r)t!          |&t<                    rdNt          |&           dO}'n(|,                    dP          pdddQ         }(|(rdR|( ndS}'d})| 8                                ri| J                                rUt          jL        t          jN                              }*t          |* dT|' dU| jO        V          })|)P                                 |)| _Q        d}+	 | R                    |          }|}+d| _Q        tg          j3                    |z
  }ts          dL|||+3          },|)r|)S                    |,           n| 8                                r|                     d2|,            nQ# d| _Q        tg          j3                    |z
  }ts          dL|||+3          },|)r|)S                    |,           w | 8                                r|                     d2|,            w w xY w| jT        r|| jT        v rd})| 8                                ryt          jL        t          jN                              }*t          |          }-tO          ||          p|}t          |* dT|- dT| dU| jO        V          })|)P                                 d}.	 | jV        W                    |||W          }|}.nQ# t(          $ rD}/t          j        d+dX| dY|/ i          }t          Y                    dZ||/d[           Y d}/~/nd}/~/ww xY wtg          j3                    |z
  }ts          ||||.3          },|)r|)S                    |,           n| 8                                r|                     d2|,            nR# tg          j3                    |z
  }ts          ||||.3          },|)r|)S                    |,           w | 8                                r|                     d2|,            w w xY w| jC        r| jC        Z                    |          rd})| 8                                r| J                                ryt          jL        t          jN                              }*t          |          }-tO          ||          p|}t          |* dT|- dT| dU| jO        V          })|)P                                 d}0	 | jC        W                    ||          }|}0nQ# t(          $ rD}/t          j        d+d\| dY|/ i          }t          Y                    d]||/d[           Y d}/~/nd}/~/ww xY wtg          j3                    |z
  }ts          ||||03          },|)r|)S                    |,           ne| 8                                r|                     d2|,            n7# tg          j3                    |z
  }ts          ||||03          },|)r|)S                    |,           w | 8                                r|                     d2|,            w w xY w| j        rd})| 8                                r| J                                ryt          jL        t          jN                              }*t          |          }-tO          ||          p|}t          |* dT|- dT| dU| jO        V          })|)P                                 d}1	 t                      \                    ||||j        | j?        pd| j]        rt=          | j]                  ndd^          }|}1n=# t(          $ r0}/d_| d`|/ }t          Y                    da||/d[           Y d}/~/nd}/~/ww xY wtg          j3                    |z
  }ts          ||||13          },|)r|)S                    |,           nE| 8                                r|                     d2|,            n# tg          j3                    |z
  }ts          ||||13          },|)r|)S                    |,           w | 8                                r|                     d2|,            w w xY w	 t                      \                    ||||j        | j?        pd| j]        rt=          | j]                  ndd^          }n=# t(          $ r0}/d_| d`|/ }t          Y                    da||/d[           Y d}/~/nd}/~/ww xY wtg          j3                    |z
  }t!          |t                    r8| j        r|nt          |          dbk    r
|ddb         n|}2t          |          }3n|}2t          t          |                    }3t          ||          \  }4}5|sA| `                    ||||4c          }| j        r|nt          |          dbk    r
|ddb         n|}2|4rt                              dd|||2           nt          a                    de|||3           |sF	 | b                    ||||4           n,# t(          $ r}6t          j(        df|6           Y d}6~6nd}6~6ww xY w|sR| j&        rK	 | &                    dg|dd||4h           n.# t(          $ r!}t          j(        d |            Y d}~nd}~ww xY wd| _"        | #                    di| dj|dkdl           | j        rRt          j(        dm| dn|dodp           t          |          }7t          j(        dqt          |7           dr|7            |sT| jd        rM	 | d                    |j        |||           n.# t(          $ r!}t          j(        ds|            Y d}~nd}~ww xY wt          |          s%t          |||j        t          |          t          n|}| jh        i                    ||          }8|8r%t          |          rt          ||8           n||8z  }| k                    ||          }9d||9|j        d
}:|	                    |:           | l                    |d           | j        s| j        r;t;          du| dn|dodp           t;          |                      dv|                     nkt!          |t                    r|nt          |          };t          |;          | j!        k    r|;d| j!                 dz   n|;}<t;          du| dn|dodw|<            | j        r|t          |j                  k     r~t          |j                  |z
  }=|                     | j         d|= dxd           |j        |d         D ]3}|j        j        }	d|	dy|	 dz|j        d
}
|	                    |
           4 n>| jm        dk    r1|t          |j                  k     rtg          jn        | jm                   t          |j                  }>|>dk    r't          ||> d         t          |          {           |>dk    r| l                    ||>           dS dS )|z`Execute tool calls sequentially (original behavior). Used for single calls or interactive tools.rK   Nr'   r(   Tr   r)   r*   r+   r,   z(Unexpected JSON error after validation: r   r>   r6   r@   r1   r2   FrC   rL   rM   rN   rO   rP   rQ   rR   rT   rU   zexecuting tool: r[   rV   rW   rX   >   r3   r4   r5   r7   r8   r9   r:   r;   r<   r=   rB   rY   todo)	todo_tooltodosmerge)r-  r.  storer   r   session_search)format_session_db_unavailable)successrB   )r0  queryrole_filterlimitr   )r3  r4  r5  dbcurrent_session_idtarget)memory_toolactionr/   old_text)r:  r8  r/   r;  r/  >   ri   replacers   )rA   r0   )metadataclarify)clarify_toolquestionchoices)r@  rA  callbackdelegate_tasktasksu   🔀 delegating z tasksgoalr   u   🔀 u   🔀 delegating r   r   )r   zContext engine tool 'z
' failed: z1context_engine.handle_tool_call raised for %s: %sr`   zMemory tool 'z1memory_manager.handle_tool_call raised for %s: %s)r0   
session_idenabled_toolsskip_pre_tool_call_hookr^   r_   z&handle_function_call raised for %s: %srb   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z remaining tool call(s)u   [Tool execution skipped — z* was not started. User sent a new message]r   )pr   r   rj   r   r   rv   r   r.   rs   r   r   r   r   r   r   r   r   r   r   r?   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rm   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r   tools.todo_toolr,  _todo_storer   r   _get_session_db_for_recallhermes_stater1  tools.session_search_toolr0  rG  tools.memory_toolr9  _memory_store_memory_manageron_memory_write_build_memory_write_metadatagetattrtools.clarify_toolr?  clarify_callbackr   r   r   r   r   r   r}   _delegate_spinner_dispatch_delegate_taskr   _context_engine_tool_names_get_tool_emojicontext_compressorhandle_tool_callrt   rB   has_toolr   handle_function_callvalid_tool_namesr!   r
   r   ru   r   r   r   r   r   r   r   r   r   r   r  
tool_delaysleepr   )?r   r  r   r    r"   r   ry   remaining_calls
skipped_tcskipped_nameskip_msgrz   r{   e
_block_msgr?   _guardrail_block_decisionr	  _execution_blockedr  r  r\   r  r  r  r  r  r  tool_start_timer  r  
_todo_tool
session_dbr1  _session_searchr8  _memory_tool_clarify_tool	tasks_argspinner_labelgoal_previewr  r  _delegate_resultr"  emoji
_ce_resultr   _mem_result_spinner_resultr   _result_len_is_error_resultrI   r!  _log_resultr%  r&  r'  _fr_strr$  	remainingnum_tools_seqs?                                                                  r   execute_tool_calls_sequentialr~    s   !"3">BB i) i)9 % 	/:1Q344@O |!1nn3K_K_nnnvz{{{- * *
)27"(qqqq$.M	  ))))E!*/	 Jy'9'CDDMM# 	 	 	OJqJJKKKMMMMMM	 -.. 	M %)
	JJJJJJ88}6G6M2  JJ  	 	 	D	 CG!!&!7!C!CMS`!a!a%6 ?,>)'t3\7PX\7\ 	) h&&()E%%n,,'(E$ 	jz-eDDDH$ jWQWW-WW$}?Q?Q?S?S:T:TWWWXXXe))(DJ}UVej4k4k4kllmmmmLOPXMM\a\rLrLrx(?)?(?@5HH  yAhQhh-hh$}?Q?Q?S?S:T:ThhZfhhiii! 	F"/E!!"D]"D"DEEE
 " 	IIIIII%%e&;<<<<    " 	Ie&B 	II-m]KK,,^]GUbcccc I I IGvGGHHHHHHHHI " 	Fe&? 	FF))),}UUUU F F FDFDDEEEEEEEEF " 		m7N&N&NSXShSp&N)--fb99	 $4MMiXXH);; ";M";";       " 		mz&A&AeF[Fc&A#''	266*3// '++I66`")NTVT]T_T_:`:`C);;;SbS;;       )++!"j':)>USSSOMM&2 $;;<UVVOMMf$$??????(j#''00#''77'  O
 !IKK/9M5577 @~#>v}Vcl{#|#|#|~~...99;;J FFFFFF"&*IfIfIhIh-i-i"j"jWWWWWW"1/'++GR88 - 1 1- @ @'++GQ77!','7# # # !IKK/9M5577 J  I#>?OQ^`m  wF  $G  $G  $G  I  I  J  J  Jh&&"&&x::FEEEEEE*l$((22%)))44&**:66)  O $ ):):8)D)DHZ)Z)Z)99%))(B77%)))R88!&!C!C$5)0D$)G)G "D " "	 :     !   D IKK/9M5577 B  A#>xXen}#~#~#~  A  A  B  B  Bi''HHHHHH+m&**:r::%)))44/  O
 !IKK/9M5577 C  B#>y-Yfo~###  B  B  C  C  Co--%))'22I ^Z	488 ^ I3y>> I I I - 1 1& 9 9 ?R"E:F ] 6 6 6 6L]G5577  E<]<]<_<_  }]%D%F%FGG'4(A(A-(A(APVafapqqq&-E##
3"'"?"?"N"N#2 *.' $	o =6Wdm}~~~ 3LL****;;== 3MM/x//222 +/' $	o =6Wdm}~~~ 3LL****;;== 3MM/x//22223- W	:-5Cc2c2cG5577  }]%D%F%FGG'66-m]KK\}'4(C(C%(C(C'(C(CRXchcrsssJ3"'":"K"KM[hs{"K"|"|,

 | | |"&*g7t}7t7thr7t7t-u"v"vPR_akvz{{{{{{{{| !%	o =6}mUbkuvvv 3LL****;;== 3MM/x//222 !%	o =6}mUbkuvvv 3LL****;;== 3MM/x//22223" @	:u'<'E'Em'T'T @	: G5577  E<]<]<_<_  }]%D%F%FGG'66-m]KK\}'4(C(C%(C(C'(C(CRXchcrsssK3"'"7"H"HXe"f"f- | | |"&*g7l}7l7l`j7l7l-m"n"nPR_akvz{{{{{{{{| !%	o =6}mUbkvwww 3LL****;;== 3MM/x//222 !%	o =6}mUbkvwww 3LL****;;== 3MM/x//22223 (	:G5577  E<]<]<_<_  }]%D%F%FGG'66-m]KK\}'4(C(C%(C(C'(C(CRXchcrsss"O3"%%%"<"<!=2C!*$/52BGBX"b$u'=">">">^b,0 #= # # #2 q q q"Y="Y"YZ"Y"YE}V`koppppppppq !%	o =6}mUbkz{{{ 3LL****;;== 3MM/x//222 !%	o =6}mUbkz{{{ 3LL****;;== 3MM/x//22223
q"%%%"<"<!=2C!*$/52BGBX"b$u'=">">">^b,0 #= # #  q q q"Y="Y"YZ"Y"YE}V`koppppppppq !IKK/9Mos++ 	4050E __),_)=)=)C)C%%  o..KK -Nc/2233K 3=/RR!! 		#AA'	 B  O 160E __),_)=)=)C)C%%   	jNN?P]_mnnnnKK=}m]hiii " 	TT22!=/CS     T T TH(SSSSSSSST " 	Ie&B 	II,,$mT4*5E -      I I IGvGGHHHHHHHHI #WWW-WWWWXXX  	TMS-SS}SSSSTTT2?CCKMR#k*:*:RR[RRSSS! 	Ie&B 	II,,Y\=-Yhiiii I I IGvGGHHHHHHHHI ,O<<R3##!011	
 
 
 

 CR 	 0@@P]^^ 	0)/:: 01/<PPPP</ CCMSbcc!$%L	
 
 	!!! 	228Q??? 	`$ `IAII]IIIIJJJe))*oFFGGGG-7-M-Mg//SVWfSgSgORSZ||^c^tOtOt7+BE,B+B#Ce#K#K  {B ^A^^]^^^L\^^___% 	!c2C2N.O.O*O*O-899A=IMMU-iiyiiiquMvvv/:122> * *
)27"(vlvvv$.M	  ))))EaA,=,H(I(I$I$IJu'((( )455MqHm^__5>J[;\;\]]]]
 q228]KKKKK s  ,CC=C88C=D11
D>=D>.K
KK(L
L3L..L3 M
N'NNAO//
O<;O<BR
R('R(A*]::
^^2h  A7i7l>=o?>
n:no?no??A0q/;ux
v'#:v"x"v''xA0z
;A~A@:
&=A@:A@:@:A0AB*B.AAC>C>
AD8D&AD3D3AD8IAI+I+
AJI5AJJAJJ!AJ=J=
AK(KAK#K#AK(M2ANN
AN;NAN6N6AN;r)  r~  )r   )r   r   r    r!   r"   r#   r$   r%   )2__doc__
__future__r   concurrent.futuresr   r   r   r   r   r   rd   rq   typingr   r   agent.displayr   r   r   r   r   r	   rZ  r
   agent.tool_guardrailsr   agent.tool_dispatch_helpersr   r   r   r   tools.terminal_toolr   r   r   ro   r   rp   r   tools.tool_result_storager   r   	getLogger__name__rt   r   r   r)  r~  __all__rG   r   r   <module>r     s  
 
 # " " " " "           				                                    8 7 7 7 7 7                               
 
	8	$	$    VH VH VH VH VHtvL vL vL vL vLx $#r   