@@ -696,3 +696,60 @@ def __init__(self, content, message_type="human"):
696696 # Verify no "ai" roles remain
697697 roles = [msg ["role" ] for msg in stored_messages if "role" in msg ]
698698 assert "ai" not in roles
699+
700+
701+ def test_langgraph_message_truncation (sentry_init , capture_events ):
702+ """Test that large messages are truncated properly in Langgraph integration."""
703+ import json
704+
705+ sentry_init (
706+ integrations = [LanggraphIntegration (include_prompts = True )],
707+ traces_sample_rate = 1.0 ,
708+ send_default_pii = True ,
709+ )
710+ events = capture_events ()
711+
712+ large_content = (
713+ "This is a very long message that will exceed our size limits. " * 1000
714+ )
715+ test_state = {
716+ "messages" : [
717+ MockMessage ("small message 1" , name = "user" ),
718+ MockMessage (large_content , name = "assistant" ),
719+ MockMessage (large_content , name = "user" ),
720+ MockMessage ("small message 4" , name = "assistant" ),
721+ MockMessage ("small message 5" , name = "user" ),
722+ ]
723+ }
724+
725+ pregel = MockPregelInstance ("test_graph" )
726+
727+ def original_invoke (self , * args , ** kwargs ):
728+ return {"messages" : args [0 ].get ("messages" , [])}
729+
730+ with start_transaction ():
731+ wrapped_invoke = _wrap_pregel_invoke (original_invoke )
732+ result = wrapped_invoke (pregel , test_state )
733+
734+ assert result is not None
735+ assert len (events ) > 0
736+ tx = events [0 ]
737+ assert tx ["type" ] == "transaction"
738+
739+ invoke_spans = [
740+ span for span in tx .get ("spans" , []) if span .get ("op" ) == OP .GEN_AI_INVOKE_AGENT
741+ ]
742+ assert len (invoke_spans ) > 0
743+
744+ invoke_span = invoke_spans [0 ]
745+ assert SPANDATA .GEN_AI_REQUEST_MESSAGES in invoke_span ["data" ]
746+
747+ messages_data = invoke_span ["data" ][SPANDATA .GEN_AI_REQUEST_MESSAGES ]
748+ assert isinstance (messages_data , str )
749+
750+ parsed_messages = json .loads (messages_data )
751+ assert isinstance (parsed_messages , list )
752+ assert len (parsed_messages ) == 2
753+ assert "small message 4" in str (parsed_messages [0 ])
754+ assert "small message 5" in str (parsed_messages [1 ])
755+ assert tx ["_meta" ]["spans" ]["0" ]["data" ]["gen_ai.request.messages" ]["" ]["len" ] == 5
0 commit comments