diff --git a/crates/goose-local-inference/src/native_tool_parsing.rs b/crates/goose-local-inference/src/native_tool_parsing.rs index 3773c6b95..ab091de54 100644 --- a/crates/goose-local-inference/src/native_tool_parsing.rs +++ b/crates/goose-local-inference/src/native_tool_parsing.rs @@ -18,6 +18,8 @@ pub(crate) fn message_from_native_tool_text( append_tool_calls(&mut content, message.get("tool_calls")); } else if let Some(tool_calls) = parse_tool_calls_json(generated_text) { append_tool_calls(&mut content, Some(&tool_calls)); + } else if serde_json::from_str::(generated_text.trim()).is_ok() { + return Ok(None); } else if generated_text.contains("pwd"}"#; + + assert!(message_from_native_tool_text(text, "msg") + .unwrap() + .is_none()); + } + + #[test] + fn parses_json_tool_call_with_xml_text_in_arguments() { + let text = + r#"{"name":"developer__shell","arguments":{"command":"echo "}}"#; + let message = message_from_native_tool_text(text, "msg").unwrap().unwrap(); + + assert_eq!(tool_count(&message), 1); + } }