
    (Gj<:                      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mZmZ ddlmZmZ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$ dd	l%m&Z& dd
l'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-  ej.        e/          Z0dBdZ1dZ2dZ3dCdZ4dDdZ5d Z6dEdZ7dddddddFd.Z8dGdHd1Z9d/d2dd3dId6Z:dJd8Z;dKd:Z<dLd<Z=dMdNd>Z>dMdNd?Z?d@dAgZ@dS )Ou  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build_tool_labelget_cute_tool_messageget_tool_emojiredact_tool_args_for_display_detect_tool_failure)ToolGuardrailDecision)_is_destructive_command_is_multimodal_tool_result_multimodal_text_summary!_append_subdir_hint_to_multimodalmake_tool_result_message)get_active_env)propagate_context_to_thread)maybe_persist_tool_resultenforce_turn_budget)BudgetConfigDEFAULT_BUDGETbudget_for_context_windowreturnr   c                    	 t          t          | dd          dd          }|rt          t          |                    nt          S # t          $ r
 t          cY S w xY w)a  Resolve a tool-result BudgetConfig scaled to the agent's context window.

    Large-context models keep the historical 100K/200K char defaults; small
    models (e.g. a 65K-token local model switched into mid-session) get a budget
    proportional to their window so a single large tool result can't push the
    request past the model's limit (#23767). Falls back to the default budget
    when the context length isn't resolvable.
    context_compressorNcontext_length)getattrr   intr   	Exception)agentctxs     9/home/rurouni/.hermes/hermes-agent/agent/tool_executor.py_budget_for_agentr$   6   sm    ge%94@@BRTXYY69M(S222~M   s   AA AA   g     @z@float | Nonec                    t          j        dd                                          } | st          S 	 t	          |           }n8# t
          $ r+ t                              d| t                     t          cY S w xY w|dk    rd S |S )N HERMES_CONCURRENT_TOOL_TIMEOUT_S z8invalid HERMES_CONCURRENT_TOOL_TIMEOUT_S=%r; using %.0fsr   )osgetenvstrip"_DEFAULT_CONCURRENT_TOOL_TIMEOUT_Sfloat
ValueErrorloggerwarning)rawvalues     r#    _resolve_concurrent_tool_timeoutr4   M   s    
)6
;
;
A
A
C
CC 2112c

 2 2 2F.	
 	
 	

 21112 zztLs   A 2A76A7messagesliststagestrNonec                   	 |                      |           dS # t          $ r'}t                              d||           Y d}~dS d}~ww xY w)a`  Best-effort incremental SessionDB flush for tool-call progress.

    Tool execution can perform side effects that terminate or restart the
    current Hermes process before the normal turn-end persistence path runs.
    Flush the already-appended assistant/tool messages immediately so the
    transcript survives destructive-but-valid tool calls.
    z5Incremental tool-call persistence failed after %s: %sN)_flush_messages_to_session_dbr    r0   r1   )r!   r5   r7   excs       r#   %_flush_session_db_after_tool_progressr=   _   sp    \++H55555 \ \ \NPUWZ[[[[[[[[[\s    
A
AA
c                     ddl } | S )zRLazy reference to ``run_agent`` so patches like ``run_agent._set_interrupt`` work.r   N	run_agentr?   s    r#   _rarA   r   s        r<   RuntimeErrorboolc                $    dt          |           v S )Nz6cannot schedule new futures after interpreter shutdown)r8   )r<   s    r#   %_is_interpreter_shutdown_submit_errorrF   x   s    Cs3xxOOrB   )duration_msstatus
error_typeerror_messagemiddleware_tracefunction_namefunction_argsdictresultr   effective_task_idtool_call_idrG   r   rH   
str | NonerI   rJ   rK   Optional[list[dict[str, Any]]]c       
            	 ddl m}  |||||pdt          | dd          pd|pdt          | dd          pdt          | dd          pd||||	t          |
pg                      d S # t          $ r Y d S w xY w)Nr   )_emit_post_tool_call_hookr)   
session_id_current_turn_id_current_api_request_id)rL   rM   rO   task_idrV   rQ   turn_idapi_request_idrG   rH   rI   rJ   rK   )model_toolsrU   r   r6   r    )r!   rL   rM   rO   rP   rQ   rG   rH   rI   rJ   rK   rU   s               r#   _emit_terminal_post_tool_callr]   |   s    999999!!''%+ulB77=2%+E#5r::@b"5*CRHHNB#!'!"2"8b99	
 	
 	
 	
 	
 	
    s   A$A( (
A65A6user interruptreasonc                :    t          j        d|  ddd          S )NTool execution cancelled by 	cancelled)errorrH   Fensure_ascii)jsondumps)r_   s    r#   _cancelled_tool_resultrh      s8    :<F<<!	
 	
    rB   keyboard_interrupt)r_   rI   rK   
start_timer.   c                   t          |          }	t          | |||	||t          t          j                    |z
  dz            d|d| t	          |pg                      |	S )N  rb   ra   )
rL   rM   rO   rP   rQ   rG   rH   rI   rJ   rK   )rh   r]   r   timer6   )
r!   rL   rM   rP   rQ   rj   r_   rI   rK   rO   s
             r#   '_emit_cancelled_terminal_post_tool_callrn      s~     $F++F!##+!z1T9::=V==.4"55    MrB   	frozensetc                :   	 ddl }ddlm} ddlm} n# t
          $ r t                      cY S w xY wt          | dd          }t          | dd          }t          |dd          |t          |          nd|t          |          ndf}t          | dd          }||d         |k    r|d	         S 	 |                    ||d
d
          pg }|	                    |          }	n# t
          $ r t                      }	Y nw xY w	 ||	f| _
        n# t
          $ r Y nw xY w|	S )a  Return the deferrable tool names the session may invoke via tool_call.

    The Tool Search unwrap dispatches the underlying tool directly, bypassing
    the bridge branch (and its scope check) in
    ``model_tools.handle_function_call``. To keep a restricted-toolset session
    (subagent, kanban worker, curated gateway session) from reaching tools it
    was never granted, the unwrap validates the underlying name against this
    set: the deferrable subset of the session's own enabled/disabled toolset
    scope.

    Result is cached on the agent and refreshed when the tool registry's
    generation changes (e.g. an MCP server reconnects), so the common case is
    a dict lookup, not a full tool-defs rebuild on every tool call.
    r   Ntool_search)registryenabled_toolsetsdisabled_toolsets_generation_tool_search_scope_cache   T)rt   ru   
