async def generate_entities(self) -> AsyncGenerator[ChunkEntity, None]:
        """Generate all Outlook mail entities: Folders, Messages and Attachments."""
        logger.info("===== STARTING OUTLOOK MAIL ENTITY GENERATION =====")
        entity_count = 0

        try:
            async with httpx.AsyncClient() as client:
                logger.info("HTTP client created, starting entity generation")

                # Start with top-level folders and recursively process all folders and contents
                async for entity in self._generate_folder_entities(client):
                    entity_count += 1
                    entity_type = type(entity).__name__
                    logger.info(
                        f"Yielding entity #{entity_count}: {entity_type} with ID {entity.entity_id}"
                    )
                    yield entity

        except Exception as e:
            logger.error(f"Error in entity generation: {str(e)}", exc_info=True)
            raise
        finally:
            logger.info(
                f"===== OUTLOOK MAIL ENTITY GENERATION COMPLETE: {entity_count} entities ====="
            )
Generate all Outlook mail entities: Folders, Messages and Attachments.
backend/airweave/platform/sources/outlook_mail.py