feat: remove ModelUse and ModelAdd commands; update command handling and provider configuration

This commit is contained in:
asepharyana
2026-07-12 02:19:08 +07:00
parent 32155f8ea8
commit c948869d35
4 changed files with 14 additions and 68 deletions
+9 -41
View File
@@ -60,13 +60,6 @@ pub enum Action {
command: String,
},
ModelList,
ModelUse {
provider: String,
},
ModelAdd {
name: String,
base_url: String,
},
}
pub fn apply_action(state: &mut AppStateRest, action: Action) {
@@ -196,39 +189,6 @@ pub fn apply_action(state: &mut AppStateRest, action: Action) {
state.misc.overlay = Overlay::ModelSelector;
state.dirty = true;
}
Action::ModelUse { provider } => {
if state.app_config.providers.contains_key(&provider) {
let default_model = state.app_config.providers[&provider]
.default_model.clone()
.unwrap_or_else(|| "claude-opus-4-8".to_string());
state.settings.provider = provider.clone();
state.settings.model = default_model;
let _ = state.settings.save();
state.push_toast(Toast::new(ToastKind::Success,
format!("Switched to provider '{}' (model: {})", provider, state.settings.model)));
} else {
state.push_toast(Toast::new(ToastKind::Error,
format!("Unknown provider '{}'. Use /model ls to see available ones.", provider)));
}
state.dirty = true;
}
Action::ModelAdd { name, base_url } => {
if base_url.is_empty() {
state.push_toast(Toast::new(ToastKind::Error, "Usage: /model add <name> <base_url>".to_string()));
} else {
let cfg = crate::model::app_config::ProviderConfig {
api_base: base_url.clone(),
api_key_env: None,
default_model: Some("claude-opus-4-8".to_string()),
};
state.app_config.providers.insert(name.clone(), cfg);
state.push_toast(Toast::new(ToastKind::Success,
format!("Added provider '{}' at {}", name, base_url)));
state.push_toast(Toast::new(ToastKind::Info,
"Use /model use <name> to switch, or /edit app_config.json to configure further".to_string()));
state.dirty = true;
}
}
Action::CloseOverlay => {
// If the overlay is the Editor, dismiss it properly first
if state.misc.overlay == Overlay::Editor {
@@ -496,10 +456,18 @@ fn spawn_turn(state: &AppStateRest) {
if messages.is_empty() {
return;
}
let api_key = state.settings.api_key.clone().unwrap_or_default();
let mut api_key = state.settings.api_key.clone().unwrap_or_default();
let model = state.settings.model.clone();
let base_url = state.app_config.providers.get(&state.settings.provider)
.map(|p| p.api_base.clone());
if api_key.is_empty() {
if let Some(provider_cfg) = state.app_config.providers.get(&state.settings.provider) {
api_key = provider_cfg.api_key_env.as_ref()
.and_then(|env| std::env::var(env).ok())
.or_else(|| provider_cfg.default_api_key.clone())
.unwrap_or_default();
}
}
let (temperature, max_tokens) = crate::app::mode::effort::generation_params(
state.misc.effort_level,
state.settings.max_tokens,
-6
View File
@@ -61,12 +61,6 @@ pub fn apply_command(command: Command) -> Vec<Action> {
Command::ModelList => {
vec![Action::ModelList]
}
Command::ModelUse { provider } => {
vec![Action::ModelUse { provider }]
}
Command::ModelAdd { name, base_url } => {
vec![Action::ModelAdd { name, base_url }]
}
Command::Unknown(cmd) => {
vec![Action::SystemNote {
kind: "error".to_string(),