[libraries/ktextaddons] textautogeneratetext/plugins/genericnetworkplugin: Add orca router support
Laurent Montel <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 58b52d1973e79d74771d63452a363d7d0d3e3a1d by Laurent Montel.
Committed on 03/08/2026 at 11:24.
Pushed by mlaurent into branch 'master'.
Add orca router support
M +6 -0 textautogeneratetext/plugins/genericnetworkplugin/autotests/genericnetworkserverinfotest.cpp
M +5 -4 textautogeneratetext/plugins/genericnetworkplugin/genericnetworkmanager.h
M +15 -0 textautogeneratetext/plugins/genericnetworkplugin/genericnetworkserverinfo.cpp
https://invent.kde.org/libraries/ktextaddons/-/commit/58b52d1973e79d74771d63452a363d7d0d3e3a1d
diff --git a/textautogeneratetext/plugins/genericnetworkplugin/autotests/genericnetworkserverinfotest.cpp b/textautogeneratetext/plugins/genericnetworkplugin/autotests/genericnetworkserverinfotest.cpp
index bfee36777..47a8bfc6d 100644
--- a/textautogeneratetext/plugins/genericnetworkplugin/autotests/genericnetworkserverinfotest.cpp
+++ b/textautogeneratetext/plugins/genericnetworkplugin/autotests/genericnetworkserverinfotest.cpp
@@ -38,6 +38,7 @@ void GenericNetworkServerInfoTest::shouldConvertPluginNetworkTypeFromString()
QCOMPARE(info.pluginNetworkTypeFromString(u"sarvamai"_s), GenericNetworkManager::PluginNetworkType::SarvamAI);
QCOMPARE(info.pluginNetworkTypeFromString(u"atlascloudai"_s), GenericNetworkManager::PluginNetworkType::AtlasCloud);
QCOMPARE(info.pluginNetworkTypeFromString(u"gemini"_s), GenericNetworkManager::PluginNetworkType::Gemini);
+ QCOMPARE(info.pluginNetworkTypeFromString(u"orcarouterai"_s), GenericNetworkManager::PluginNetworkType::OrcaRouterAI);
}
void GenericNetworkServerInfoTest::shouldCheckApiUrl()
@@ -61,6 +62,7 @@ void GenericNetworkServerInfoTest::shouldCheckApiUrl()
QCOMPARE(info.apiUrl(GenericNetworkManager::PluginNetworkType::OpenRouterAI), u"https://openrouter.ai/api/v1/"_s);
QCOMPARE(info.apiUrl(GenericNetworkManager::PluginNetworkType::SarvamAI), u"https://api.sarvam.ai/v1/"_s);
QCOMPARE(info.apiUrl(GenericNetworkManager::PluginNetworkType::AtlasCloud), u"https://api.atlascloud.ai/v1/"_s);
+ QCOMPARE(info.apiUrl(GenericNetworkManager::PluginNetworkType::OrcaRouterAI), u"https://api.orcarouter.ai/v1/"_s);
QCOMPARE(info.apiUrl(GenericNetworkManager::PluginNetworkType::Gemini), u"https://generativelanguage.googleapis.com/v1beta/openai/"_s);
}
@@ -86,6 +88,7 @@ void GenericNetworkServerInfoTest::shouldChatCompletionPath()
QCOMPARE(info.chatCompletionPath(GenericNetworkManager::PluginNetworkType::SarvamAI), u"chat/completions"_s);
QCOMPARE(info.chatCompletionPath(GenericNetworkManager::PluginNetworkType::AtlasCloud), u"chat/completions"_s);
QCOMPARE(info.chatCompletionPath(GenericNetworkManager::PluginNetworkType::Gemini), u"chat/completions"_s);
+ QCOMPARE(info.chatCompletionPath(GenericNetworkManager::PluginNetworkType::OrcaRouterAI), u"chat/completions"_s);
}
void GenericNetworkServerInfoTest::shouldResponsesPath()
@@ -110,6 +113,7 @@ void GenericNetworkServerInfoTest::shouldResponsesPath()
QCOMPARE(info.responsesPath(GenericNetworkManager::PluginNetworkType::SarvamAI), u"responses"_s);
QCOMPARE(info.responsesPath(GenericNetworkManager::PluginNetworkType::AtlasCloud), u"responses"_s);
QCOMPARE(info.responsesPath(GenericNetworkManager::PluginNetworkType::Gemini), u"responses"_s);
+ QCOMPARE(info.responsesPath(GenericNetworkManager::PluginNetworkType::OrcaRouterAI), u"responses"_s);
}
void GenericNetworkServerInfoTest::shouldDefinePluginName()
@@ -134,6 +138,7 @@ void GenericNetworkServerInfoTest::shouldDefinePluginName()
QCOMPARE(info.pluginName(GenericNetworkManager::PluginNetworkType::SarvamAI), u"sarvamai"_s);
QCOMPARE(info.pluginName(GenericNetworkManager::PluginNetworkType::AtlasCloud), u"atlascloudai"_s);
QCOMPARE(info.pluginName(GenericNetworkManager::PluginNetworkType::Gemini), u"gemini"_s);
+ QCOMPARE(info.pluginName(GenericNetworkManager::PluginNetworkType::OrcaRouterAI), u"orcarouterai"_s);
}
void GenericNetworkServerInfoTest::shouldDefineLimitations()
@@ -158,6 +163,7 @@ void GenericNetworkServerInfoTest::shouldDefineLimitations()
QCOMPARE(info.limitations(GenericNetworkManager::PluginNetworkType::SarvamAI), GenericNetworkManager::Limitation::None);
QCOMPARE(info.limitations(GenericNetworkManager::PluginNetworkType::AtlasCloud), GenericNetworkManager::Limitation::None);
QCOMPARE(info.limitations(GenericNetworkManager::PluginNetworkType::Gemini), GenericNetworkManager::Limitation::None);
+ QCOMPARE(info.limitations(GenericNetworkManager::PluginNetworkType::OrcaRouterAI), GenericNetworkManager::Limitation::None);
}
#include "moc_genericnetworkserverinfotest.cpp"
diff --git a/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkmanager.h b/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkmanager.h
index d9d4dbcc8..ffeedc389 100644
--- a/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkmanager.h
+++ b/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkmanager.h
@@ -32,10 +32,11 @@ public:
Qwen = 13,
ChatGPT = 14,
OpenRouterAI = 15,
- SarvamAI = 16,
- AtlasCloud = 17,
- Gemini = 18,
- KimiAI = 19,
+ OrcaRouterAI = 16,
+ SarvamAI = 17,
+ AtlasCloud = 18,
+ Gemini = 19,
+ KimiAI = 20,
LastElement = KimiAI,
};
diff --git a/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkserverinfo.cpp b/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkserverinfo.cpp
index 640c57880..4637d7bb4 100644
--- a/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkserverinfo.cpp
+++ b/textautogeneratetext/plugins/genericnetworkplugin/genericnetworkserverinfo.cpp
@@ -52,6 +52,8 @@ QString GenericNetworkServerInfo::translatedName(GenericNetworkManager::PluginNe
return i18n("CompactifAI");
case GenericNetworkManager::PluginNetworkType::OpenRouterAI:
return i18n("OpenRouter AI");
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
+ return i18n("OrcaRouter AI");
case GenericNetworkManager::PluginNetworkType::SarvamAI:
return i18n("Sarvam AI");
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
@@ -87,6 +89,7 @@ QString GenericNetworkServerInfo::responsesPath(GenericNetworkManager::PluginNet
case GenericNetworkManager::PluginNetworkType::SarvamAI:
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
case GenericNetworkManager::PluginNetworkType::Gemini:
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
return u"responses"_s;
}
return {};
@@ -117,6 +120,7 @@ QString GenericNetworkServerInfo::chatCompletionPath(GenericNetworkManager::Plug
case GenericNetworkManager::PluginNetworkType::SarvamAI:
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
case GenericNetworkManager::PluginNetworkType::Gemini:
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
return u"chat/completions"_s;
}
return {};
@@ -166,6 +170,8 @@ QString GenericNetworkServerInfo::webSite(GenericNetworkManager::PluginNetworkTy
return u"https://www.atlascloud.ai/"_s;
case GenericNetworkManager::PluginNetworkType::Gemini:
return u"https://gemini.google.com"_s;
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
+ return u"https://www.orcarouter.ai/"_s;
}
return {};
}
@@ -212,6 +218,8 @@ QString GenericNetworkServerInfo::apiUrl(GenericNetworkManager::PluginNetworkTyp
return u"https://api.sarvam.ai/v1/"_s;
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
return u"https://api.atlascloud.ai/v1/"_s;
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
+ return u"https://api.orcarouter.ai/v1/"_s;
case GenericNetworkManager::PluginNetworkType::Gemini:
return u"https://generativelanguage.googleapis.com/v1beta/openai/"_s;
}
@@ -257,6 +265,8 @@ QString GenericNetworkServerInfo::description(GenericNetworkManager::PluginNetwo
return i18n("Sarvam AI instance");
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
return i18n("AtlasCloud OpenAI-compatible API");
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
+ return i18n("Orca Router OpenAI-compatible API");
}
return {};
}
@@ -305,6 +315,8 @@ QString GenericNetworkServerInfo::pluginName(GenericNetworkManager::PluginNetwor
return u"atlascloudai"_s;
case GenericNetworkManager::PluginNetworkType::Gemini:
return u"gemini"_s;
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
+ return u"orcarouterai"_s;
}
return {};
}
@@ -349,6 +361,8 @@ GenericNetworkManager::PluginNetworkType GenericNetworkServerInfo::pluginNetwork
return GenericNetworkManager::PluginNetworkType::AtlasCloud;
} else if (str == QLatin1StringView("gemini")) {
return GenericNetworkManager::PluginNetworkType::Gemini;
+ } else if (str == QLatin1StringView("orcarouterai")) {
+ return GenericNetworkManager::PluginNetworkType::OrcaRouterAI;
} else {
qCWarning(AUTOGENERATETEXT_GENERICNETWORK_LOG) << "PluginNetworkType is unknown. It's a bug" << str;
return GenericNetworkManager::PluginNetworkType::Unknown;
@@ -407,6 +421,7 @@ GenericNetworkManager::Limitations GenericNetworkServerInfo::limitations(Generic
case GenericNetworkManager::PluginNetworkType::DeepInfra:
case GenericNetworkManager::PluginNetworkType::CompactifAI:
case GenericNetworkManager::PluginNetworkType::OpenRouterAI:
+ case GenericNetworkManager::PluginNetworkType::OrcaRouterAI:
case GenericNetworkManager::PluginNetworkType::SarvamAI:
case GenericNetworkManager::PluginNetworkType::AtlasCloud:
return limits;