0i;. ddlmZddlmZmZmZmZddlZddlm Z m Z m Z ddl m Z mZddlmZmZddlmZddlmZ dd lmZdd lmZGd d eZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%y#e$r ed wxYw)wraps)AnyCallableListOptionalN)set_data_normalizednormalize_message_rolestruncate_and_annotate_messages)OPSPANDATA) DidNotEnable Integration)should_send_default_pii)safe_serialize) StateGraph)Pregelzlanggraph not installedc2eZdZdZdeZddZedZy)LanggraphIntegration langgraphzauto.ai.c||_y)N)include_prompts)selfrs P/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/langgraph.py__init__zLanggraphIntegration.__init__s .cttjt_ttdr"t tj t_ttdr#ttjt_yy)Ninvokeainvoke) _wrap_state_graph_compilercompilehasattrr_wrap_pregel_invoker_wrap_pregel_ainvokerrr setup_oncezLanggraphIntegration.setup_oncesP7z7I7IJ  68 $/ >FM 69 %1&..AFN &rN)T)__name__ __module__ __qualname__ identifieroriginr staticmethodr&r%rrrrs.J | $F/ B BrrcrdD]2}t||st||}|st|ts0|cSy)N)name graph_namer'_name)r"getattr isinstancestr) graph_objattrr.s r_get_graph_namer60s8; 9d #9d+D 4- < rct|dsyt|dd|jd}dD]#}t||st||}||||<%|S)Ncontenttype)roler8)r. tool_calls function_call tool_call_id)r"r1r8)messageparsedr5values r_normalize_langgraph_messagerA:s] 7I &gvt4 QFG 7D !GT*E $t H Mrc|syd}t|tr|jd}nLt|dr |j}n3t|dr't |jr |jd}|rt|ttfsyg}|D]!} t|}|r|j|#|r|SdS#t $rYRwxYw#t $rYDwxYw)Nmessagesget) r2dictrDr"rCcallable ExceptionlisttuplerAappend)staterCnormalized_messagesr> normalizeds r_parse_langgraph_messagesrNJs H%99Z(  #>>  8EII#6 yy,H :hu > 5g>J#**:6 #6 ?4?      s$#B;C ; CC CCc.tfd}|S)Nctjjt}|  |g|i|Stjt j tj5} |g|i|}t|dd}|jtjd|jtj||r d||_ nd|_ |jdd/|jtj|jdd}t|dd}|rt!|r|j#} t| dd} | rat%| t&rQ| jd} | r>t| d d} | r/t)| d r#t+| j,j/}| |jtj0||cdddS#1swYyxYw) N)opr+r. create_agentz create_agent model get_graphnodestoolsdata tools_by_name) sentry_sdk get_clientget_integrationr start_spanr GEN_AI_CREATE_AGENTr+r1set_datar GEN_AI_OPERATION_NAMEGEN_AI_AGENT_NAME descriptionrDGEN_AI_REQUEST_MODELrFrTr2rEr"rHrXkeysGEN_AI_REQUEST_AVAILABLE_TOOLS)rargskwargs integrationspancompiled_graphcompiled_graph_namerVrTr4rU tools_noderWfs r new_compilez._wrap_state_graph_compile..new_compilels!++-==>RS  T+D+F+ +  " "%%'.. t5d5f5N").&$"G  MM(88. I MM(446I J"%23F2G#H #1 zz'4(4 h;;VZZ=PQE TBIXi0*446  7D9Zt4!&7!3J!&z64@GD/$B$(););)@)@)B$CE  hEEuM!C   s *E.G""G+r)rlrms` rr r js" 1X&"&"P rc.tfd}|S)NcDtjjt}|  |g|i|St |}|rd|j nd}tj tj|tj5}|r@|jtj||jtj||jtjdd}t|dkDrqt!rg|j"r[t%|d}|rKt'|}tj(} t+||| } | t-|tj.| d |g|i|} t1||| || cdddS#1swYyxYwNz invoke_agent invoke_agent)rQr.r+rFunpackrYrZr[rr6stripr\r GEN_AI_INVOKE_AGENTr+r^r GEN_AI_PIPELINE_NAMEr`r_lenrrrNr get_current_scoper r GEN_AI_REQUEST_MESSAGES_set_response_attributes rrerfrgr/ span_namerhinput_messagesnormalized_input_messagesscope messages_dataresultrls r new_invokez'_wrap_pregel_invoke..new_invokes!++-==>RS  T+D+F+ +$T* 4>mJ< ( . . 0N  " "%%'..  h;;ZH h88*E MM(88. I"ND A +-//!:47!C!0G0W-&88:E$B14%M%0+ $<<)#( t-d-f-F $T>6; OK   s C?FFr)rlrs` rr#r#s$ 1X00d rc.tfd}|S)NcvKtjjt}| |g|i|d{St |}|rd|j nd}tj tj|tj5}|r@|jtj||jtj||jtjdd}t|dkDrqt!rg|j"r[t%|d}|rKt'|}tj(} t+||| } | t-|tj.| d |g|i|d{} t1||| || cdddS7l7 #1swYyxYwwrprtr|s r new_ainvokez)_wrap_pregel_ainvoke..new_ainvokes!++-==>RS  41$1&11 1$T* 4>mJ< ( . . 0N  " "%%'..  h;;ZH h88*E MM(88. I!ND A +-//!:47!C!0G0W-&88:E$B14%M%0+ $<<)#( T3D3F33F $T>6; OI  2N4A  s;9F9F(AF9C3F- F+ F- F9+F--F62F9r)rlrs` rr$r$s$ 1X//b rc\|sy|s|St|}t||kDr||dng}|r|SdS)z;Extract only the new messages added during this invocation.N)rx)r~output_messages input_count new_messagess r_get_new_messagesr sL  n%K),_)= )K %QS(<1T1rc|syt|D]Q}t|ts|jd}|dvs*|jd}|s>t|tsO|cSy)Nr:) assistantair8)reversedr2rErDr3)rCr>r:r8s r_extract_llm_response_textrs\ H% gt $;;v&D**!++i0z'37"N & rc|syg}|D]I}t|ts|jd}|s(t|ts9|j |K|r|SdS)Nr;)r2rErDrHextend)rCr;r>msg_tool_callss r_extract_tool_callsr+sX J gt $$[[6N*^T"B!!.1  $:--rctr |jsyt|}t||}t |}|rt |t j|n9|rt |t j|nt |t j|t|}|r't |t jt|dyy)NFrr) rrrNrrr r GEN_AI_RESPONSE_TEXTrGEN_AI_RESPONSE_TOOL_CALLSr)rhr~rrgparsed_response_messagesrllm_response_textr;s rr{r{:s # %+*E*E8@$^5MNL2<@D("?"?ARS D("?"?ND("?"?H$\2J   / / : &  r)& functoolsrtypingrrrrrYsentry_sdk.ai.utilsr r r sentry_sdk.constsr r sentry_sdk.integrationsrrsentry_sdk.scopersentry_sdk.utilsrlanggraph.graphrlanggraph.pregelr ImportErrorrr6rArNr r#r$rrrr{r%rrrs00 +=4+2*' B;B2  @@+\6r5p2$  . O 2 0 112s A44B