diff --git a/desktop/Desktop/Sources/CalendarReaderService.swift b/desktop/Desktop/Sources/CalendarReaderService.swift index 0a930711c07..800453a0297 100644 --- a/desktop/Desktop/Sources/CalendarReaderService.swift +++ b/desktop/Desktop/Sources/CalendarReaderService.swift @@ -161,9 +161,27 @@ actor CalendarReaderService { onToolActivity: { @Sendable _, _, _, _ in } ) - let responseText = result.text + var responseText = result.text log("CalendarReaderService: Synthesis raw response (\(responseText.count) chars): \(responseText.prefix(300))") + // Extract JSON from response — handle markdown code fences and leading text + if let jsonStart = responseText.range(of: "```json") { + responseText = String(responseText[jsonStart.upperBound...]) + if let jsonEnd = responseText.range(of: "```") { + responseText = String(responseText[..