
    F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 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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)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make_tool_result_message)_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    2/usr/local/lib/hermes-agent/agent/tool_executor.py_rar   ;   s        messageslisteffective_task_idstrapi_call_countintreturnNonec                L   :;<=> |j         }t          |          } j        rbt           j         d| d           |D ]C}                    t          |j        j        d|j        j         d|j	                             Dd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          }t1          |          ra|
                    d          p%t3          j        dt3          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|            tK          =d          D ] \  }\  }}}}}t          j        |d          } j&        rqt          d| d| d tO          |(                                           d!           t           )                    d"t          j        |d#d$                               t          |           j*        k    r|d j*                 d%z   n|}t          d| d| d tO          |(                                           d&|            =D ]j\  }}}}}| j+        rX	 tY          ||          } +                    d'|||           <# t.          $ r!}t[          j.        d(|            Y d}~bd}~ww xY wk=D ]^\  }}}}}| j/        rL	  /                    |j	        ||           0# t.          $ r!}t[          j.        d)|            Y d}~Vd}~ww xY w_dg|z  >tK          =          D ]\  }\  }}}}}||||d*ddf>|<   | _0         1                    d+| d,|            te                      :tg                      ;:; >fd-}d} 4                                rj 5                                rVtm          j7        tq          j9                              }tq          | d.| d/d0 j:        1          }|;                                 	 d2 tK          =          D             }g <|rty          t          |          tz                    } t|          j?        @                    | 3          5 }!|D ]N\  }}}}t          jB                    }"|!C                    |"jD        |||||          }#<                    |#           Ot          jE                    }$d}%	 t|          j?        F                    <d45          \  }&}'|'sn j        rn|%s1d}% G                     j         d6t          |'           d7d8           |'D ]}#|#H                                 t|          j?        F                    |'d95           nt          t          jE                    |$z
            }(|(dk    r_|(d:z  d;k     rV<=fd<|'D             }) 1                    d=|( d>t          |'           d?d#                    |)dd@                    d!           &ddd           n# 1 swxY w Y   |rRt          dA >D                       }*t          dB >D                       }+|K                    dC|* dD| dE|+dFdG           nZ# |rSt          dA >D                       }*t          dB >D                       }+|K                    dC|* dD| dE|+dFdG           w w xY wtK          =          D ]\  }\  }}}}}>|         },d}-|, j        rd| d}.ndH| dI}.d*}/nX|,\  }	}
}.}/}0}-|-s L                    |	|
|.|0J          }.|0rKt          |.          }1t          |1          dKk    r
|1ddK         n|1}2t          O                    dL|	|/|2           |-sF	  P                    |	|
|.|0           n,# t.          $ r}3t[          j.        dM|3           Y d}3~3nd}3~3ww xY w|-sS j+        rL	  +                    dN|	dd|/|0|.O           n.# t.          $ r!}t[          j.        d(|            Y d}~nd}~ww xY w j&        rCt[          j.        dP|	 dQ|/dRdS           t[          j.        dTt          |.           dU|.             4                                r,t          |||/|.V          }4 R                    dW|4            n j$        st          |.          }5 j&        r>t          dX|dz    dQ|/dRdS           t           )                    dY|5                     nHt          |5           j*        k    r|5d j*                 d%z   n|5}6t          dX|dz    dQ|/dRdZ|6            d _0         1                    d[| d\|/dFd]           |-sT jS        rM	  S                    |j	        |||.           n.# t.          $ r!}t[          j.        d^|            Y d}~nd}~ww xY wt          |.          s%t          |.||j	        t                    _          n|.}. jW        X                    ||          }7|7r%t          |.          rt          |.|7           n|.|7z  }. Z                    ||.          }8                    t          ||8|j	                              [                    d           t          =          }|dk    r)| d         }9t          |9t                    `           |dk    r [                    |           dS dS )azExecute 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 execution cancelled — # was skipped due to user interrupt]N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_names      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:    indentr>   ...) - 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.baserW   _touch_activity_set_approval_callback_set_sudo_password_callbacktime_invoke_toolidloggerr<   r	   infolendiscard)index	tool_callfunction_namefunction_args_worker_tidrW   startresult
tool_errordurationis_errorrC   _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 r@   rA   )rB   itcrD   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 )rF   )rs   )rB   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 )NrF   rA   rB   rs     r   rE   z0execute_tool_calls_concurrent.<locals>.<genexpr>X  s"      @@!!-A----@@r   c              3  *   K   | ]}||d         V  d S )Nr   rA   r   s     r   rE   z0execute_tool_calls_concurrent.<locals>.<genexpr>Y  s&      CCQQ]AaD]]]]CCr   u   ⚡ /z tools completed in .1fzs totalrY   z!': thread did not return a resultfailedr]   "Tool %s returned error (%.2fs): %s(file-mutation verifier record failed: %stool.completedr{   r|   ry   Tool  completed in .2fsTool result (	 chars): ry          ✅ Tool Result: s - tool completed:  (s)Tool complete callback error: content	tool_nametool_use_idenvr   )]
tool_callsrq   re   print
log_prefixappendr   functionrD   rn   _turns_since_memory_iters_since_skilljsonloads	argumentsJSONDecodeError
isinstancedict_checkpoint_mgrenabledgetget_working_dir_for_pathensure_checkpointrg   r   osgetenvgetcwdhermes_cli.pluginsr9   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_toolri   r   r    _should_emit_quiet_tool_messages_should_start_quiet_spinnerrandomchoicer   get_waiting_faces	_print_fnrx   min_MAX_TOOL_WORKERS
concurrentr   ThreadPoolExecutorcontextvarscopy_contextsubmitrunrl   wait_vprintcancelr#   sumstop_append_guardrail_observationr   ro   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   rt   ru   rv   	file_pathwork_dircmdcwdr   r   r9   block_messageguardrail_decisiontool_names_strr   rD   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turn_tool_msgsr}   r~   r   r   r   s?   ` ``                                                      @@@@@r   execute_tool_calls_concurrentr$  A   s    #-JJI ! !SS9SSSTTT 	 	BOO4 f1Afff     
 	 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 g@ g@??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0}beLLMMM
 	228Q???? L!!I1}}!9*++.N?P0Q0QRRRR 1}}228YGGGGG }s   7CC*)C*AE&&