quiet_modeskip_tool_search_assembly)r\   toolsrr   tools.registryrs   r    ro   r   get_tool_definitionsscoped_deferrable_namesrw   )
r!   r\   _ts	_registryenableddisabled	cache_keycachedscoped_defsnamess
             r#   _tool_search_scoped_namesr      s   ,,,,,,8888888   {{ e/66Gu1488H	=!,,%1	't'3	(I
 U6==FfQi944ay	!66$&&*	 7 
 
 
  	 ++K88   *3U);&&   Ls0    ..10C" "C=<C=	D 
DD!tuple[dict, list[dict[str, Any]]]c                  	 ddl m}  ||||pdt          | dd          pd|pdt          | dd          pdt          | dd          pd          }t          |j        t
                    r|j        n|}|t          |j                  fS # t          $ r)}t          
                    d|           |g fcY d }~S d }~ww xY w)	Nr   )apply_tool_request_middlewarer)   rV   rW   rX   )rY   rV   rQ   rZ   r[   z!tool_request middleware error: %s)hermes_cli.middlewarer   r   
isinstancepayloadrN   r6   tracer    r0   debug)	r!   rL   rM   rP   rQ   r   rO   r   r<   s	            r#   (_apply_tool_request_middleware_for_agentr      s   !GGGGGG..%+ulB77=2%+E#5r::@b"5*CRHHNB
 
 
 %/v~t$D$DW&..-V\**** ! ! !8#>>>b       !s   BB
 

B=B82B=8B=tuple[Any, dict]c                  	 	d	fd}ddl m}  ||||pdt          | d	d          pd|pdt          | d
d          pdt          | dd          pd	  	        }|	fS )N	next_argsrN   r   r   c                L    t          | t                    r| n           S N)r   rN   )r   executerM   observed_argss    r#   _executez6_run_agent_tool_execution_middleware.<locals>._execute  s+    %/	4%@%@S		mw}%%%rB   r   )run_tool_execution_middlewarer)   rV   rW   rX   )original_argsrY   rV   rQ   rZ   r[   r   rN   r   r   )r   r   r   )
r!   rL   rM   rP   rQ   r   r   r   rO   r   s
     `  `   @r#   $_run_agent_tool_execution_middlewarer     s     "M& & & & & & & &
 DCCCCC**#!'R5,339r!'R1266<"u&?DDJ
 
 
F =  rB   api_call_countc                X$   TUV |j         }t          |          }t                     } j        rt	           j         d| d           |D ]b}                    t          |j        j	        d|j        j	         d|j
                             t           d|j        j	                    cdS g U|D ]}	|	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}	 d	dlm} |
|j        k    rO|                    |          \  }}}|s4|r2|t1                     v r|}
|}nt          j        dd| did          }n# t4          $ r Y nw xY wt7           |
|t9          |	dd          pd          \  }}d}d}|;|}t;           |
||t9          |	dd          pddd|t=          |          
  
         nS	 d	dlm }  ||
|pdt9           dd          pdt9          |	dd          pdt9           dd          pdt9           dd          pdt=          |                    }n# t4          $ r d}Y nw xY w|Pt          j        d|id          }t;           |
||t9          |	dd          pddd|t=          |          
  
         n j!        "                    |
|          }|j#        s_ $                    |          }d}t;           |
||t9          |	dd          pdddt9          |dd          pd t=          |          
  
         ||
d!v rn j%        j&        rb	 |'                    d"d          }|r8 j%        (                    |          } j%        )                    |d#|
            n# t4          $ r Y nw xY w|
