
    i#                     `    d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	m
Z
 ddlmZ  G d d      Zy)	zLog manager compatibility shim.

LogManager now wraps WorkflowLogger for backward compatibility.
All timing helpers live inside WorkflowLogger; prefer using it directly.
    N)contextmanager)AnyDictList)	CallStageLogLevel)WorkflowLoggerc                      e Zd ZdZd8defdZdefdZedefd       Z	edefd	       Z
edefd
       Zedefd       Zededefd       Zededefd       Zedededefd       Zedefd       Z	 	 d9dedeeeef      dedeeef   ddf
dZ	 	 d9dededeeef   ddfdZ	 d8dededeeef   ddfdZ	 	 d:dedededeeef   ddf
dZdddej2                  fdededededeeef   deddfd Zd!ddej2                  fdeded"edz  d#edeeef   deddfd$Z	 d8ded%ed&ededeeef   ddfd'Z	 	 d9dededed(edeeef   ddfd)Zd8d*eeef   ddfd+Z	 	 d;d"edeeef   ddfd,Z 	 	 d9d-ededeeef   ddfd.Z!	 	 d9d-ededeeef   ddfd/Z"	 	 d9d-ededeeef   ddfd0Z#	 	 d9d-ededeeef   ddfd1Z$	 	 d9d-ededeeef   ddfd2Z%deeef   fd3Z&de'fd4Z(deeef   fd5Z)d6eddfd7Z*y)<
LogManagerzABackward-compatible wrapper that delegates to ``WorkflowLogger``.Nloggerc                     || _         y Nr   )selfr   s     >/Users/bowang/.openclaw/workspace/ChatDev/utils/log_manager.py__init__zLogManager.__init__   s	        returnc                     | j                   S )z2Return the underlying ``WorkflowLogger`` instance.r   r   s    r   
get_loggerzLogManager.get_logger   s    {{r   node_idc              #   t   K   | j                   j                  |      5  d ddd       y# 1 sw Y   yxY ww)z*Context manager that times node execution.N)r   
node_timerr   r   s     r   r   zLogManager.node_timer   s(      [[##G, -,,   8,	858c              #   t   K   | j                   j                  |      5  d ddd       y# 1 sw Y   yxY ww)z-Context manager that times model invocations.N)r   model_timerr   s     r   r   zLogManager.model_timer#   (      [[$$W- .--r   c              #   t   K   | j                   j                  |      5  d ddd       y# 1 sw Y   yxY ww)z-Context manager that times agent invocations.N)r   agent_timerr   s     r   r!   zLogManager.agent_timer)   r   r   c              #   t   K   | j                   j                  |      5  d ddd       y# 1 sw Y   yxY ww)z.Context manager that times human interactions.N)r   human_timerr   s     r   r#   zLogManager.human_timer/   r   r   	tool_namec              #   v   K   | j                   j                  ||      5  d ddd       y# 1 sw Y   yxY ww)z,Context manager that times tool invocations.N)r   
tool_timer)r   r   r$   s      r   r&   zLogManager.tool_timer5   s*      [[##GY7 877   9-	969stagec              #   v   K   | j                   j                  ||      5  d ddd       y# 1 sw Y   yxY ww)z.Context manager that times thinking workflows.N)r   thinking_timer)r   r   r(   s      r   r*   zLogManager.thinking_timer;   s*      [[''7 877r'   operation_typec              #   x   K   | j                   j                  |||      5  d ddd       y# 1 sw Y   yxY ww)z-Context manager that times memory operations.N)r   memory_timer)r   r   r+   r(   s       r   r-   zLogManager.memory_timerA   s-      [[%%g~uE FEEs   :.	:7:operation_namec              #     K   t        j                          }	 d t        j                          }||z
  }|| j                  j                  |<   y# t        j                          }||z
  }|| j                  j                  |<   w xY ww)z-Context manager that times custom operations.N)timer   _timers)r   r.   
start_timeend_timedurations        r   operation_timerzLogManager.operation_timerG   sp      YY[
	;yy{H :-H2:DKK/ yy{H :-H2:DKK/s   BA 3B4BBinputs	node_typedetailsc                 @    | j                   j                  ||||       y)zRecord the start of a node.N)r   
enter_node)r   r   r6   r7   r8   s        r   record_node_startzLogManager.record_node_startV   s     	w	7Cr   outputc                     |t        t        |            nd}| j                  j                  |      }| j                  j	                  |||||       y)zRecord the end of a node.Nr   )lenstrr   	get_timer	exit_node)r   r   r<   r8   output_sizer4   s         r   record_node_endzLogManager.record_node_end[   sG     +1*<c#f+&!;;((1gvxgNr   	from_nodeto_nodec                 >    | j                   j                  |||       y)z Record an edge processing event.N)r   record_edge_process)r   rD   rE   r8   s       r   rG   zLogManager.record_edge_processb   s     	''	7GDr   
input_datac                     |t        t        |            nd}|t        t        |            nd}| j                  j                  d|       }||d|xs i }| j                  j	                  |||||       y)zRecord a human interaction.Nr   human_
input_sizerB   )r>   r?   r   r@   record_human_interaction)	r   r   rH   r<   r8   rL   rB   r4   call_detailss	            r   rM   z#LogManager.record_human_interactiong   s     .8-CSZ)
*0*<c#f+&!;;((6');<$&
 }"

 	,,Z<	
