Required Python provider interface
class LLMProvider(Protocol): async def complete(self, messages: list[Message]) -> str: ...
Agent
ReActLoop