d$k    r j%        j&        r	 |'                    d%d          }tU          |          ra|'                    d&          p%tW          j,        d'tW          j-                              } j%        )                    |d(|dd)                     n# t4          $ r Y nw xY wU                    |	|
||||f           d*.                    d+ UD                       } j/        sPt9           d,d-          d.k    r:t	          d/| d0|            ta          Ud1          D ]\  }\  }}}}}}tc          ||          p|}t          j        |d          }  j2        rqt	          d2| d3| d4t=          |3                                           d5           t	           4                    d6t          j        |d7d8                               t          |            j5        k    r| d j5                 d9z   n| }!t	          d2| d3| d4t=          |3                                           d:|!            UD ]}\  }}}}}}| j6        rj	 tc          ||          p|}to          ||          }" 6                    d;||"|           O# t4          $ r!}#tq          j9        d<|#            Y d}#~#ud}#~#ww xY w~UD ]q\  }}}}}}| j:        r^	 tc          ||          p|} :                    |j
        ||           C# t4          $ r!}#tq          j9        d=|#            Y d}#~#id}#~#ww xY wrdg|z  Vta          U          D ]\  }\  }}}}}}||||d>dd|fV|<   | _;         <                    d?| d@|             VfdA}$d}% =                                rj >                                rVt          j@        t          jB                              }&t          |& dB| dCdD jC        E          }%|%D                                 	 dF ta          U          D             }'g }(i Tt                      })t                      }*|*t          jH                    |*z   nd}+|'rt          t          |'          t                    },d	dGlKmL}-  |-|,H          }.d}/	 ta          |'          D ]\  }0\  }}}}	 |.M                    t          |$          ||||U|         dI                   }1n# t          $ r}2t          |2          s |'|0d         }3t          R                    dJt          |3                     |3D ]/\  }4}5}6}7V|4          U|4         dI         }dK|6 dL}8|6|7|8d>dd|fV|4<   0Y d}2~2 n#d}2~2ww xY w|(                    |1           |T|1<   t          jG                    }9d}:	 dM};|+l|+t          jH                    z
  }<|<d	k    rt                      dN |(D             }>}=nYt          |;|<          };t          jT        U                    |(|;O          \  }=}>n$t          jT        U                    |(|;O          \  }=}>|>sn|+ t          jH                    |+k    rd}/TfdP|>D             })UfdQ|)D             }?t          R                    dR|*t          |)          d*.                    |?ddS                              |>D ]}1|1V                                  jW        5  t=           jX                  }@ddd           n# 1 swxY w Y   |@D ]5}A	 t                      Z                    d|A           &# t4          $ r Y 2w xY wn j        rpd}/|:s1d}: [                     j         dTt          |>           dUdV           |>D ]}1|1V                                 t          jT        U                    |>dWO           nt          t          jG                    |9z
            }B|Bd	k    r_|BdXz  dYk     rVTUfdZ|>D             }? <                    d[|B d\t          |>           d]d*.                    |?ddI                    d5           |.]                    |/ |/^           n# |.]                    |/ |/^           w xY w|%rRt          d_ VD                       }Ct          d` VD                       }D|%_                    da|C db| dc|Dddde           nZ# |%rSt          d_ VD                       }Ct          d` VD                       }D|%_                    da|C db| dc|Dddde           w w xY wta          U          D ]\  }\  }}}}}}V|         }Ed}F||)v r^|E\|*|*dddfndg}GdK| dh|G }Ht;           |||Ht9          |dd          pddidj|Ht=          |          
  
         t          |*pd>          }In|E j        r>d| d}Ht;           |||Ht9          |dd          pddkdldmt=          |          
  
         n=dK| dn}Ht;           |||Ht9          |dd          pdddo|Ht=          |          
  
         d>}InY|E\  }
}}H}I}J}F}|Fs a                    |
||H|Jp          }H|JrKt          |H          }Kt          |K          dqk    r
|Kddq         n|K}Lt          R                    dr|
|I|L           |FsF	  c                    |
||H|J           n,# t4          $ r}Mtq          j9        ds|M           Y d}M~Mnd}M~Mww xY w|FsS j6        rL	  6                    dt|
dd|I|J|Hu           n.# t4          $ r!}#tq          j9        d<|#            Y d}#~#nd}#~#ww xY w j2        rCtq          j9        dv|
 dw|Idxdf           tq          j9        dyt          |H           dz|H             =                                r,t          |||I|H{          }N e                    d||N            n j/        st9           d,d-          d.k    rt          |H          }O j2        r>t	          d}|d1z    dw|Idxdf           t	           4                    d~|O                     nHt          |O           j5        k    r|Od j5                 d9z   n|O}Pt	          d}|d1z    dw|Idxd|P            d _;         <                    d| d|Iddd           |Fsf jf        r_	 tc          ||          p|} f                    |j
        |||H           n.# t4          $ r!}#tq          j9        d|#            Y d}#~#nd}#~#ww xY wt          |H          s&t          |H||j
        t                    |          n|H}H jj        k                    ||          }Q|Qr%t          |H          rt          |H|Q           n|H|Qz  }H m                    ||H          }R                    t          ||R|j
                             t           d|             n                    d1           t          U          }|d	k    r*| d         }St          |St                    |           |d	k    r n                    |           dS dS )zExecute 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]cancelled tool result r7   Nmemoryr   skill_managerq   rc   'O' is not available in this session. Use tool_search to find tools you can call.Frd   idr)   rL   rM   rP   rQ   blockedtool_scope_block	rL   rM   rO   rP   rQ   rH   rI   rJ   rK   get_pre_tool_call_block_messagerV   rW   rX   rY   rV   rQ   rZ   r[   rK   plugin_blockTguardrail_blockmessage Tool blocked by guardrail policy>   patch
write_filepathbefore terminalcommandworkdirTERMINAL_CWDbefore terminal: <   z, c              3  (   K   | ]\  }}}}}}|V  d S r    ).0_names      r#   	<genexpr>z0execute_tool_calls_concurrent.<locals>.<genexpr>  s/      LL(;4Aq!tLLLLLLrB   tool_progress_modealloffu     ⚡ Concurrent: u    tool calls — rx        📞 Tool : ()Args:    indentre   ...) - tool.startedTool progress callback error: Tool start callback error:         z
executing z tools concurrently: c                f   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          j                    }	 	                     |||j        ddt!          |                    }nP# t"          $ r
 	                     d           n# t          $ r Y nw xY wt'          ||t)          |dd          pd|t!          |          	          }t          j                    |z
  }	t*                              d
||	           ||||	dd|f| <   Y j        5  j                            |           ddd           n# 1 swxY w Y   	 t                                          d|           dS # t          $ r Y dS w xY wt          $ r0}
d| d|
 }t*                              d||
d           Y d}
~
nd}
~
ww xY wt          j                    |z
  }	t3          ||          \  }}|r&t*                              d||	|dd                    n*t*                              d||	t5          |                     ||||	|d|f| <   j        5  j                            |           ddd           n# 1 swxY w Y   	 t                                          d|           dS # t          $ r Y dS w xY w# j        5  j                            |           ddd           n# 1 swxY w Y   	 t                                          d|           w # t          $ r Y w w xY wxY w)z%Worker function executed in a thread.NTr   set_activity_callback)r5   pre_tool_block_checkedskip_tool_request_middlewaretool_request_middleware_tracekeyboard interruptr   r)   rL   rM   rP   rQ   rj   rK   ztool %s cancelled (%.2fs)FError executing tool '': z_invoke_tool raised for %s: %sexc_infoztool %s failed (%.2fs): %s   #tool %s completed (%.2fs, %d chars))	threadingcurrent_threadident_tool_worker_threads_lock_tool_worker_threadsadd_interrupt_requestedrA   _set_interruptr    tools.environments.baser   _touch_activityrm   _invoke_toolr   r6   KeyboardInterrupt	interruptrn   r   r0   infodiscardrc   r   len)index	tool_callrL   rM   rK   _worker_tidr   startrO   duration
