from abc import ABC, abstractmethod class AIProvider(ABC): """Base class for all AI provider implementations. To add a new provider, subclass this and implement `complete`, then instantiate your provider in `processor.py` instead of GeminiProvider. """ @abstractmethod def complete(self, document: str, instruction: str) -> str: """Process an instruction in the context of a full document. Args: document: The full markdown document text (for context). instruction: The BLIGHT instruction extracted from the trigger line. Returns: The text to insert in place of the trigger line. """