Coverage for src/local_deep_research/llm/providers/implementations/openrouter.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.15.1, created at 2026-07-20 01:24 +0000

1"""OpenRouter LLM provider for Local Deep Research.""" 

2 

3from ..base import Exposure 

4from ..openai_base import OpenAICompatibleProvider 

5 

6 

7class OpenRouterProvider(OpenAICompatibleProvider): 

8 """OpenRouter provider using OpenAI-compatible endpoint. 

9 

10 OpenRouter provides access to many different models through a unified 

11 OpenAI-compatible API, automatically supporting all current and future 

12 models without needing code updates. 

13 """ 

14 

15 provider_name = "OpenRouter" 

16 api_key_setting = "llm.openrouter.api_key" 

17 default_base_url = "https://openrouter.ai/api/v1" 

18 default_model = "" # User must explicitly pick a model — no silent fallback 

19 

20 # Metadata for auto-discovery 

21 provider_key = "OPENROUTER" 

22 company_name = "OpenRouter" 

23 is_cloud = True 

24 # Egress exposure (ADR-0007): cloud inference sink — data leaves the box. 

25 egress_exposure = Exposure.EXPOSING 

26 

27 @classmethod 

28 def requires_auth_for_models(cls): 

29 """OpenRouter doesn't require authentication for listing models.""" 

30 return False