E32E3	BH
HH%H<<I
I!(Q


Q5Q00Q5R++
S5SSA `+ 1F_?`+ _`+ _`+ +Ab8e
e:e55e:f$$
g.g

g-m
m6m11m6c                -   t          |j        d          D ]c\  }}| j        r||j        |dz
  d         }|r/|                     | j         dt          |           dd           |D ]3}|j        j        }	d|	d|	 d	|j        d
}
|	                    |
           4 n|j        j        }	 t          j        |j        j                  }n;# t          j        $ r)}t                              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!}tQ          j)        d |            Y d}~nd}~ww xY w|sS| j*        rL	 | *                    |j        ||           n.# t(          $ r!}tQ          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          }ta          |          ra|-                    d'          p%tc          j2        d(tc          j3                              }| j+        /                    |d)|dd*                     n# t(          $ r Y nw xY wti          j4                    }|t          j        d+|id          }d,}n|| 5                    |          }d,}n|d-k    rdd.l6m7}  ||-                    d/          |-                    d0d          | j8        1          }ti          j4                    |z
  }| 9                                r)|                     d2tu          d-|||3                      n|d4k    r8| ;                                } | s&dd5l<m=}! t          j        d |!            d6          }ndd7l>m?}"  |"|-                    d8d          |-                    d9          |-                    d:d;          |-                    d<          |-                    d=          |-                    d>d?          |-                    d@          | | j@        A	  	        }ti          j4                    |z
  }| 9                                r)|                     d2tu          d4|||3                      
