async def _traverse_repository(
        self, client: httpx.AsyncClient, workspace_slug: str, repo_slug: str, branch: str
    ) -> AsyncGenerator[ChunkEntity, None]:
        """Traverse repository contents using DFS.

        Args:
            client: HTTP client
            workspace_slug: Workspace slug
            repo_slug: Repository slug
            branch: Branch name

        Yields:
            Directory and file entities
        """
        # Get repository info first
        repo_entity = await self._get_repository_info(client, workspace_slug, repo_slug)
        yield repo_entity

        # Create breadcrumb for the repo
        repo_breadcrumb = Breadcrumb(
            entity_id=repo_entity.entity_id, name=repo_entity.name, type="repository"
        )

        # Track processed paths to avoid duplicates
        processed_paths = set()

        # Start DFS traversal from root
        async for entity in self._traverse_directory(
            client, workspace_slug, repo_slug, "", [repo_breadcrumb], branch, processed_paths
        ):
            yield entity
Traverse repository contents using DFS.

        Args:
            client: HTTP client
            workspace_slug: Workspace slug
            repo_slug: Repository slug
            branch: Branch name

        Yields:
            Directory and file entities
        
backend/airweave/platform/sources/bitbucket.py