Skip to content

Commit 2ddcb1f

Browse files
committed
style: format code with cargo fmt
1 parent f6ed270 commit 2ddcb1f

5 files changed

Lines changed: 42 additions & 29 deletions

File tree

src/cortex-common/src/model_presets/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ pub use types::{ModelAlias, ModelPreset, ModelResolution};
1818
pub use constants::{DEFAULT_MODEL, DEFAULT_MODELS, DEFAULT_PROVIDER};
1919

2020
// Re-export preset data and helpers
21-
pub use presets::{MODEL_PRESETS, get_model_preset, get_models_for_provider, validate_chutes_model, provider_allows_custom_models, CHUTES_ALLOWED_MODELS};
21+
pub use presets::{
22+
CHUTES_ALLOWED_MODELS, MODEL_PRESETS, get_model_preset, get_models_for_provider,
23+
provider_allows_custom_models, validate_chutes_model,
24+
};
2225

2326
// Re-export alias data and helpers
2427
pub use aliases::{MODEL_ALIASES, list_model_aliases, resolve_model_alias};

src/cortex-common/src/model_presets/presets.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -841,12 +841,12 @@ pub fn get_models_for_provider(provider: &str) -> Vec<&'static ModelPreset> {
841841
/// Returns Ok(()) if valid, Err with message if invalid.
842842
pub fn validate_chutes_model(model: &str) -> Result<(), String> {
843843
let model = model.trim();
844-
844+
845845
// Check for empty model
846846
if model.is_empty() {
847847
return Err("Model name cannot be empty for Chutes provider".to_string());
848848
}
849-
849+
850850
// Check suffix (case-insensitive)
851851
if !model.to_uppercase().ends_with("-TEE") {
852852
return Err(format!(
@@ -856,17 +856,20 @@ pub fn validate_chutes_model(model: &str) -> Result<(), String> {
856856
CHUTES_ALLOWED_MODELS.join(", ")
857857
));
858858
}
859-
859+
860860
// SECURITY: Also verify model is in the allowed whitelist
861-
if !CHUTES_ALLOWED_MODELS.iter().any(|&allowed| allowed.eq_ignore_ascii_case(model)) {
861+
if !CHUTES_ALLOWED_MODELS
862+
.iter()
863+
.any(|&allowed| allowed.eq_ignore_ascii_case(model))
864+
{
862865
return Err(format!(
863866
"Model '{}' is not in the allowed Chutes models list. \
864867
Available models: {}",
865868
model,
866869
CHUTES_ALLOWED_MODELS.join(", ")
867870
));
868871
}
869-
872+
870873
Ok(())
871874
}
872875

@@ -898,14 +901,14 @@ mod tests {
898901
// Not a TEE model
899902
assert!(validate_chutes_model("gpt-4").is_err());
900903
assert!(validate_chutes_model("claude-3").is_err());
901-
904+
902905
// Has TEE suffix but NOT in whitelist
903906
assert!(validate_chutes_model("fake-model-TEE").is_err());
904907
assert!(validate_chutes_model("some-model-TEE").is_err());
905-
908+
906909
// TEE in wrong position
907910
assert!(validate_chutes_model("model-TEE-v2").is_err());
908-
911+
909912
// Empty string
910913
let result = validate_chutes_model("");
911914
assert!(result.is_err());
@@ -918,13 +921,13 @@ mod tests {
918921
assert!(!provider_allows_custom_models("chutes"));
919922
assert!(!provider_allows_custom_models("Chutes"));
920923
assert!(!provider_allows_custom_models("CHUTES"));
921-
924+
922925
// Other providers allow custom models
923926
assert!(provider_allows_custom_models("cortex"));
924927
assert!(provider_allows_custom_models("openai"));
925928
assert!(provider_allows_custom_models("anthropic"));
926929
}
927-
930+
928931
#[test]
929932
fn test_chutes_allowed_models_list() {
930933
// Verify the whitelist contains expected model

src/cortex-tui/src/providers/manager.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use cortex_engine::client::{
1111

1212
use super::config::CortexConfig;
1313
use super::models::{ModelInfo, get_models_for_provider, get_popular_models};
14-
use cortex_common::model_presets::{validate_chutes_model, CHUTES_ALLOWED_MODELS};
14+
use cortex_common::model_presets::{CHUTES_ALLOWED_MODELS, validate_chutes_model};
1515

1616
// ============================================================
1717
// PROVIDER MANAGER
@@ -227,7 +227,7 @@ impl ProviderManager {
227227
/// Sets the current provider.
228228
pub fn set_provider(&mut self, provider: &str) -> Result<()> {
229229
self.current_provider = provider.to_string();
230-
230+
231231
// SECURITY: Validate current model when switching to Chutes provider
232232
if provider.eq_ignore_ascii_case("chutes") {
233233
if validate_chutes_model(&self.current_model).is_err() {
@@ -239,7 +239,7 @@ impl ProviderManager {
239239
self.current_model = CHUTES_ALLOWED_MODELS[0].to_string();
240240
}
241241
}
242-
242+
243243
self.client = None;
244244
Ok(())
245245
}
@@ -251,8 +251,7 @@ impl ProviderManager {
251251
// Validate model for Chutes provider (TEE-only security requirement)
252252
// Use case-insensitive comparison for provider check
253253
if self.current_provider.eq_ignore_ascii_case("chutes") {
254-
validate_chutes_model(&resolved)
255-
.map_err(|e| anyhow::anyhow!(e))?;
254+
validate_chutes_model(&resolved).map_err(|e| anyhow::anyhow!(e))?;
256255
}
257256

258257
self.current_model = resolved;
@@ -398,13 +397,12 @@ impl ProviderManager {
398397
if self.client.is_some() {
399398
return Ok(());
400399
}
401-
400+
402401
// SECURITY: Defense-in-depth - validate TEE model before API calls
403402
if self.current_provider.eq_ignore_ascii_case("chutes") {
404-
validate_chutes_model(&self.current_model)
405-
.map_err(|e| anyhow::anyhow!("{}", e))?;
403+
validate_chutes_model(&self.current_model).map_err(|e| anyhow::anyhow!("{}", e))?;
406404
}
407-
405+
408406
let token = self.get_token()?;
409407
self.client = Some(create_client("cortex", &self.current_model, &token, None)?);
410408
Ok(())

src/cortex-tui/src/runner/event_loop/commands.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -556,21 +556,22 @@ impl EventLoop {
556556
} else {
557557
Ok(())
558558
};
559-
559+
560560
// Handle validation result after releasing the borrow
561561
if let Err(e) = validation_result {
562562
self.add_system_message(&format!("Cannot set model: {}", e));
563563
return;
564564
}
565-
565+
566566
// Only update state if validation passed
567567
self.app_state.model = value.to_string();
568568
self.update_session_model(value);
569569
self.add_system_message(&format!("Model set to: {}", value));
570570
}
571571
"provider" => {
572572
// Check validation result first, storing any error and new model
573-
let validation_result: Result<Option<String>, String> = if let Some(pm) = &self.provider_manager
573+
let validation_result: Result<Option<String>, String> = if let Some(pm) =
574+
&self.provider_manager
574575
&& let Ok(mut manager) = pm.try_write()
575576
{
576577
match manager.set_provider(value) {
@@ -583,7 +584,7 @@ impl EventLoop {
583584
} else {
584585
Ok(None)
585586
};
586-
587+
587588
// Handle validation result after releasing the borrow
588589
match validation_result {
589590
Err(e) => {
@@ -596,7 +597,7 @@ impl EventLoop {
596597
}
597598
Ok(None) => {}
598599
}
599-
600+
600601
self.app_state.provider = value.to_string();
601602
self.add_system_message(&format!("Provider set to: {}", value));
602603
}

src/cortex-tui/src/runner/event_loop/modal.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ impl EventLoop {
4343
&& let Ok(mut manager) = pm.try_write()
4444
{
4545
if let Err(e) = manager.set_model(&model_id) {
46-
self.app_state.toasts.error(format!("Cannot use model: {}", e));
46+
self.app_state
47+
.toasts
48+
.error(format!("Cannot use model: {}", e));
4749
self.app_state.close_modal();
4850
return Ok(true);
4951
}
@@ -229,7 +231,9 @@ impl EventLoop {
229231
{
230232
// Check result of set_model instead of ignoring it
231233
if let Err(e) = manager.set_model(&model_id) {
232-
self.app_state.toasts.error(format!("Cannot use model: {}", e));
234+
self.app_state
235+
.toasts
236+
.error(format!("Cannot use model: {}", e));
233237
return;
234238
}
235239
// Only update app state if validation passed
@@ -512,7 +516,9 @@ impl EventLoop {
512516
&& let Ok(mut manager) = pm.try_write()
513517
{
514518
if let Err(e) = manager.set_provider(&item_id) {
515-
self.app_state.toasts.error(format!("Cannot switch provider: {}", e));
519+
self.app_state
520+
.toasts
521+
.error(format!("Cannot switch provider: {}", e));
516522
return false;
517523
}
518524
// Update model to reflect any changes made during provider switch
@@ -527,7 +533,9 @@ impl EventLoop {
527533
{
528534
// Check validation result
529535
if let Err(e) = manager.set_model(&item_id) {
530-
self.app_state.toasts.error(format!("Cannot use model: {}", e));
536+
self.app_state
537+
.toasts
538+
.error(format!("Cannot use model: {}", e));
531539
return false;
532540
}
533541
self.app_state.model = item_id.clone();

0 commit comments

Comments
 (0)