From 80998d446db5d951523e9af3c59fe054428e7e7b Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 24 Jun 2025 13:47:52 -0700 Subject: [PATCH] list all models irrespective of usage --- crates/Cargo.lock | 1 + crates/brightstaff/Cargo.toml | 1 + crates/brightstaff/src/handlers/preferences.rs | 13 +++++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/Cargo.lock b/crates/Cargo.lock index ab999ea1..1f33b4c2 100644 --- a/crates/Cargo.lock +++ b/crates/Cargo.lock @@ -225,6 +225,7 @@ dependencies = [ "reqwest", "serde", "serde_json", + "serde_with", "serde_yaml", "thiserror 2.0.12", "tokio", diff --git a/crates/brightstaff/Cargo.toml b/crates/brightstaff/Cargo.toml index b8c2582c..23f3e8b1 100644 --- a/crates/brightstaff/Cargo.toml +++ b/crates/brightstaff/Cargo.toml @@ -24,6 +24,7 @@ pretty_assertions = "1.4.1" reqwest = { version = "0.12.15", features = ["stream"] } serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" +serde_with = "3.13.0" serde_yaml = "0.9.34" thiserror = "2.0.12" tokio = { version = "1.44.2", features = ["full"] } diff --git a/crates/brightstaff/src/handlers/preferences.rs b/crates/brightstaff/src/handlers/preferences.rs index 8e6843c0..c4d365e7 100644 --- a/crates/brightstaff/src/handlers/preferences.rs +++ b/crates/brightstaff/src/handlers/preferences.rs @@ -6,24 +6,25 @@ use serde::{Deserialize, Serialize}; use serde_json; use tracing::{info, warn}; use std::{collections::HashMap, sync::Arc}; +use serde_with::skip_serializing_none; +#[skip_serializing_none] #[derive(Serialize, Deserialize)] struct UsageBasedProvider { model: String, - usage: String, + usage: Option, } pub async fn list_preferences( llm_providers: Arc>>, ) -> Response> { let prov = llm_providers.read().await; - // select providers that have usage information + // convert the LlmProvider to UsageBasedProvider let providers_with_usage = prov .iter() - .filter(|provider| provider.usage.is_some()) .map(|provider| UsageBasedProvider { model: provider.name.clone(), - usage: provider.usage.as_ref().unwrap().clone(), + usage: provider.usage.clone(), }) .collect::>(); @@ -104,10 +105,10 @@ pub async fn update_preferences( let mut updated_models_list = Vec::new(); for provider in llm_providers.iter_mut() { if let Some(usage_provider) = usage_model_map.get(&provider.name) { - provider.usage = Some(usage_provider.usage.clone()); + provider.usage = usage_provider.usage.clone(); updated_models_list.push(UsageBasedProvider { model: provider.name.clone(), - usage: provider.usage.clone().unwrap_or_default(), + usage: provider.usage.clone(), }); } }