From 0354d9ede45741b5ceee670b6a25c9472686e877 Mon Sep 17 00:00:00 2001 From: Vaibhav Maheshwari Date: Fri, 21 Nov 2025 22:30:16 +0530 Subject: [PATCH] fix: Add backward compatibility for conversationCompacted message type (#5819) Signed-off-by: Vaibhav Maheshwari Co-authored-by: Claude --- crates/goose/src/conversation/message.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/goose/src/conversation/message.rs b/crates/goose/src/conversation/message.rs index f41e6e98..16951f43 100644 --- a/crates/goose/src/conversation/message.rs +++ b/crates/goose/src/conversation/message.rs @@ -24,7 +24,15 @@ fn deserialize_sanitized_content<'de, D>(deserializer: D) -> Result, { - let mut content: Vec = Vec::deserialize(deserializer)?; + use serde::de::Error; + + let mut raw: Vec = 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 = 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 {