33from typing import Any , cast
44
55from models .errors import SessionValidationError
6- from models .session import MessageDict , SessionDict
6+ from models .session import SessionDict
77
88_REQUIRED_SESSION_KEYS = ("session_id" , "title" , "messages" , "metadata" )
99
1010
1111def validate_session_dict (data : dict [str , Any ]) -> SessionDict :
1212 """Validate a plain dict matches SessionDict before returning it."""
13+ # Runtime guard for dynamic callers; mypy already types the parameter as dict.
1314 if not isinstance (data , dict ):
1415 raise SessionValidationError ("$" , "expected dict" )
1516
@@ -18,6 +19,7 @@ def validate_session_dict(data: dict[str, Any]) -> SessionDict:
1819 raise SessionValidationError (key , "missing required field" )
1920
2021 session_id = data ["session_id" ]
22+ # Explicit null check before isinstance so errors say "must not be null".
2123 if session_id is None :
2224 raise SessionValidationError ("session_id" , "must not be null" )
2325 if not isinstance (session_id , str ):
@@ -67,12 +69,4 @@ def validate_session_dict(data: dict[str, Any]) -> SessionDict:
6769 "metadata" , f"expected dict, got { type (metadata ).__name__ } "
6870 )
6971
70- return cast (
71- SessionDict ,
72- {
73- "session_id" : session_id ,
74- "title" : title ,
75- "messages" : cast (list [MessageDict ], messages ),
76- "metadata" : metadata ,
77- },
78- )
72+ return cast (SessionDict , data )
0 commit comments