n|dk    rY|-                    dBd          }#ddClAmB}$  |$|-                    dD          |#|-                    dE          |-                    dF          | jC        G          }| jD        r|-                    dD          dHv r|	 | jD        E                    |-                    dDd          |#|-                    dEd          | F                    |t          |dId          J          K           n# t(          $ r Y nw xY wti          j4                    |z
  }| 9                                r)|                     d2tu          d|||3                      	nr|dLk    rddMlHmI}%  |%|-                    dNd          |-                    dO          | jJ        P          }ti          j4                    |z
  }| 9                                r)|                     d2tu          dL|||3                      n|dQk    r|-                    dR          }&|&r)t!          |&t<                    rdSt          |&           dT}'n(|-                    dU          pdddV         }(|(rdW|( ndX}'d})| 9                                ri| K                                rUt          jM        t          jO                              }*t          |* dY|' dZ| jP        [          })|)Q                                 |)| _R        d}+	 | S                    |          }|}+d| _R        ti          j4                    |z
  }tu          dQ|||+3          },|)r|)T                    |,           n| 9                                r|                     d2|,            nQ# d| _R        ti          j4                    |z
  }tu          dQ|||+3          },|)r|)T                    |,           w | 9                                r|                     d2|,            w w xY w| jU        r|| jU        v rd})| 9                                ryt          jM        t          jO                              }*t          |          }-tO          ||          p|}t          |* dY|- dY| dZ| jP        [          })|)Q                                 d}.	 | jW        X                    |||\          }|}.nQ# t(          $ rD}/t          j        d+d]| d^|/ i          }t          Y                    d_||/d`           Y d}/~/nd}/~/ww xY wti          j4                    |z
  }tu          ||||.3          },|)r|)T                    |,           n| 9                                r|                     d2|,            nR# ti          j4                    |z
  }tu          ||||.3          },|)r|)T                    |,           w | 9                                r|                     d2|,            w w xY w| jD        r| jD        Z                    |          rd})| 9                                r| K                                ryt          jM        t          jO                              }*t          |          }-tO          ||          p|}t          |* dY|- dY| dZ| jP        [          })|)Q                                 d}0	 | jD        X                    ||          }|}0nQ# t(          $ rD}/t          j        d+da| d^|/ i          }t          Y                    db||/d`           Y d}/~/nd}/~/ww xY wti          j4                    |z
  }tu          ||||03          },|)r|)T                    |,           ne| 9                                r|                     d2|,            n7# ti          j4                    |z
  }tu          ||||03          },|)r|)T                    |,           w | 9                                r|                     d2|,            w w xY w| j        rd})| 9                                r| K                                ryt          jM        t          jO                              }*t          |          }-tO          ||          p|}t          |* dY|- dY| dZ| jP        [          })|)Q                                 d}1	 t                      \                    ||||j        | j@        pd| j]        rt=          | j]                  nddc          }|}1n=# t(          $ r0}/dd| de|/ }t          Y                    df||/d`           Y d}/~/nd}/~/ww xY wti          j4                    |z
  }tu          ||||13          },|)r|)T                    |,           nE| 9                                r|                     d2|,            n# ti          j4                    |z
  }tu          ||||13          },|)r|)T                    |,           w | 9                                r|                     d2|,            w w xY w	 t                      \                    ||||j        | j@        pd| j]        rt=          | j]                  nddc          }n=# t(          $ r0}/dd| de|/ }t          Y                    df||/d`           Y d}/~/nd}/~/ww xY wti          j4                    |z
  }t!          |t                    r8| j        r|nt          |          dgk    r
|ddg         n|}2t          |          }3n|}2t          t          |                    }3t          ||          \  }4}5|sA| `                    ||||4h          }| j        r|nt          |          dgk    r
|ddg         n|}2|4rt                              di|||2           nt          a                    dj|||3           |sF	 | b                    ||||4           n,# t(          $ r}6tQ          j)        dk|6           Y d}6~6nd}6~6ww xY w|sS| j&        rL	 | &                    dl|dd||4|m           n.# t(          $ r!}tQ          j)        d |            Y d}~nd}~ww xY wd| _"        | #                    dn| do|dpdq           | j        rRtQ          j)        dr| ds|dtdu           t          |          }7tQ          j)        dvt          |7           dw|7            |sT| jd        rM	 | d                    |j        |||           n.# t(          $ r!}tQ          j)        dx|            Y d}~nd}~ww xY wt          |          s%t          |||j        t          |          y          n|}| jh        i                    ||          }8|8r%t          |          rt          ||8           n||8z  }| k                    ||          }9|	                    t          ||9|j                             | m                    |d           | j        s| j        r;t;          dz| ds|dtdu           t;          |                      d{|                     nkt!          |t                    r|nt          |          }:t          |:          | j!        k    r|:d| j!                 dz   n|:};t;          dz| ds|dtd||;            | j        r|t          |j                  k     rt          |j                  |z
  }<|                     | j         d|< d}d           |j        |d         D ];}|j        j        }	|	                    t          |	d~|	 d|j                             < n>| jn        dk    r1|t          |j                  k     rti          jo        | jn                   et          |j                  }=|=dk    r't          ||= d         t          |                     |=dk    r| m                    ||=           dS dS )z`Execute tool calls sequentially (original behavior). Used for single calls or interactive tools.rF   Nr'   r(   Tr   toolr)   r*   )rolerD   r   tool_call_idz(Unexpected JSON error after validation: r   r8   r0   r:   r+   r,   Fr=   rG   rH   rI   rJ   rK   rL   rM   rO   rP   zexecuting tool: rV   rQ   rR   rS   >   r-   r.   r/   r1   r2   r3   r4   r5   r6   r7   r<   rT   todo)	todo_tooltodosmerge)r+  r,  storer   r   session_search)format_session_db_unavailable)successr<   )r.  queryrole_filterlimitr   
