"""Source adapters for AI Research Oracle.""" from abc import ABC, abstractmethod class SourceAdapter(ABC): """Base class for all ingestion adapters.""" @abstractmethod def name(self) -> str: """Source name: 'github', 'arxiv', 'reddit'.""" pass @abstractmethod def fetch(self, query: str = "", limit: int = 20) -> list[dict]: """Return entries matching DB schema fields.""" pass