
    fi;.                        d dl mZ d dlmZmZmZmZ d dlZd dlm	Z	m
Z
m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 d d
lmZ n# e$ r  ed          w xY w G d de          Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%dS )    wraps)AnyCallableListOptionalN)set_data_normalizednormalize_message_rolestruncate_and_annotate_messages)OPSPANDATA)DidNotEnableIntegration)should_send_default_pii)safe_serialize)
StateGraph)Pregelzlanggraph not installedc                   :    e Zd ZdZde ZddZed             ZdS )LanggraphIntegration	langgraphzauto.ai.Tc                     || _         d S )N)include_prompts)selfr   s     q/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/langgraph.py__init__zLanggraphIntegration.__init__   s    .    c                  0   t          t          j                  t          _        t          t          d          r#t          t          j                  t          _        t          t          d          r%t          t          j                  t          _        d S d S )Ninvokeainvoke)	_wrap_state_graph_compiler   compilehasattrr   _wrap_pregel_invoker   _wrap_pregel_ainvoker    r   r   
setup_oncezLanggraphIntegration.setup_once   sn     7z7IJJ
68$$ 	?/>>FM69%% 	B1&.AAFNNN	B 	Br   N)T)__name__
__module____qualname__
identifieroriginr   staticmethodr&   r%   r   r   r   r      sZ        J$
$$F/ / / / B B \B B Br   r   c                     dD ]=}t          | |          r+t          | |          }|rt          |t                    r|c S >d S )N)name
graph_namer'   _name)r"   getattr
isinstancestr)	graph_objattrr.   s      r   _get_graph_namer6   0   sZ    ;  9d## 	9d++D 
4-- 4r   c                     t          | d          sd S t          | dd           | j        d}dD ])}t          | |          rt          | |          }||||<   *|S )Ncontenttype)roler8   )r.   
tool_callsfunction_calltool_call_id)r"   r1   r8   )messageparsedr5   values       r   _normalize_langgraph_messagerA   :   sy    7I&& tgvt44QQFG % %7D!! 	%GT**E $tMr   c                    | sd S d }t          | t                    r|                     d          }nct          | d          r| j        }nKt          | d          r;t          | j                  r'	 |                     d          }n# t          $ r Y nw xY w|rt          |t          t          f          sd S g }|D ]9}	 t          |          }|r|
                    |           *# t          $ r Y 6w xY w|r|nd S )Nmessagesget)r2   dictrD   r"   rC   callable	ExceptionlisttuplerA   append)staterC   normalized_messagesr>   
normalizeds        r   _parse_langgraph_messagesrN   J   sJ    tH% 99Z((	
	#	# >			 8EI#6#6 	yy,,HH 	 	 	D	  :hu>> t  	5g>>J 7#**:666 	 	 	H	 #6?4?s$   /B 
BB<&C##
C0/C0c                 <     t                      fd            }|S )Nc                 :   t          j                                        t                    }| | g|R i |S t          j        t
          j        t          j                  5 } | g|R i |}t          |dd           }|	                    t          j        d           |	                    t          j        |           |rd| |_        nd|_        |                    dd           3|	                    t          j        |                    d                     d }t          |dd           }|rt!          |          r|                                }	t          |	dd           }
|
rut%          |
t&                    r`|
                    d          }|rIt          |d	d           }|r6t)          |d
          r&t+          |j                                                  }| |	                    t          j        |           |cd d d            S # 1 swxY w Y   d S )N)opr+   r.   create_agentzcreate_agent model	get_graphnodestoolsdatatools_by_name)
sentry_sdk
get_clientget_integrationr   
start_spanr   GEN_AI_CREATE_AGENTr+   r1   set_datar   GEN_AI_OPERATION_NAMEGEN_AI_AGENT_NAMEdescriptionrD   GEN_AI_REQUEST_MODELrF   rT   r2   rE   r"   rH   rX   keysGEN_AI_REQUEST_AVAILABLE_TOOLS)r   argskwargsintegrationspancompiled_graphcompiled_graph_namerV   rT   r4   rU   
tools_noderW   fs                r   new_compilez._wrap_state_graph_compile.<locals>.new_compilel   sz    !+--==>RSS1T+D+++F+++"%'.
 
 
 !	" Qt5d555f55N").&$"G"GMM(8.IIIMM(46IJJJ" 2#H3F#H#H  #1 zz'4((4h;VZZ=P=PQQQETBBI DXi00 D*4466		7D99 DZt44 D!&7!3!3J! D&z64@@ DGD/$B$B D$();)@)@)B)B$C$CE hEuMMM!C!	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	" !	"s   %FHHHr   )rl   rm   s   ` r   r    r    j   s5    
1XX&" &" &" &" X&"P r   c                 <     t                      fd            }|S )Nc                 ~   t          j                                        t                    }| | g|R i |S t	          |           }|rd|                                 nd}t          j        t          j        |t          j	                  5 }|r@|
                    t          j        |           |
                    t          j        |           |
                    t          j        d           d }t          |          dk    r~t!                      rp|j        rit%          |d                   }|rRt'          |          }t          j                    }	t+          |||	          }