r   
model_namec           	          |t        t        |            nd}|t        t        |            nd}| j                  j                  d|       }	||d|xs i }
| j                  j	                  |||||	|
|       y)zRecord a model invocation.Nr   model_rK   )r>   r?   r   r@   record_model_call)r   r   rO   rH   r<   r8   r(   rL   rB   r4   rN   s              r   rR   zLogManager.record_model_callv   s    
 .8-CSZ)
*0*<c#f+&!;;((6');< %&
 }"
 	%%ZVX|U	
r   Tsuccesstool_resultc           	          | j                   j                  d| d|       }d|t        t        |            ndi|xs i }| j                   j	                  |||||||       y)zRecord a tool invocation.tool__result_sizeNr   )r   r@   r>   r?   record_tool_call)	r   r   r$   rS   rT   r8   r(   r4   tool_detailss	            r   rY   zLogManager.record_tool_call   sr    
 ;;((5	9+)FGK4K3s;/0QR
}"
 	$$WihPWYeglmr   thinking_modethinking_resultc                     | j                   j                  d| d|       }| j                   j                  ||||||       y)zRecord a thinking stage.	thinking_rW   N)r   r@   record_thinking_process)r   r   r[   r\   r(   r8   r4   s          r   r_   z"LogManager.record_thinking_process   sD     ;;((9WIQug)FG++G]OUZ\dfmnr   retrieved_memoryc                     | j                   j                  d| d| d|       }d|t        t        |            ndi|xs i }| j                   j	                  ||||||       y)zRecord a memory operation.memory_rW   rX   Nr   )r   r@   r>   r?   record_memory_operation)r   r   r+   r(   r`   r8   r4   memory_detailss           r   rc   z"LogManager.record_memory_operation   sz     ;;((77)1^<LAeW)UV9I9U3s#345[\
}"
 	++G5E~W\^fhvwr   workflow_configc                 :    | j                   j                  |       y)z Record the workflow start event.N)r   record_workflow_start)r   re   s     r   rg   z LogManager.record_workflow_start   s    ))/:r   c                     t        j                          | j                  j                  j                         z
  }| j                  j	                  |||       y)zRecord the workflow end event.N)r0   r   r2   	timestamprecord_workflow_end)r   rS   r8   workflow_durations       r   rj   zLogManager.record_workflow_end   s?     "YY[4;;+A+A+K+K+MM''1BGLr   messagec                 @    | j                   j                  |||       y)zRecord debug information.r8   N)r   debugr   rl   r   r8   s       r   ro   zLogManager.debug        	'7G<r   c                 @    | j                   j                  |||       y)zRecord general information.rn   N)r   inforp   s       r   rs   zLogManager.info   s     	'7;r   c                 @    | j                   j                  |||       y)zRecord warning information.rn   N)r   warningrp   s       r   ru   zLogManager.warning   s     	GWg>r   c                 @    | j                   j                  |||       y)zRecord error information.rn   N)r   errorrp   s       r   rw   zLogManager.error   rq   r   c                 @    | j                   j                  |||       y)z"Record critical error information.rn   N)r   criticalrp   s       r   ry   zLogManager.critical   s     	Wgw?r   c                 6    | j                   j                         S )zReturn the execution summary.)r   get_execution_summaryr   s    r   r{   z LogManager.get_execution_summary   s    {{0022r   c                 6    | j                   j                         S )zReturn all logs.)r   get_logsr   s    r   get_all_logszLogManager.get_all_logs   s    {{##%%r   c                 6    | j                   j                         S )z$Convert the logs to dictionary form.)r   to_dictr   s    r   logs_to_dictzLogManager.logs_to_dict   s    {{""$$r   filepathc                 :    | j                   j                  |       y)zPersist logs to a file.N)r   save_to_file)r   r   s     r   	save_logszLogManager.save_logs   s      *r   r   )NN)NNN)TN)+__name__
__module____qualname____doc__r	   r   r   r   r?   r   r   r!   r#   r&   r*   r-   r5   r   r   r   r;   rC   rG   rM   r   AFTERrR   boolrY   r_   rc   rg   rj   ro   rs   ru   rw   ry   r{   listr~   r   r    r   r   r   r      s   K~ N  #  
 3  
 3  
 3  
 # #  
 c #  
 C  S  
 ;c ; ; ^b48D Dd4S>6J DWZ D#'S>D=AD
 ;?26Os OC O!%c3hO;?O 7;ES E3 E%)#s(^E?CE
 \`;?
 
 
UX 
*.sCx.
DH
  -148-6__
 
# 
&)
:=
#'S>
 "+
 BF
( 1537,5OO
n 
n 
n"&+
nCF
n"&sCx.
n !*
n AE
n GKos o3 oY\ o'*o59#s(^oOSo EI:>	xs 	xC 	x'*	x>A	x)-c3h	xCG	x;T#s(^ ;t ; 376:M4 M%)#s(^M?CM 26(,=S =3 =CH~=15=
 15'+<C <# <38n<04<
 48*.?s ?S ?c3h?37?
 26(,=S =3 =CH~=15=
 59+/@ @c @sCx.@48@
3tCH~ 3&d &%d38n %+# +$ +r   r   )r   r0   
contextlibr   typingr   r   r   entity.enumsr   r   utils.loggerr	   r   r   r   r   <module>r      s*     % " " , 'H+ H+r   