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
@@ -591,6 +607,9 @@ def _emit_state_sync_event(
591607 # Filter by schema keys if available
592608 state = self .filter_state_on_schema_keys (state , 'output' )
593609
610+ # Convert Pydantic BaseModel instances to dicts for serialization
611+ state = _serialize_state (state )
612+
594613 return langchain_dumps ({
595614 "event" : "on_copilotkit_state_sync" ,
596615 "thread_id" : thread_id ,
You can’t perform that action at this time.
0 commit comments