fix: enable xAI (Grok) by default and improve provider visibility in dashboard
- Set Grok to enabled: true by default. - Updated AppState to include raw AppConfig. - Refactored dashboard to show all supported providers, including their configuration and initialization status (online, disabled, or error).
This commit is contained in:
@@ -530,37 +530,52 @@ async fn handle_client_usage(
|
||||
// Provider handlers
|
||||
async fn handle_get_providers(State(state): State<DashboardState>) -> Json<ApiResponse<serde_json::Value>> {
|
||||
let registry = &state.app_state.model_registry;
|
||||
let providers = state.app_state.provider_manager.get_all_providers();
|
||||
let config = &state.app_state.config;
|
||||
|
||||
let mut providers_json = Vec::new();
|
||||
|
||||
for provider in providers {
|
||||
let p_id = provider.name();
|
||||
|
||||
// Define the list of providers we support
|
||||
let provider_configs = vec![
|
||||
("openai", "OpenAI", config.providers.openai.enabled),
|
||||
("gemini", "Google Gemini", config.providers.gemini.enabled),
|
||||
("deepseek", "DeepSeek", config.providers.deepseek.enabled),
|
||||
("grok", "xAI Grok", config.providers.grok.enabled),
|
||||
("ollama", "Ollama", config.providers.ollama.enabled),
|
||||
];
|
||||
|
||||
for (id, display_name, enabled) in provider_configs {
|
||||
// Find models for this provider in registry
|
||||
let mut models = Vec::new();
|
||||
if let Some(p_info) = registry.providers.get(p_id) {
|
||||
if let Some(p_info) = registry.providers.get(id) {
|
||||
models = p_info.models.keys().cloned().collect();
|
||||
} else if p_id == "ollama" {
|
||||
// Special handling for Ollama since it's local
|
||||
// We could try to list models via API here
|
||||
models = vec!["llama3".to_string(), "mistral".to_string(), "phi3".to_string()];
|
||||
} else if id == "ollama" {
|
||||
models = config.providers.ollama.models.clone();
|
||||
}
|
||||
|
||||
// Check status via circuit breaker
|
||||
let status = if state.app_state.rate_limit_manager.check_provider_request(p_id).await.unwrap_or(true) {
|
||||
"online"
|
||||
// Determine status
|
||||
let status = if !enabled {
|
||||
"disabled"
|
||||
} else {
|
||||
"degraded"
|
||||
// Check if it's actually initialized in the provider manager
|
||||
if state.app_state.provider_manager.get_provider(id).is_some() {
|
||||
// Check circuit breaker
|
||||
if state.app_state.rate_limit_manager.check_provider_request(id).await.unwrap_or(true) {
|
||||
"online"
|
||||
} else {
|
||||
"degraded"
|
||||
}
|
||||
} else {
|
||||
"error" // Enabled but failed to initialize (e.g. missing API key)
|
||||
}
|
||||
};
|
||||
|
||||
providers_json.push(serde_json::json!({
|
||||
"id": p_id,
|
||||
"name": p_id.to_uppercase(),
|
||||
"enabled": true,
|
||||
"id": id,
|
||||
"name": display_name,
|
||||
"enabled": enabled,
|
||||
"status": status,
|
||||
"models": models,
|
||||
"last_used": None::<String>, // TODO
|
||||
"last_used": None::<String>,
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user