diff --git a/src/agent/mod.rs b/src/agent/mod.rs index 554af06..f2f8376 100644 --- a/src/agent/mod.rs +++ b/src/agent/mod.rs @@ -485,8 +485,16 @@ impl Agent { ui_tx: &UiSender, ds: &mut DispatchState, ) { - let args: serde_json::Value = - serde_json::from_str(&call.function.arguments).unwrap_or_default(); + let args: serde_json::Value = match serde_json::from_str(&call.function.arguments) { + Ok(v) => v, + Err(e) => { + let err = format!("Error: malformed tool call arguments: {e}"); + let _ = ui_tx.send(UiMessage::Activity(format!("rejected: {} (bad args)", call.function.name))); + let mut me = agent.lock().await; + me.apply_tool_result(call, err, ui_tx, ds); + return; + } + }; let args_summary = summarize_args(&call.function.name, &args); let _ = ui_tx.send(UiMessage::Activity(format!("calling: {}", call.function.name)));