refactor: improve MCP TextContent serialization to follow existing patterns

- Remove risky __dict__ fallback for non-BaseModel objects
- Only convert BaseModel objects to dicts using model_dump() (consistent with line 4745-4746)
- Keep other objects unchanged to maintain backward compatibility
- Follows existing codebase patterns for Pydantic model serialization
This commit is contained in:
AlexsanderHamir 2025-11-25 13:14:25 -08:00
parent ab877d9551
commit 48810e6bcb

View file

@ -4385,14 +4385,14 @@ class StandardLoggingPayloadSetup:
serialized_list = []
for item in init_response_obj:
# Check if item is a Pydantic BaseModel (MCP content types are Pydantic models)
# This follows the same pattern used at line 4745-4746 for BaseModel objects
if isinstance(item, BaseModel):
# Convert Pydantic model to dict for JSON serialization
serialized_list.append(item.model_dump())
elif hasattr(item, "__dict__") and not isinstance(item, (str, int, float, bool, type(None))):
# Fallback: convert object to dict (but skip primitive types)
serialized_list.append(item.__dict__)
else:
# Already serializable (str, dict, int, float, bool, None, etc.)
# Non-BaseModel objects are kept as-is - they should already be serializable
# or will be handled by json.dumps with default=str if needed
serialized_list.append(item)
final_response_obj = serialized_list
else: