feat: add test_load and test_parse binaries for configuration loading and parsing
This commit is contained in:
@@ -33,6 +33,29 @@ pub fn spawn_agent_turn(state: &mut AppStateRest, text: String) {
|
||||
let session_dir = state.session_dir.clone();
|
||||
let workspace_roots = state.workspace_roots.clone();
|
||||
|
||||
// Resolve LLM provider configuration from settings
|
||||
let provider_name = &state.settings.provider;
|
||||
let provider_cfg = state.app_config.providers.get(provider_name).cloned();
|
||||
|
||||
let mut api_key = String::new();
|
||||
if let Some(key) = state.settings.api_keys.get(provider_name) {
|
||||
api_key = key.clone();
|
||||
} else if let Some(ref cfg) = provider_cfg {
|
||||
if let Some(ref default_key) = cfg.default_api_key {
|
||||
api_key = default_key.clone();
|
||||
}
|
||||
if api_key.is_empty() {
|
||||
if let Some(ref env_name) = cfg.api_key_env {
|
||||
if let Ok(val) = std::env::var(env_name) {
|
||||
api_key = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let model = state.settings.model.clone();
|
||||
let api_base = provider_cfg.map(|cfg| cfg.api_base.clone());
|
||||
|
||||
let mut messages: Vec<ChatMessage> = state
|
||||
.session_runtime
|
||||
.as_ref()
|
||||
@@ -44,10 +67,20 @@ pub fn spawn_agent_turn(state: &mut AppStateRest, text: String) {
|
||||
rt.messages = messages.clone();
|
||||
}
|
||||
|
||||
info!("spawning agent turn with {} messages", messages.len());
|
||||
info!("spawning agent turn with {} messages (model: {})", messages.len(), model);
|
||||
|
||||
std::thread::spawn(move || {
|
||||
run_turn(&mut messages, &session_dir, &workspace_roots, &turn_events, &in_flight, &abort);
|
||||
run_turn(
|
||||
&mut messages,
|
||||
&session_dir,
|
||||
&workspace_roots,
|
||||
&turn_events,
|
||||
&in_flight,
|
||||
&abort,
|
||||
api_key,
|
||||
model,
|
||||
api_base,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -59,12 +92,11 @@ fn run_turn(
|
||||
turn_events: &Arc<Mutex<VecDeque<TurnEvent>>>,
|
||||
in_flight: &Arc<AtomicBool>,
|
||||
abort: &Arc<AtomicBool>,
|
||||
api_key: String,
|
||||
model: String,
|
||||
api_base: Option<String>,
|
||||
) {
|
||||
let client = LlmClient::new(
|
||||
String::new(), // API key resolved internally from env
|
||||
"deepseek-v4-flash-free".to_string(),
|
||||
Some("https://opencode.ai/zen/v1".to_string()),
|
||||
);
|
||||
let client = LlmClient::new(api_key, model, api_base);
|
||||
|
||||
let tools = all_tools();
|
||||
let defs = tool_defs(&tools);
|
||||
|
||||
Reference in New Issue
Block a user