async def convert(self, file_path: str, **kwargs: Any) -> AsyncDocumentConverterResult:
        """Convert a file to markdown format.

        Args:
            file_path: Path to the file to convert
            **kwargs: Additional arguments passed to converters

        Returns:
            AsyncDocumentConverterResult containing the markdown text
        """
        if not self._is_supported(file_path):
            raise ValueError(f"Unsupported file type: {Path(file_path).suffix}")

        if not os.path.exists(file_path):
            logger.warning(f"File not found: {file_path}")
            raise FileNotFoundError(f"File not found: {file_path}")

        # Get file extension
        _, extension = os.path.splitext(file_path)
        if not extension:
            raise ValueError("File must have an extension")

        # Add default kwargs
        if "file_extension" not in kwargs:
            kwargs["file_extension"] = extension
        if "llm_client" not in kwargs and self._llm_client:
            kwargs["llm_client"] = self._llm_client
        if "llm_model" not in kwargs and self._llm_model:
            kwargs["llm_model"] = self._llm_model

        # Try each converter
        for converter in self._converters:
            try:
                result = await converter.convert(file_path, **kwargs)
                if result:
                    result.file_path = file_path  # Add file path to result
                    return result
            except Exception as e:
                logger.error(f"Error converting with {converter.__class__.__name__}: {str(e)}")
                continue

        raise ValueError(f"No converter found for file type: {extension}")
Convert a file to markdown format.

        Args:
            file_path: Path to the file to convert
            **kwargs: Additional arguments passed to converters

        Returns:
            AsyncDocumentConverterResult containing the markdown text
        
backend/airweave/platform/file_handling/async_markitdown.py