File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1818 from langchain_core .messages import BaseMessage , SystemMessage
1919
2020from langchain_core .runnables import RunnableConfig , ensure_config
21+
22+ def _serialize_state (state ):
23+ """Recursively convert Pydantic BaseModel instances to dicts for serialization."""
24+ try :
25+ from pydantic import BaseModel as PydanticBaseModel
26+ except ImportError :
27+ return state
28+
29+ if isinstance (state , PydanticBaseModel ):
30+ return state .model_dump ()
31+ elif isinstance (state , dict ):
32+ return {k : _serialize_state (v ) for k , v in state .items ()}
33+ elif isinstance (state , (list , tuple )):
34+ return type (state )(_serialize_state (item ) for item in state )
35+ return state
36+
2137from langchain_core .messages import HumanMessage
2238
2339from partialjson .json_parser import JSONParser
@@ -593,6 +609,9 @@ def _emit_state_sync_event(
593609 # Filter by schema keys if available
594610 state = self .filter_state_on_schema_keys (state , 'output' )
595611
612+ # Convert Pydantic BaseModel instances to dicts for serialization
613+ state = _serialize_state (state )
614+
596615 return langchain_dumps ({
597616 "event" : "on_copilotkit_state_sync" ,
598617 "thread_id" : thread_id ,
You can’t perform that action at this time.
0 commit comments