session_idaround_message_idwindow   sort)	r1  r2  r3  r4  r5  r6  r8  dbcurrent_session_idtarget)memory_toolactionr   old_text)r=  r;  r   r>  r-  >   rd   replacern   )r;   r(  )metadataclarify)clarify_toolquestionchoices)rC  rD  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)r(  r4  enabled_toolsskip_pre_tool_call_hookrY   rZ   z&handle_function_call raised for %s: %sr]   r   r   r^   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   )qr   r   re   r   r   rq   r   rD   rn   r   r   r   r   r   ro   r   r   r   r   r9   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ri   rh   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   r   tools.todo_toolr*  _todo_storer   r   _get_session_db_for_recallhermes_stater/  tools.session_search_toolr.  r4  tools.memory_toolr<  _memory_store_memory_manageron_memory_write_build_memory_write_metadatagetattrtools.clarify_toolrB  clarify_callbackr   r   r   r   r   r   rx   _delegate_spinner_dispatch_delegate_taskr   _context_engine_tool_names_get_tool_emojicontext_compressorhandle_tool_callr<   has_toolr   handle_function_callvalid_tool_namesr!   r	   r   rp   r   r   r   r   r   r   r   r   r   r   r   r   
tool_delaysleepr   )>r   r   r   r    r"   r   rt   remaining_calls
skipped_tcskipped_nameskip_msgru   rv   e
_block_msgr9   _guardrail_block_decisionr  _execution_blockedr  r  rW   r	  r
  r   r  r  r  tool_start_timer  r  
_todo_tool
session_dbr/  _session_searchr;  _memory_tool_clarify_tool	tasks_argspinner_labelgoal_previewr  r  _delegate_resultr  emoji
_ce_resultrz   _mem_result_spinner_resultr  _result_len_is_error_resultrC   r  _log_resultr!  r"  _fr_strr   	remainingnum_tools_seqs>                                                                 r   execute_tool_calls_sequentialr    sO   !"3">BB f) f)9 % 	/:1Q344@O |!1nn3K_K_nnnvz{{{- * *
)27"(qqqq$.M	  ))))E!*/	 Jy'9'CDDMM# 	 	 	NNIaIIJJJ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,00>>&3&7&78K&L&L(,,Xq99&**622!','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0y|\\]]] 	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 8 k<kkk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DC>>D D77
EE4K
KK%(L
L9L44L9M##
N-N		N$AO55
PPBR!!
R.-R.'A*_
__
iA7k6nq
o$ :oqo$$qA0sv10y21
w?;:w:5y2:w??y22A0{"A%$AB%
A@/&A@@AB@A@@ABBA0ADDAAEE
AFE &AFFAFJ*AKK
AK,KAK'K'AK,K9ALL
AML AL<L<AMOAO)O)
APO3APPAPr$  r  )r   )r   r   r    r!   r"   r#   r$   r%   )2__doc__
__future__r   concurrent.futuresr   r   r   r   r   r   r_   rl   typingr   agent.displayr   r   r   r   r   r   r\  r	   agent.tool_guardrailsr
   agent.tool_dispatch_helpersr   r   r   r   r   tools.terminal_toolr   r   r   rj   r   rk   r   tools.tool_result_storager   r   	getLogger__name__ro   r   r   r$  r  __all__rA   r   r   <module>r     s  
 
 # " " " " "           				                          8 7 7 7 7 7                                 
 
	8	$	$    PH PH PH PH PHhsL sL sL sL sLr $#r   