{"repo": "alexanderharebava/lightreader", "files": {"test-app/src/main/java/org/readium/r2/testapp/AINEW/AiProviderType.kt": {"0a85e5f8b0ab471ff7e7c280fcbbd2253c3a7253": {"t": 1785747492.7071037, "n": 1887, "h": "6e429936f736938a", "c": "package org.readium.r2.testapp.AINEW\n\nenum class AiProviderType {\n OPENROUTER,\n GOOGLE_GEMINI,\n OPENAI,\n DEEPSEEK,\n UNKNOWN;\n\n companion object {\n fun fromApiKey(apiKey: String): AiProviderType {\n val trimmed = apiKey.trim()\n return when {\n trimmed.startsWith(\"sk-or-v1-\") -> OPENROUTER\n trimmed.startsWith(\"AIza\") && trimmed.length >= 35 -> GOOGLE_GEMINI\n trimmed.startsWith(\"sk-\") && trimmed.length == 35 && trimmed.matches(Regex(\"^sk-[a-f0-9]{32}$\", RegexOption.IGNORE_CASE)) -> DEEPSEEK\n trimmed.startsWith(\"sk-\") -> OPENAI\n else -> UNKNOWN\n }\n }\n\n fun AiProviderType.displayName(): String = when (this) {\n OPENROUTER -> \"OpenRouter\"\n GOOGLE_GEMINI -> \"Google Gemini\"\n OPENAI -> \"OpenAI\"\n DEEPSEEK -> \"DeepSeek\"\n UNKNOWN -> \"unknown\"\n }\n\n fun AiProviderType.baseUrl(): String = when (this) {\n OPENROUTER -> \"https://openrouter.ai/api/v1/\"\n GOOGLE_GEMINI -> \"https://generativelanguage.googleapis.com/v1beta/\"\n OPENAI -> \"https://api.openai.com/v1/\"\n DEEPSEEK -> \"https://api.deepseek.com/v1/\"\n UNKNOWN -> \"\"\n }\n\n fun AiProviderType.defaultModel(): String = when (this) {\n OPENROUTER -> \"deepseek/deepseek-chat\"\n GOOGLE_GEMINI -> \"gemini-3.6-flash\"\n OPENAI -> \"gpt-4o-mini\"\n DEEPSEEK -> \"deepseek-chat\"\n UNKNOWN -> \"\"\n }\n\n\n fun AiProviderType.embeddingModel(): String = when (this) {\n OPENROUTER -> \"openai/text-embedding-3-small\"\n GOOGLE_GEMINI -> \"gemini-embedding-001\"\n OPENAI -> \"text-embedding-3-small\"\n DEEPSEEK -> \"deepseek-embedding\"\n UNKNOWN -> \"\"\n }\n }\n\n}"}, "62318b3ef8f4700df23f4063d69c4adccfd34305": {"t": 1785773550.0187283, "n": 1887, "h": "6e429936f736938a", "c": "package org.readium.r2.testapp.AINEW\n\nenum class AiProviderType {\n OPENROUTER,\n GOOGLE_GEMINI,\n OPENAI,\n DEEPSEEK,\n UNKNOWN;\n\n companion object {\n fun fromApiKey(apiKey: String): AiProviderType {\n val trimmed = apiKey.trim()\n return when {\n trimmed.startsWith(\"sk-or-v1-\") -> OPENROUTER\n trimmed.startsWith(\"AIza\") && trimmed.length >= 35 -> GOOGLE_GEMINI\n trimmed.startsWith(\"sk-\") && trimmed.length == 35 && trimmed.matches(Regex(\"^sk-[a-f0-9]{32}$\", RegexOption.IGNORE_CASE)) -> DEEPSEEK\n trimmed.startsWith(\"sk-\") -> OPENAI\n else -> UNKNOWN\n }\n }\n\n fun AiProviderType.displayName(): String = when (this) {\n OPENROUTER -> \"OpenRouter\"\n GOOGLE_GEMINI -> \"Google Gemini\"\n OPENAI -> \"OpenAI\"\n DEEPSEEK -> \"DeepSeek\"\n UNKNOWN -> \"unknown\"\n }\n\n fun AiProviderType.baseUrl(): String = when (this) {\n OPENROUTER -> \"https://openrouter.ai/api/v1/\"\n GOOGLE_GEMINI -> \"https://generativelanguage.googleapis.com/v1beta/\"\n OPENAI -> \"https://api.openai.com/v1/\"\n DEEPSEEK -> \"https://api.deepseek.com/v1/\"\n UNKNOWN -> \"\"\n }\n\n fun AiProviderType.defaultModel(): String = when (this) {\n OPENROUTER -> \"deepseek/deepseek-chat\"\n GOOGLE_GEMINI -> \"gemini-3.6-flash\"\n OPENAI -> \"gpt-4o-mini\"\n DEEPSEEK -> \"deepseek-chat\"\n UNKNOWN -> \"\"\n }\n\n\n fun AiProviderType.embeddingModel(): String = when (this) {\n OPENROUTER -> \"openai/text-embedding-3-small\"\n GOOGLE_GEMINI -> \"gemini-embedding-001\"\n OPENAI -> \"text-embedding-3-small\"\n DEEPSEEK -> \"deepseek-embedding\"\n UNKNOWN -> \"\"\n }\n }\n\n}"}, "e24def6bbcfe02431399cabe9c4062db9b89cacc": {"t": 1786068622.9457116, "n": 1887, "h": "6e429936f736938a", "c": "package org.readium.r2.testapp.AINEW\n\nenum class AiProviderType {\n OPENROUTER,\n GOOGLE_GEMINI,\n OPENAI,\n DEEPSEEK,\n UNKNOWN;\n\n companion object {\n fun fromApiKey(apiKey: String): AiProviderType {\n val trimmed = apiKey.trim()\n return when {\n trimmed.startsWith(\"sk-or-v1-\") -> OPENROUTER\n trimmed.startsWith(\"AIza\") && trimmed.length >= 35 -> GOOGLE_GEMINI\n trimmed.startsWith(\"sk-\") && trimmed.length == 35 && trimmed.matches(Regex(\"^sk-[a-f0-9]{32}$\", RegexOption.IGNORE_CASE)) -> DEEPSEEK\n trimmed.startsWith(\"sk-\") -> OPENAI\n else -> UNKNOWN\n }\n }\n\n fun AiProviderType.displayName(): String = when (this) {\n OPENROUTER -> \"OpenRouter\"\n GOOGLE_GEMINI -> \"Google Gemini\"\n OPENAI -> \"OpenAI\"\n DEEPSEEK -> \"DeepSeek\"\n UNKNOWN -> \"unknown\"\n }\n\n fun AiProviderType.baseUrl(): String = when (this) {\n OPENROUTER -> \"https://openrouter.ai/api/v1/\"\n GOOGLE_GEMINI -> \"https://generativelanguage.googleapis.com/v1beta/\"\n OPENAI -> \"https://api.openai.com/v1/\"\n DEEPSEEK -> \"https://api.deepseek.com/v1/\"\n UNKNOWN -> \"\"\n }\n\n fun AiProviderType.defaultModel(): String = when (this) {\n OPENROUTER -> \"deepseek/deepseek-chat\"\n GOOGLE_GEMINI -> \"gemini-3.6-flash\"\n OPENAI -> \"gpt-4o-mini\"\n DEEPSEEK -> \"deepseek-chat\"\n UNKNOWN -> \"\"\n }\n\n\n fun AiProviderType.embeddingModel(): String = when (this) {\n OPENROUTER -> \"openai/text-embedding-3-small\"\n GOOGLE_GEMINI -> \"gemini-embedding-001\"\n OPENAI -> \"text-embedding-3-small\"\n DEEPSEEK -> \"deepseek-embedding\"\n UNKNOWN -> \"\"\n }\n }\n\n}"}}}}