|
t-          |t          j        |
d            | g|R i |}t1          ||||           |cd d d            S # 1 swxY w Y   d S Nzinvoke_agent invoke_agent)rQ   r.   r+   r   FunpackrY   rZ   r[   r   r6   stripr\   r   GEN_AI_INVOKE_AGENTr+   r^   r   GEN_AI_PIPELINE_NAMEr`   r_   lenr   r   rN   r
   get_current_scoper   r	   GEN_AI_REQUEST_MESSAGES_set_response_attributesr   re   rf   rg   r/   	span_namerh   input_messagesnormalized_input_messagesscopemessages_dataresultrl   s               r   
new_invokez'_wrap_pregel_invoke.<locals>.new_invoke   s:    !+--==>RSS1T+D+++F+++$T**
4>R(J((..000N 	 "%'.
 
 
 %	  Fh;ZHHHh8*EEEMM(8.III "ND		A+-- /  ";47!C!C! 0G0W0W-&8::E$B14% %M %0+ $<)#(	    Qt-d---f--F$T>6;OOOK%	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	 %	s   DF22F69F6r   )rl   r   s   ` r   r#   r#      s7     1XX0 0 0 0 X0d r   c                 <     t                      fd            }|S )Nc                   K   t          j                                        t                    }| | g|R i | d {V S t	          |           }|rd|                                 nd}t          j        t          j        |t          j	                  5 }|r@|
                    t          j        |           |
                    t          j        |           |
                    t          j        d           d }t          |          dk    r~t!                      rp|j        rit%          |d                   }|rRt'          |          }t          j                    }	t+          |||	          }
|
t-          |t          j        |
d            | g|R i | d {V }t1          ||||           |cd d d            S # 1 swxY w Y   d S rp   rt   r|   s               r   new_ainvokez)_wrap_pregel_ainvoke.<locals>.new_ainvoke   s`      !+--==>RSS41$111&111111111$T**
4>R(J((..000N 	 "%'.
 
 
 $	  Fh;ZHHHh8*EEEMM(8.III!ND		A+-- /  ";47!C!C! 0G0W0W-&8::E$B14% %M %0+ $<)#(	    1T3D333F33333333F$T>6;OOOI$	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	s   DG  GGr   )rl   r   s   ` r   r$   r$      s7     1XX/ / / / X/b r   c                 z    |sdS | s|S t          |           }t          |          |k    r
||d         ng }|r|ndS )z;Extract only the new messages added during this invocation.N)rx   )r~   output_messagesinput_countnew_messagess       r   _get_new_messagesr   	  sh      t  n%%K),_)=)=)K)K%%QS  (1<<T1r   c                     | sd S t          |           D ]`}t          |t                    rI|                    d          }|dv r0|                    d          }|rt          |t                    r|c S ad S )Nr:   )	assistantair8   )reversedr2   rE   rD   r3   )rC   r>   r:   r8   s       r   _extract_llm_response_textr     s     tH%% # #gt$$ 	#;;v&&D***!++i00 #z'377 #"NNN4r   c                     | sd S g }| D ]X}t          |t                    rA|                    d          }|r*t          |t                    r|                    |           Y|r|nd S )Nr;   )r2   rE   rD   rH   extend)rC   r;   r>   msg_tool_callss       r   _extract_tool_callsr   +  s     tJ 2 2gt$$ 	2$[[66N 2*^T"B"B 2!!.111#-::-r   c                    t                      r|j        sd S t          |          }t          ||          }t	          |          }|rt          | t          j        |           n9|rt          | t          j        |           nt          | t          j        |           t          |          }|r,t          | t          j	        t          |          d           d S d S )NFrr   )r   r   rN   r   r   r	   r   GEN_AI_RESPONSE_TEXTr   GEN_AI_RESPONSE_TOOL_CALLSr   )rh   r~   r   rg   parsed_response_messagesr   llm_response_textr;   s           r   r{   r{   :  s    #%% +*E 8@@$^5MNNL2<@@ ID("?ARSSSS	 ID("?NNNND("?HHH$\22J 
/:&&		
 	
 	
 	
 	
 	

 
r   )&	functoolsr   typingr   r   r   r   rY   sentry_sdk.ai.utilsr	   r
   r   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.utilsr   langgraph.graphr   langgraph.pregelr   ImportErrorr   r6   rA   rN   r    r#   r$   r   r   r   r{   r%   r   r   <module>r      s          0 0 0 0 0 0 0 0 0 0 0 0             
 + * * * * * * * = = = = = = = = 4 4 4 4 4 4 + + + + + +2******''''''' 2 2 2
,0
1
112B B B B B; B B B2     @ @ @@+ + +\6 6 6r5 5 5p2 2 2$   . . .
 
 
 
 
s   A A