feat: add support for Router provider and enhance command handling
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
use crate::model::settings::Settings;
|
||||
|
||||
pub const PROVIDERS: &[&str] = &["Zen API", "OpenAI"];
|
||||
pub const PROVIDERS: &[&str] = &["Zen API", "Router", "OpenAI"];
|
||||
|
||||
pub fn set_provider(settings: &mut Settings, provider: &str) {
|
||||
settings.provider = match provider {
|
||||
"Zen API" => "zen".to_string(),
|
||||
"Router" => "router".to_string(),
|
||||
"OpenAI" => "openai".to_string(),
|
||||
_ => "zen".to_string(),
|
||||
};
|
||||
|
||||
@@ -577,7 +577,7 @@ fn run_agent_turn(
|
||||
};
|
||||
|
||||
let mut stream_started = false;
|
||||
let (response, usage) = tc.client.chat_with_tools_streaming(
|
||||
let (response, usage) = match tc.client.chat_with_tools_streaming(
|
||||
&wire_msgs,
|
||||
Some(tc.tdefs.clone()),
|
||||
Some(tc.temperature),
|
||||
@@ -602,8 +602,21 @@ fn run_agent_turn(
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
)?;
|
||||
let _ = usage; // already emitted as TurnEvent::Usage inside the on_event callback, if present
|
||||
) {
|
||||
Ok(result) => result,
|
||||
Err(_stream_err) => {
|
||||
// Provider doesn't support streaming — fall back to non-streaming
|
||||
let (msg, usage_fb) = tc.client.chat_with_tools_non_streaming(
|
||||
&wire_msgs, Some(tc.tdefs.clone()),
|
||||
)?;
|
||||
if let Some((tok_in, tok_out)) = usage_fb {
|
||||
if let Ok(mut q) = events_q.lock() {
|
||||
q.push_back(TurnEvent::Usage { tokens_in: tok_in, tokens_out: tok_out });
|
||||
}
|
||||
}
|
||||
(msg, usage_fb)
|
||||
}
|
||||
};
|
||||
|
||||
let has_tool_calls = response.tool_calls.is_some()
|
||||
&& response.tool_calls.as_ref().is_some_and(|tc| !tc.is_empty());
|
||||
|
||||
@@ -72,11 +72,21 @@ const COMMANDS: &[&str] = &[
|
||||
"/lesson ls",
|
||||
"/lesson export",
|
||||
"/lesson import",
|
||||
"/lesson accept",
|
||||
"/lesson reject",
|
||||
"/mode chat",
|
||||
"/mode bash",
|
||||
"/mode help",
|
||||
"/mode settings",
|
||||
"/mode effort",
|
||||
"/mode mcp",
|
||||
"/mode rewind",
|
||||
"/mode editor",
|
||||
"/login",
|
||||
"/login zen",
|
||||
"/login openai",
|
||||
"/edit",
|
||||
"/mcp add",
|
||||
];
|
||||
|
||||
impl InputState {
|
||||
|
||||
Reference in New Issue
Block a user