tool_erroris_errorr   r!   rP   r5   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	
 	4	i++!!%L%+/15267G2H2H , 	 	 %   OO$89999    D@"/"/&7!(D"!=!=!C$%)*:%;%;    9;;.7QQQ"/RVX]_o!p$ 0 @ @*22;???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @$$UK88888   +  i i iP-PPJPP=}jcghhhhhhhhi y{{U*H.}fEEKHa i8-SYZ^[^Z^S_````A=RZ\_`f\g\ghhh+]FHhX]_opGEN 0 @ @*22;???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @$$UK88888   	 0 @ @*22;???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @$$UK8888   s'  AAA"A> >
B
BB& &
B32B3/C< :M <I	DI	
D+(I	*D++A5I	 M (GGG"G? ?
HH	I	&I?M I		B
M LLL"L1 1
L?>L?N0
M1%N01M55N08M59N0="N N0 
N-*N0,N--N0u    ⚡ running z tools concurrentlydotsspinner_typeprint_fnc                2    g | ]\  }\  }}}}}}|||||fS r   r   )r   itcr   argsrK   block_resultblocked_by_guardrails           r#   
<listcomp>z1execute_tool_calls_concurrent.<locals>.<listcomp>u  sD     
 
 
YYBd$4lDX# D$###rB   )DaemonThreadPoolExecutor)max_workers   zWinterpreter shutdown while scheduling concurrent tools; skipping %d unsubmitted tool(s)r   z<': Python interpreter is shutting down; tool was not startedg      @c                :    h | ]}|                                 |S r   )done)r   fs     r#   	<setcomp>z0execute_tool_calls_concurrent.<locals>.<setcomp>  s5     5 5 5&'!&&((5 !5 5 5rB   )timeoutc                (    h | ]}|v |         S r   r   )r   r  future_to_indexs     r#   r  z0execute_tool_calls_concurrent.<locals>.<setcomp>  s3     - - - ! O33 ,A.333rB   c                ,    g | ]}|         d          S rx   r   )r   r  parsed_callss     r#   r  z1execute_tool_calls_concurrent.<locals>.<listcomp>  s2     * * * ! )OA.* * *rB   zIconcurrent tool batch timed out after %.1fs; %d tool(s) still running: %s   u   ⚡ Interrupt: cancelling z pending concurrent tool(s)forceg      @      c                @    g | ]}|v |                  d          S r  r   )r   r  r  r  s     r#   r  z1execute_tool_calls_concurrent.<locals>.<listcomp>  s=     * * * ! O33 ));<Q?333rB   zconcurrent tools running (zs, z remaining: )waitcancel_futuresc              3     K   | ]}|dV  	d S )Nrx   r   r   rs     r#   r   z0execute_tool_calls_concurrent.<locals>.<genexpr>  s"      @@!!-A----@@rB   c              3  *   K   | ]}||d         V  d S )Nr
  r   r  s     r#   r   z0execute_tool_calls_concurrent.<locals>.<genexpr>  s&      CCQQ]AaD]]]]CCrB   u   ⚡ /z tools completed in .1fzs totalszthe configured timeoutz': timed out after r  tool_timeoutrb   ri   z*Tool execution cancelled by user interruptz!': thread did not return a resultthread_missing_resultfailedr   "Tool %s returned error (%.2fs): %s(file-mutation verifier record failed: %stool.completedr   r   rO   Tool  completed in .2fTool result (	 chars): rO          ✅ Tool Result: s - tool completed:  (s)Tool complete callback error: content	tool_nametool_use_idenvconfigtool result r>  r?  )p
tool_callsr   r$   r   print
log_prefixappendr   functionr   r   r=   _turns_since_memory_iters_since_skillrf   loads	argumentsJSONDecodeErrorr   rN   r{   rr   TOOL_CALL_NAMEresolve_underlying_callr   rg   r    r   r   r]   r6   hermes_cli.pluginsr   _tool_guardrailsbefore_callallows_execution_guardrail_block_result_checkpoint_mgrr   getget_working_dir_for_pathensure_checkpointr   r*   r+   getcwdjoinry   	enumerate_redact_tool_args_for_displayverbose_loggingkeys_wrap_verboselog_prefix_charstool_progress_callback_build_tool_previewloggingr   tool_start_callback_current_toolr    _should_emit_quiet_tool_messages_should_start_quiet_spinnerrandomchoicer   get_waiting_faces	_print_fnr   setr4   rm   	monotonicmin_MAX_TOOL_WORKERStools.daemon_poolr  submitr   rC   rF   r0   r1   
concurrentfuturesr  cancelr   r   rA   r   _vprintr   shutdownsumstopr.   _append_guardrail_observationr   _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   )Wr!   assistant_messager5   rP   r   rB  	num_tools_tool_budgetr  r   rL   rM   _ts_scope_blockr   _underlying_underlying_args_errrK   r  r  r   block_messageguardrail_decision	file_pathwork_dircmdcwdtool_names_strr  r   r  display_argsargs_strargs_previewpreviewcb_errr   spinnerfacerunnable_callsrq  timed_out_indices	timeout_sdeadliner	  r  executorabandon_executorsubmit_indexr  submit_errorskipped_calls	skipped_i_tcskipped_nameskipped_argsrO   _conc_start_interrupt_loggedwait_timeout	remainingr  not_done_still_runningworker_tidstid_conc_elapsed	completed	total_durr  r   suffix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   sW   ` ``                                                                                @@@r#   execute_tool_calls_concurrentr  2  s    #-JJI %U++L ! !SS9SSSTTT 
	 
	BOO4 f1Afff    
 2Ar{/?AA    
 	 L W} W}	!*/ H$$()E%%n,,'(E$	 Jy'9'CDDMM# 	 	 	MMM	-.. 	M$ 	000000 222696Q6QR_6`6`3-t 
/ 
/"&?&F&FFF(3(8*.*#!NK !N !N !N6
 ).+/ +/ +/  	 	 	D	 +S''/ D"55;+
 +
 +
