diff --git a/src/claude/integration.py b/src/claude/integration.py index ed857f7..5cb1838 100644 --- a/src/claude/integration.py +++ b/src/claude/integration.py @@ -520,6 +520,8 @@ def _parse_result(self, result: Dict, messages: List[Dict]) -> ClaudeResponse: """Parse final result message.""" # Extract tools used from messages tools_used = [] + assistant_texts = [] # Collect all assistant text responses + for msg in messages: if msg.get("type") == "assistant": message = msg.get("message", {}) @@ -531,9 +533,25 @@ def _parse_result(self, result: Dict, messages: List[Dict]) -> ClaudeResponse: "timestamp": msg.get("timestamp"), } ) + elif block.get("type") == "text": + # Collect text from assistant messages + text = block.get("text", "").strip() + if text: + assistant_texts.append(text) + + # Get content from result, or fallback to collected assistant texts + content = result.get("result", "") + if not content and assistant_texts: + # Fallback: use the last assistant text message + content = assistant_texts[-1] + logger.debug( + "Using fallback content from assistant messages", + num_texts=len(assistant_texts), + content_length=len(content) + ) return ClaudeResponse( - content=result.get("result", ""), + content=content, session_id=result.get("session_id", ""), cost=result.get("cost_usd", 0.0), duration_ms=result.get("duration_ms", 0),