feat: provider presets (openai, openrouter, ollama, dahl, gonkarouter, custom), /api/info, provider display in Android settings

This commit is contained in:
OpenClaw Dev 2026-10-25 04:30:26 +01:00
parent d2ec0848c8
commit 7b92e259ad
14 changed files with 233 additions and 18 deletions

View file

@ -40,6 +40,8 @@ class ByteClawApi(private val settings: ServerSettings) {
http.newCall(Request.Builder().url(url("/healthz")).build()).execute().use { it.isSuccessful }
}
suspend fun info(): ServerInfo = json.decodeFromString(call(Request.Builder().url(url("/api/info")).build()))
suspend fun sessions(): List<Session> = json.decodeFromString(call(Request.Builder().url(url("/api/sessions")).build()))
suspend fun messages(sessionId: String): List<Message> =

View file

@ -4,6 +4,7 @@ import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import dev.byteclaw.client.data.ByteClawApi
import dev.byteclaw.client.data.ProviderPresets
import dev.byteclaw.client.data.ServerSettings
import dev.byteclaw.client.data.Session
import dev.byteclaw.client.data.SettingsStore
@ -39,7 +40,8 @@ class ChatViewModel(app: Application) : AndroidViewModel(app) {
fun testConnection(s: ServerSettings, onResult: (String) -> Unit) = viewModelScope.launch {
val msg = runCatching {
ByteClawApi(s).sessions(); "Verbindung OK"
val i = ByteClawApi(s).info()
"Verbindung OK · Provider: ${ProviderPresets.label(i.provider)} · Modell: ${i.model}"
}.getOrElse { "Fehler: ${it.message}" }
onResult(msg)
}

View file

@ -158,6 +158,9 @@ fun SettingsScreen(vm: ChatViewModel, state: UiState, onBack: () -> Unit) {
}) { Text("Verbindung testen") }
}
status?.let { Text(it) }
Text("Der LLM-Provider (z. B. Dahl, GonkaRouter) wird am Server über llm.provider gewählt. " +
"Verbindung testen zeigt den aktiven Provider und das Modell.",
style = MaterialTheme.typography.bodySmall)
}
}
}