fix: Add backward compatibility for conversationCompacted message type (#5819)

Signed-off-by: Vaibhav Maheshwari <vaibhav.dkm@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Vaibhav Maheshwari
2025-11-21 22:30:16 +05:30
committed by GitHub
parent 7b787f926b
commit 0354d9ede4
+9 -1
View File
@@ -24,7 +24,15 @@ fn deserialize_sanitized_content<'de, D>(deserializer: D) -> Result<Vec<MessageC
where
D: Deserializer<'de>,
{
let mut content: Vec<MessageContent> = Vec::deserialize(deserializer)?;
use serde::de::Error;
let mut raw: Vec<serde_json::Value> = Vec::deserialize(deserializer)?;
// Filter out old "conversationCompacted" messages from pre-14.0
raw.retain(|item| item.get("type").and_then(|v| v.as_str()) != Some("conversationCompacted"));
let mut content: Vec<MessageContent> = serde_json::from_value(serde_json::Value::Array(raw))
.map_err(|e| Error::custom(format!("Failed to deserialize MessageContent: {}", e)))?;
for message_content in &mut content {
if let MessageContent::Text(text_content) = message_content {