'' $&*L)++#"3$Yb99?R --!%&6!7!7    %NNNNNN ? ?!!-3&ulB??E2!(D"!=!=!C#E+=rBBHb#*52KR#P#P#VTV%)*:%;%;	! 	! 	!  % % % $% (#z7M*BQVWWW-"/"/'&7!(D"!=!=!C$-"/%)*:%;%;     &+%;%G%GWd%e%e"): #(#@#@AS#T#TL+/(1&3&3+*;%,Yb%A%A%GR(#4&-.@)T&R&R&xVx)-.>)?)?     777E<Q<Y7 - 1 1&" = =I  e#(#8#Q#QR[#\#\-??JcTaJcJcddd    D 
**u/D/L*'++Ir::C.s33 +//	::dbiXZXaXcXc>d>d-??!?S"X!?!?   !   D 	Y}FVXdfz{|||| YYLL|LLLLLN 
X/CU K Ku T TN9NNnNNOOOYbcoqrYsYs 	X 	XUAUD$ 0,@T8tDDLLz,UCCCH$ XMQMM$MMl6G6G6I6I1J1JMMMNNNe))(DJ|TUdi4j4j4jkkllllLOPXMM\a\rLrLrx(?)?(?@5HH  yAVQVV$VVdiikk1B1BVVVVWWWWP\ 	I 	ILD$(,8L#' 	II<T4HHPD-dLAA,,^T7LYYYY I I IGvGGHHHHHHHHI	I Q] F FLD$(,8L#$ 	FF<T4HHPD))"%|DDDD F F FDFDDEEEEEEEEF		F fy GU^_kUlUl W WQQBd,l<P#lCtEUVGAJ )E	WyWW~WWXXXR R R R R R R Rj G--// E4U4U4W4W }]<>>??4 T Ti T T Tcity  uD  E  E  Ecc
 
]fgs]t]t
 
 

 &)ee466	3<3H4>##i//d R	c.113DEEK CBBBBB//KHHHH$H9B>9R9R #+ #+5L"51b$$OO7	BBAr4QUWcdeWfghWi  (   D\RR "!(6|}}(E>..  
 KX " "FIsL,&y193?	3J13M 0%`\ %` %` %` !'
 %1$0$*$'$($)$46"	 2 34 NN1%%%)*OA&& #ikk$)!Q#&L+$,t~/?/?$?	$>>-0UU 5 5+25 5 5(DD ,/|Y+G+GL-7-?-D-D ' .E . .ND(( *4);)@)@#\ *A * *h $ +0@0@H0L0L+/(- - - -%-- - -)
* * * *%6* * * ;% 122 IInRaR&899   "* ' 'AHHJJJJ"< K K*.u/I*J*JKK K K K K K K K K K K K K K K#. % %C% # 4 4T3 ? ? ? ?#, % % % $% 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[ [ [  ]Qp !!--#3 "    !!--#3 "    
  	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 V__kUlUl Z@ Z@QQBd,l<PAJ
 !!!ai,5,A	(((((G_FXtXXPVXXO)""&"3$Rr228b )-!%&6!7!7    ")"2s33MMY) "l4"l"l"l-"&"&*&7!(T2!6!6!<"&3"N%)*:%;%;     #c4"b"b"b-"&"&*&7!(T2!6!6!<""6"1%)*:%;%;     MMpqmM=/=(T[]m "'"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ge5I5&Q&QUZ&Z&Z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<T4HHPD,,RUD,XXXX 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?P0Q0QZfgggg 1}}228YGGGGG }sy  #DDD3A F
F! F!A,I;;J
	J
4AO
OO(BQ//
Q<;Q<):Y$$
Z.Z

Z).[
\"[>>\"Br! /p/ 	3b=<p/ =
eA4e;p/ eE)p/ /kp/ kp/ kp/  "lp/ 
lp/ lDp/ r! /q		r! !As8 z
{#z=={{,,
|6||B
/AB:B:
AC%CAC C AC%c                p4   @A t                     }t          |j        d          D ]\  }A j        r|j        |dz
  d         }|r/                      j         dt          |           dd           |D ]P}|j        j        }		                    t          |	d|	 d|j                             t           d	|	 
           Q nAj        j        @	 t          j        Aj        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} @|j        k    r9|                    |
          \  }}}|s|r|t3                     v r|@|}
nd| d}n# t4          $ r Y nw xY wt7           @|
t9          Add          pd          \  }
}d}d}||}d}n~	 ddlm}  |@|
pdt9           dd          pdt9          Add          pdt9           dd          pdt9           dd          pdt?          |                    }n# t4          $ 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%        st9           dd          dk    rtM          @|
          p|
}t          j'        |d           } j(        rqtS          d!| d"@ d#t?          |*                                           d$           tS           +                    d%t          j'        |d&d'                               nft          |           j,        k    r|d j,                 d(z   n|}tS          d!| d"@ d#t?          |
*                                           d)|            |s@ _-         .                    d*@            |s(	 dd+l/m0}  | j.                   n# t4          $ r Y nw xY w|sq j1        rj	 tM          @|
          p|
}te          @|          } 1                    d,@||           n.# t4          $ r!}tg          j4        d-|            Y d}~nd}~ww xY w|se j5        r^	 tM          @|
          p|
} 5                    Aj        @|           n.# t4          $ r!}tg          j4        d.|            Y d}~nd}~ww xY w|sr@d/v rn j6        j7        rb	 |
8                    d0d          }|r8 j6        9                    |          } j6        :                    |d1@            n# t4          $ r Y nw xY w|s@d2k    r j6        j7        r	 |
8                    d3d          } tw          |           ra|
8                    d4          p%ty          j=        d5ty          j>                              }! j6        :                    |!d6| dd7                     n# t4          $ r Y nw xY wt          j?                    }"|St          j'        d8|id           }#d9}$t           @|
|#t9          Add          pdd:||t?          |          ;
  
         n|a A                    |          }#d9}$t           @|
|#t9          Add          pdd:d<t9          |d=d          pd>t?          |          ;
  
         nw@d?k    rd fdD}%t           @|
t9          Add          pd|%E          \  }#}
t          j?                    |"z
  }$ C                                r)                     dFt          d?|
|$|#G                      n@dHk    rd fdI}%t           @|
t9          Add          pd|%E          \  }#}
t          j?                    |"z
  }$ C                                r)                     dFt          dH|
|$|#G                      nc@dk    rd AfdJ}%t           @|
t9          Add          pd|%E          \  }#}
t          j?                    |"z
  }$ C                                r)                     dFt          d|
|$|#G                      n׉@dKk    rd fdL}%t           @|
t9          Add          pd|%E          \  }#}
t          j?                    |"z
  }$ C                                r)                     dFt          dK|
|$|#G                      nM@dMk    rd fdN}%t           @|
t9          Add          pd|%E          \  }#}
t          j?                    |"z
  }$ C                                r)                     dFt          dM|
|$|#G                      
nÉ@dOk    r|
8                    dP          }&|&r)t'          |&t>                    rdQt          |&           dR}'n)|
8                    dS          pdddT         }(|(rdU|( dVndW}'d}) C                                ri E                                rUt          jG        t          jI                              }*t          |* dX|' dY jJ        Z          })|)K                                 |) _L        d}+	 d fd[}%t           @|
t9          Add          pd|%E          \  }#}
|#}+d _L        t          j?                    |"z
  }$t          dO|
|$|+G          },|)r|)M                    |,           	nP C                                r                     dF|,            	n"# d _L        t          j?                    |"z
  }$t          dO|
|$|+G          },|)r|)M                    |,           w  C                                r                     dF|,            w w xY w jN        r@ jN        v rd}) C                                rt          jG        t          jI                              }*t          @          }-tM          @|
          p|
}t          @|          p@}t          |* dX|- dX| dY jJ        Z          })|)K                                 d}.	 d @fd\}%t           @|
t9          Add          pd|%E          \  }#}
|#}.nQ# t4          $ rD}/t          j'        d8d]@ d^|/ i          }#t"          Q                    d_@|/d`           Y d}/~/nd}/~/ww xY wt          j?                    |"z
  }$t          @|
|$|.G          },|)r|)M                    |,           n+ C                                r                     dF|,            n# t          j?                    |"z
  }$t          @|
|$|.G          },|)r|)M                    |,           w  C                                r                     dF|,            w w xY w jR        r: jR        S                    @          rd}) C                                r E                                rt          jG        t          jI                              }*t          @          }-tM          @|
          p|
}t          @|          p@}t          |* dX|- dX| dY jJ        Z          })|)K                                 d}0	 d @fda}%t           @|
t9          Add          pd|%E          \  }#}
|#}0nQ# t4          $ rD}/t          j'        d8db@ d^|/ i          }#t"          Q                    dc@|/d`           Y d}/~/nd}/~/ww xY wt          j?                    |"z
  }$t          @|
|$|0G          },|)r|)M                    |,           n C                                r                     dF|,            n# t          j?                    |"z
  }$t          @|
|$|0G          },|)r|)M                    |,           w  C                                r                     dF|,            w w xY w j%        rd}) C                                r E                                rt          jG        t          jI                              }*t          @          }-tM          @|
          p|
}t          @|          p@}t          |* dX|- dX| dY jJ        Z          })|)K                                 d}1	 t                      U                    @|
Aj         jV        pdt9           dd          pdt9           dd          pd jW        rt?           jW                  ndddt9           ddd          t9           ded          t?          |          f          }#|#}1n# t          $ r_ t           @|
t9          Add          pd|"t?          |          g          }#|#}1	  Z                    dh           n# t4          $ r Y nw xY w t4          $ r0}/di@ dj|/ }#t"          Q                    dk@|/d`           Y d}/~/nd}/~/ww xY wt          j?                    |"z
  }$t          @|
|$|1G          },|)r|)M                    |,           n C                                r                     dF|,            n# t          j?                    |"z
  }$t          @|
|$|1G          },|)r|)M                    |,           w  C                                r                     dF|,            w w xY w	 t                      U                    @|
Aj         jV        pdt9           dd          pdt9           dd          pd jW        rt?           jW                  ndddt9           ddd          t9           ded          t?          |          f          }#n# t          $ r] t           @|
t9          Add          pd|"t?          |          g           	  Z                    dh           n# t4          $ r Y nw xY w t4          $ r0}/di@ dj|/ }#t"          Q                    dk@|/d`           Y d}/~/nd}/~/ww xY wt          j?                    |"z
  }$t'          |#t                    r8 j(        r|#nt          |#          dlk    r
|#ddl         n|#}2t          |#          }3n|#}2t          t          |#                    }3t          @|#          \  }4}5ddml]m^}6 | o |6 @          }7|7rEt           @|
|#t9          Add          pdt          |$dnz            t?          |          o           |sA `                    @|
|#|4p          }# j(        r|#nt          |#          dlk    r
|#ddl         n|#}2|4rt"                              dq@|$|2           nt"          a                    dr@|$|3           |sF	  b                    @|
|#|4           n,# t4          $ r}8tg          j4        ds|8           Y d}8~8nd}8~8ww xY w|sS j1        rL	  1                    dt@dd|$|4|#u           n.# t4          $ r!}tg          j4        d-|            Y d}~nd}~ww xY wd _-         .                    dv@ dw|$dxdy            j(        rRtg          j4        dz@ d{|$d|d}           t          |#          }9tg          j4        d~t          |9           d|9            |sf jd        r_	 tM          @|
          p|
} d                    Aj        @||#           n.# t4          $ r!}tg          j4        d|            Y d}~nd}~ww xY wt          |#          s&t          |#@Aj        t                    |          n|#}# jh        i                    @|
          }:|:r%t          |#          rt          |#|:           n|#|:z  }# k                    @|#          };	                    t          @|;Aj                             t           d@ 
            l                    d            j%        st9           dd          dk    r j(        r;tS          d| d{|$d|d}           tS           +                    d|#                     nkt'          |#t                    r|#nt          |#          }<t          |<           j,        k    r|<d j,                 d(z   n|<}=tS          d| d{|$d|d|=             j        r|t          |j                  k     rt          |j                  |z
  }>                      j         d|> dd           |j        |d         D ]P}|j        j        }		                    t          |	d|	 d|j                             t           d|	 
           Q n> jm        dk    r1|t          |j                  k     rt          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.rx   Nr   r   Tr  r   r   r   r   z(Unexpected JSON error after validation: r   rq   r   r   r   r)   r   r   r   r   rV   rW   rX   r   r   r   r   r   r   Frd   r   r   r   r   r   r   r   r   r   zexecuting tool: r   r   r   r   >   r   r   r   r   r   r   r   r   r   r   rc   r   r   r   r   r   r   todor   rN   r   r   c                    ddl m}  ||                     d          |                     dd          j                  S )Nr   )	todo_tooltodosmergeF)r  r  store)tools.todo_toolr  rT  _todo_store)r   
