
    bi                       U d Z ddlmZ ddlZddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ dd	lmZ  ej                   e      Zi ad
ed<   i ad
ed<   ddZddZddZ	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZy)z7Callback-based tracing for Google ADK agents and tools.    )annotationsN)datetimetimezone)AnyOptionalget_current_run_tree)RunTree   ) convert_adk_content_to_langsmithz dict[str, tuple[RunTree, float]]_active_agent_runs_active_tool_runsc                     t               S )Nr        r/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/langsmith/integrations/google_adk/_hooks.py_get_parent_runr      s    !!r   c           	     b   t        | dd      }|syt        | dd      xs d}t               }|sy	 t        j                         }i }t        | dd      x}rUt        |dd      x}	rF|	D 
cg c]%  }
t        |
dd      st        |
j                        ' }}
|rdj                  |      |d	<   |j                  |d
|t        j                  |t        j                              }|j                          ||ft        |<   yc c}
w # t        $ r"}t        j                  d|        Y d}~yd}~ww xY w)z&Create chain run for agent invocation.invocation_idN
agent_namegoogle_adk_agentuser_contentpartstext inputchaintznamerun_typeinputs
start_timez Error in before_agent_callback: )getattrr   timestrr   joincreate_childr   fromtimestampr   utcpostr   	Exceptionloggerwarning)callback_contextargskwargsr   r   parentr$   r#   r   r   p
text_parts	agent_runes                 r   before_agent_callbackr8      s0   ,otDM)<>TBTJF?YY[
!#"#3^TJJ<Jgt<<u<38UaGAvt<Tc!&&kU
U&)hhz&:F7O''--jX\\J	 ( 
	 	-6
,C=) V  ?9!=>>?s0   8D (C>;C>A+D >D 	D.D))D.c                H   t        | dd      }|syt        j                  |d      }|sy	 |\  }}i }t        | dd      x}rt        |      |d<   |j	                  |r|nd       |j                          y# t        $ r"}	t        j                  d|	        Y d}	~	yd}	~	ww xY w)z End agent run with final output.r   Nfinal_responseoutput)outputszError in after_agent_callback: )	r%   r   popr   endpatchr-   r.   r/   )
r0   r1   r2   r   run_infor6   _r<   r:   r7   s
             r   after_agent_callbackrB   :   s    ,otDM!%%mT:H	>	1"$$%57GNN>N @ PGHgd; >8<==>s   A
A6 6	B!?BB!c           	        t        |dd      xs dt        |        dt        |       }t        | dd      xs t        |       j                  }t	               }|sy	 t        j
                         }|j                  |d|xs i t        j                  |t        j                              }	|	j                          |	|ft        |<   y# t        $ r"}
t        j                  d	|
        Y d}
~
yd}
~
ww xY w)
z!Create tool run before execution.function_call_idNtool_rA   r!   toolr   r    zError in before_tool_callback: )r%   idtype__name__r   r&   r)   r   r*   r   r+   r,   r   r-   r.   r/   )rF   r1   tool_context
other_argsr2   rD   	tool_namer3   r$   tool_runr7   s              r   before_tool_callbackrN   P   s    
 	0$7 	12d8*Ab./0  fd+BtDz/B/BIF>YY[
&&:2--jX\\J	 ' 
 	/7.D*+ >8<==>s   A+C 	C3C..C3c                D   t        |dd      xs dt        |        dt        |       }t        j                  |d      }|sy	 |\  }}	t	        |t
              r=|}
|j                  dd      }|r$|j                  d      xs |j                  d      nd}n-t	        |t              rd	|i}
d}n|dt        |      i}
d}ni }
d}|j                  |
|rt        |      nd
       |j                          y# t        $ r"}t        j                  d|        Y d}~yd}~ww xY w)zEnd tool run with response.rD   NrE   rA   is_errorFerrorr;   content)r<   rQ   zError in after_tool_callback: )r%   rG   r   r=   
isinstancedictgetlistr'   r>   r?   r-   r.   r/   )rF   r1   rJ   tool_responserK   r2   rD   r@   rM   rA   r<   rP   	error_msgr7   s                 r   after_tool_callbackrY   k   s4    	0$7 	12d8*Ab./0  !$$%5t<H=!mT*#G$((U;H  !!'*Im.?.?.I 
 t, -0GI&]!34GIGIWiC	NTR =7s;<<=s   B/C4 4	D=DDc                    t         j                         D ]+  \  } \  }} 	 |j                  d       |j                          - t
        j                         D ]+  \  } \  }} 	 |j                  d       |j                          - t         j                          t
        j                          y# t        $ r Y w xY w# t        $ r Y qw xY w)z/Clear all active runs (call when session ends).zSession ended)rQ   N)r   itemsr>   r?   r-   r   clear)rA   runs     r   clear_active_runsr^      s     *//1 8C	GG/G*IIK )..0 8C	GG/G*IIK   		  		s#   "B.!"B=.	B:9B:=	C	C	)returnzOptional[RunTree])r0   r   r1   r   r2   r   r_   None)rF   r   r1   dict[str, Any]rJ   r   rK   r   r2   r   r_   r`   )rF   r   r1   ra   rJ   r   rW   r   rK   r   r2   r   r_   r`   )r_   r`   )__doc__
__future__r   loggingr&   r   r   typingr   r   langsmith.run_helpersr	   langsmith.run_treesr
   	_messagesr   	getLoggerrI   r.   r   __annotations__r   r   r8   rB   rN   rY   r^   r   r   r   <module>rk      s    = "   '   6 ' 7			8	$79 4 968 3 8"?B>,>
>#>36>EH>TW>	>6)=
)=
)= )= 	)=
 )= )= 
)=Xr   