async def test_full_response_flow_with_continuation_offer(self, mock_redis):
        """Test complete response flow that creates continuation offer"""
        mock_client = Mock()
        mock_redis.return_value = mock_client

        # Mock the model to return a response without follow-up question
        with patch.object(self.tool, "create_model") as mock_create_model:
            mock_model = Mock()
            mock_response = Mock()
            mock_response.candidates = [
                Mock(
                    content=Mock(parts=[Mock(text="Analysis complete. The code looks good.")]),
                    finish_reason="STOP",
                )
            ]
            mock_model.generate_content.return_value = mock_response
            mock_create_model.return_value = mock_model

            # Execute tool with new conversation
            arguments = {"prompt": "Analyze this code"}
            response = await self.tool.execute(arguments)

            # Parse response
            assert len(response) == 1
            response_data = json.loads(response[0].text)

            # Debug output
            if response_data.get("status") == "error":
                print(f"Error content: {response_data.get('content')}")

            assert response_data["status"] == "continuation_available"
            assert response_data["content"] == "Analysis complete. The code looks good."
            assert "continuation_offer" in response_data

            offer = response_data["continuation_offer"]
            assert "continuation_id" in offer
            assert offer["remaining_turns"] == MAX_CONVERSATION_TURNS - 1
            assert "You have" in offer["message_to_user"]
            assert "more exchange(s) available" in offer["message_to_user"]
Test complete response flow that creates continuation offer
tests/test_claude_continuation.py