_todo_toolr!   s     r#   r   z/execute_tool_calls_sequential.<locals>._execute  sT    CCCCCC!z#--00#--77+   rB   )rL   rM   rP   rQ   r   r2  r1  session_searchc                                                    }|s%ddlm} t          j        d |            d          S ddlm}  ||                     dd          |                     d          |                     d	d
          |                     d          |                     d          |                     dd          |                     d          |j        	  	        S )Nr   )format_session_db_unavailableF)successrc   )r  queryr)   role_filterlimitr
  rV   around_message_idwindowr  sort)	r  r  r  rV   r  r  r  dbcurrent_session_id)	_get_session_db_for_recallhermes_stater  rf   rg   tools.session_search_toolr  rT  rV   )r   
session_dbr  _session_searchr!   s       r#   r   z/execute_tool_calls_sequential.<locals>._execute  s    "==??
! dJJJJJJ:%B_B_BaBa&b&bcccWWWWWW&#--44 )m < <#--33(}}\::&/mm4G&H&H$==155"v..!','7
 
 
 
rB   c                Z   |                      dd          }|                      d          }ddlm}  ||                      d          ||                      d          |                      d          |j        	          }j        r"j                            || fd
           |S )Ntargetr   
operationsr   )memory_toolactionr;  old_text)r  r  r;  r  r  r  c                 P                          t          dd                     S )Nr   )rY   rQ   )_build_memory_write_metadatar   )r!   rP   r   s   r#   <lambda>zAexecute_tool_calls_sequential.<locals>._execute.<locals>.<lambda>  s/    u/Q/Q$5)0D$)G)G 0R 0 0 rB   )build_metadata)rT  tools.memory_toolr  _memory_store_memory_managernotify_memory_tool_write)r   r  r  _memory_toolrO   r!   rP   r   s        r#   r   z/execute_tool_calls_sequential.<locals>._execute  s    "x::&]]<88
IIIIII%$==22!%MM)44&]]:66)-   ( )BB!( ( ( ( ( ( C    rB   clarifyc                    ddl m}  ||                     dd          |                     d          j                  S )Nr   )clarify_toolquestionr)   choices)r  r  callback)tools.clarify_toolr  rT  clarify_callback)r   _clarify_toolr!   s     r#   r   z/execute_tool_calls_sequential.<locals>._execute  sT    LLLLLL$}&]]:r::%MM)44"3   rB   read_terminalc           	         ddl m}  ||                     d          |                     d          t          dd                     S )Nr   )read_terminal_tool
start_linecountread_terminal_callback)r  r  r  )tools.read_terminal_toolr  rT  r   )r   _read_terminal_toolr!   s     r#   r   z/execute_tool_calls_sequential.<locals>._execute  s]    ^^^^^^**(}}\::#--00$U,DdKK   rB   delegate_tasktasksu   🔀 delegating u    tasks · (/agents to monitor)goalr  u   🔀 u    · (/agents to monitor)u'   🔀 delegating · (/agents to monitor) r   r   c                .                         |           S r   )_dispatch_delegate_task)r   r!   s    r#   r   z/execute_tool_calls_sequential.<locals>._execute  s     88CCCrB   c                >    j                             |           S )N)r5   )r   handle_tool_call)r   r!   rL   r5   s    r#   r   z/execute_tool_calls_sequential.<locals>._execute<  s#     3DD]T]hpDqqqrB   zContext engine tool 'z
' failed: z1context_engine.handle_tool_call raised for %s: %sr   c                :    j                             |           S r   )r  r  )r   r!   rL   s    r#   r   z/execute_tool_calls_sequential.<locals>._execute^  s     0AA-QZ[[[rB   zMemory tool 'z1memory_manager.handle_tool_call raised for %s: %srt   ru   )
rQ   rV   rZ   r[   enabled_toolsskip_pre_tool_call_hookr   rt   ru   r   r   r   r   r   z&handle_function_call raised for %s: %sr   )!agent_runtime_owns_post_tool_hookrl   )rL   rM   rO   rP   rQ   rG   rK   r&  r(  r   r)  r*  r+  r6  r7  r"  r8  r,  r-  r.  r#  r/  r0  r9  r:  r@  r3  r4  r5  z remaining tool call(s)u   [Tool execution skipped — z* was not started. User sent a new message]zskipped tool result rA  r   )pr$   rY  rB  r   rs  rD  r   rF  r   rE  r   r   r=   rf   rI  rJ  rK  r0   r1   r   rN   r{   rr   rL  rM  r   r    r   r   rN  r   r6   rO  rP  rQ  rG  rH  ry   rZ  rg   r[  rC  r\  r]  r^  rc  r   r   r   r_  r`  ra  r   rb  rS  r   rT  rU  rV  r   r*   r+   rW  rm   r]   rR  r   rd  ry  re  rf  rg  r   rh  ri  r   _delegate_spinnerrv  _context_engine_tool_names_get_tool_emoji_build_tool_labelrc   r  has_toolrA   handle_function_callrV   valid_tool_namesr   rn   r   r8   r   agent.agent_runtime_helpersr   r   rw  r   rx  r   r{  r   r   r   r|  r}  r   r~  r  
tool_delaysleepr   )Br!   r  r5   rP   r   r  r  remaining_calls
skipped_tcr  rM   er  r   r  r  r  rK   
_block_msg_block_error_typer   _guardrail_block_decisionr  _execution_blockedr  r  r  r   r  r  r  r  r  r  tool_start_timer  r  r   	tasks_argspinner_labelgoal_previewr  r  _delegate_resultr  emoji
_ce_resultr   _mem_result_spinner_resultr  _result_len_is_error_resultr   r   _executor_must_emit_post_hookr  _log_resultr  r  _fr_strr  r  num_tools_seqrL   r   sB   ` ``                                                            @@r#   execute_tool_calls_sequentialr!    s"    %U++L!"3">BB R
) R
)9 % 	/:1Q344@O |!1nn3K_K_nnnvz{{{-  
)27 8 f\fffM! !   
 6A<AA    
 E!*/	 Jy'9'CDDMM# 	 	 	NNIaIIJJJMMMMMM	 -.. 	M
 *.	000000 222696Q6QR_6`6`3-t  "&?&F&FFF(3(8J J J J (  	 	 	D	 +S''/ D"55;+
 +
 +
'' %)
*&(J 2NNNNNN<<!!-3&ulB??E2!(D"!=!=!C#E+=rBBHb#*52KR#P#P#VTV%)*:%;%;	 	 	

     CG!!&!7!C!CMS`!a!a%6 ?,>)'t3\7PX\7\ 	) h&&()E%%n,,'(E$ 	jGE3G$O$OSX$X$X8VVgZgLz,UCCCH$ jVQVV-VV$|?P?P?R?R:S:SVVVWWWe))(DJ|TUdi4j4j4jkkllllLOPXMM\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ZZk^k-m\JJ,,^]GUabbbb I I IGvGGHHHHHHHHI " 	Fe&? 	FF<]MZZk^k))),|TTTT 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M)++&"3$Yb99?R ,(!%&6!7!7     '2 $;;<UVVOM)++&"3$Yb99?R ,%&?DQQwUw!%&6!7!7     f$$      .R++"3$Yb99?R . . .*O] !IKK/9M5577 @~#>v}Vcl{#|#|#|~~...     " .R++"3$Yb99?R . . .*O] !IKK/9M5577 J  I#>?OQ^`m  wF  $G  $G  $G  I  I  J  J  Jh&&       2 .R++"3$Yb99?R . . .*O] !IKK/9M5577 B  A#>xXen}#~#~#~  A  A  B  B  Bi''      .R++"3$Yb99?R . . .*O] !IKK/9M5577 C  B#>y-Yfo~###  B  B  C  C  Co--      .R++"3$Yb99?R . . .*O] !IKK/9M5577 I  H#>P]_l  vE  $F  $F  $F  H  H  I  I  Io--%))'22I Z	488  a3y>> a a a - 1 1& 9 9 ?R"E $CBLBBBBB 
 G5577  E<]<]<_<_  }]%D%F%FGG'4(A(A-(A(APVafapqqq&-E##3D D D D D D1U"/"/&7!(D"!=!=!C$2 2 2. $3 *.' $	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ZZk^k+M<HHYM'4(C(C%(C(C'(C(CRXchcrsssJ3r r r r r r r r1U"/"/&7!(D"!=!=!C$2 2 2. -

 | | |"&*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" v	:u'<'E'Em'T'T v	: G5577  E<]<]<_<_  }]%D%F%FGG'66<]MZZk^k+M<HHYM'4(C(C%(C(C'(C(CRXchcrsssK3\ \ \ \ \ \ \1U"/"/&7!(D"!=!=!C$2 2 2. . | | |"&*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 T	:G5577  E<]<]<_<_  }]%D%F%FGG'66<]MZZk^k+M<HHYM'4(C(C%(C(C'(C(CRXchcrsss"O(3"%%%"<"<!=2C!*$/52#E+=rBBHb#*52KR#P#P#VTVBGBX"b$u'=">">">^b,015%,U4F%M%M&-e5H$&O&O267G2H2H #= # # #2$   "I"/"/&7!(D"!=!=!C.%)*:%;%;# # # #2OO$89999    D 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!*$/52#E+=rBBHb#*52KR#P#P#VTVBGBX"b$u'=">">">^b,015%,U4F%M%M&-e5H$&O&O267G2H2H #= # # %   7"/"/&7!(D"!=!=!C.%)*:%;%;   OO$89999    D 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! 	RQQQQQ"" H11%GG 	& ) 
	)++&"3$Yb99?R 455!%&6!7!7	 	 	 	 " 		#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<]MZZk^k,,Y\=,Xghhhh 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|\\]]]-000	
 	
 	
 	
 	228Q??? 	`GE3G$O$OSX$X$X$ `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! !   
 6???    
 EaA,=,H(I(I$I$IJu'((( )455MqHm^__5>J[;\;\eqrrrr
 q228]KKKKK s:  C<<D4D//D4A
F
F)(F) A,I
II3P


PP$:Q
R
)RR
.S
S1S,,S1AU
U%$U%=BX
XX1l44A7n+$3ru
s&":s!u!s&&uA0w	'2{~
|($:|#~#|((~A0A@CB$AE3E2AJE3A AHF4AG
G	AHG

AGGAHGAGGAHG$&AHH
AJHAHHAJJA0AK7K;B"ANN>AP=OAO3O2AP=O3
AP O=AP=O?AP P AP=P&AP8P8AP=V3AWW
AW5WAW0W0AW5XAXX
AY
X)AYYAY
[/A\\
A\/\A\*\*A\/r  r!  )r   r   )r   r&   )r5   r6   r7   r8   r   r9   )r<   rC   r   rD   )rL   r8   rM   rN   rO   r   rP   r8   rQ   r8   rG   r   rH   rR   rI   rR   rJ   rR   rK   rS   r   r9   )r^   )r_   r8   r   r8   )rL   r8   rM   rN   rP   r8   rQ   r8   rj   r.   r_   r8   rI   r8   rK   rS   r   r8   )r   ro   )
rL   r8   rM   rN   rP   r8   rQ   r8   r   r   )
rL   r8   rM   rN   rP   r8   rQ   r8   r   r   )r   )r5   r6   rP   r8   r   r   r   r9   )A__doc__
__future__r   concurrent.futuresrp  rf   ra  r*   rf  r   rm   typingr   r   agent.displayr   r   r`  r   r  r	   ry  r
   r  r   rZ  r   agent.tool_guardrailsr   agent.tool_dispatch_helpersr   r   r   r   r   tools.terminal_toolr   tools.thread_contextr   tools.tool_result_storager   r   tools.budget_configr   r   r   	getLogger__name__r0   r$   rm  r-   r4   r=   rA   rF   r]   rh   rn   r   r   r   r  r!  __all__r   rB   r#   <module>r0     sC  
 
 # " " " " "       				                                        8 7 7 7 7 7                   = < < < < <        X W W W W W W W W W		8	$	$   "   &+ "   $\ \ \ \&  P P P P ! $7;           F    $ #*7;     :. . . .b! ! ! !6! ! ! !@O
H O
H O
H O
H O
Hfa
L a
L a
L a
L a
LN $#rB   