chore: remove needless clone() in goose/providers (#2528)

Signed-off-by: Mike Seddon <seddonm1@gmail.com>
This commit is contained in:
Mike Seddon
2025-07-23 01:47:43 +10:00
committed by GitHub
parent ab8089499e
commit b3cd03ef61
19 changed files with 93 additions and 88 deletions
@@ -207,7 +207,7 @@ pub fn format_system(system: &str) -> Value {
}
/// Convert Anthropic's API response to internal Message format
pub fn response_to_message(response: Value) -> Result<Message> {
pub fn response_to_message(response: &Value) -> Result<Message> {
let content_blocks = response
.get(CONTENT_FIELD)
.and_then(|c| c.as_array())
@@ -699,7 +699,7 @@ mod tests {
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
let usage = get_usage(&response)?;
if let MessageContent::Text(text) = &message.content[0] {
@@ -740,7 +740,7 @@ mod tests {
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
let usage = get_usage(&response)?;
if let MessageContent::ToolRequest(tool_request) = &message.content[0] {
@@ -790,7 +790,7 @@ mod tests {
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
let usage = get_usage(&response)?;
assert_eq!(message.content.len(), 3);
@@ -268,8 +268,8 @@ pub fn format_tools(tools: &[Tool]) -> anyhow::Result<Vec<Value>> {
}
/// Convert Databricks' API response to internal Message format
pub fn response_to_message(response: Value) -> anyhow::Result<Message> {
let original = response["choices"][0]["message"].clone();
pub fn response_to_message(response: &Value) -> anyhow::Result<Message> {
let original = &response["choices"][0]["message"];
let mut content = Vec::new();
// Handle array-based content
@@ -737,7 +737,7 @@ mod tests {
// Get the ID from the tool request to use in the response
let tool_id = if let MessageContent::ToolRequest(request) = &messages[2].content[0] {
request.id.clone()
&request.id
} else {
panic!("should be tool request");
};
@@ -770,7 +770,7 @@ mod tests {
// Get the ID from the tool request to use in the response
let tool_id = if let MessageContent::ToolRequest(request) = &messages[0].content[0] {
request.id.clone()
&request.id
} else {
panic!("should be tool request");
};
@@ -891,7 +891,7 @@ mod tests {
}
});
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 1);
if let MessageContent::Text(text) = &message.content[0] {
assert_eq!(text.text, "Hello from John Cena!");
@@ -906,7 +906,7 @@ mod tests {
#[test]
fn test_response_to_message_valid_toolrequest() -> anyhow::Result<()> {
let response: Value = serde_json::from_str(OPENAI_TOOL_USE_RESPONSE)?;
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 1);
if let MessageContent::ToolRequest(request) = &message.content[0] {
@@ -926,7 +926,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["name"] =
json!("invalid fn");
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
match &request.tool_call {
@@ -948,7 +948,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["arguments"] =
json!("invalid json {");
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
match &request.tool_call {
@@ -970,7 +970,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["arguments"] =
serde_json::Value::String("".to_string());
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
let tool_call = request.tool_call.as_ref().unwrap();
@@ -1107,7 +1107,7 @@ mod tests {
}]
});
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 2);
if let MessageContent::Thinking(thinking) = &message.content[0] {
@@ -1154,7 +1154,7 @@ mod tests {
}]
});
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 2);
if let MessageContent::RedactedThinking(redacted) = &message.content[0] {
@@ -332,7 +332,7 @@ pub fn create_request(
/// * `Result<Message>` - Converted message
pub fn response_to_message(response: Value, request_context: RequestContext) -> Result<Message> {
match request_context.provider() {
ModelProvider::Anthropic => anthropic::response_to_message(response),
ModelProvider::Anthropic => anthropic::response_to_message(&response),
ModelProvider::Google => google::response_to_message(response),
}
}
+7 -7
View File
@@ -268,8 +268,8 @@ pub fn format_tools(tools: &[Tool]) -> anyhow::Result<Vec<Value>> {
}
/// Convert OpenAI's API response to internal Message format
pub fn response_to_message(response: Value) -> anyhow::Result<Message> {
let original = response["choices"][0]["message"].clone();
pub fn response_to_message(response: &Value) -> anyhow::Result<Message> {
let original = &response["choices"][0]["message"];
let mut content = Vec::new();
if let Some(text) = original.get("content") {
@@ -910,7 +910,7 @@ mod tests {
}
});
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 1);
if let MessageContent::Text(text) = &message.content[0] {
assert_eq!(text.text, "Hello from John Cena!");
@@ -925,7 +925,7 @@ mod tests {
#[test]
fn test_response_to_message_valid_toolrequest() -> anyhow::Result<()> {
let response: Value = serde_json::from_str(OPENAI_TOOL_USE_RESPONSE)?;
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
assert_eq!(message.content.len(), 1);
if let MessageContent::ToolRequest(request) = &message.content[0] {
@@ -945,7 +945,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["name"] =
json!("invalid fn");
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
match &request.tool_call {
@@ -967,7 +967,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["arguments"] =
json!("invalid json {");
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
match &request.tool_call {
@@ -989,7 +989,7 @@ mod tests {
response["choices"][0]["message"]["tool_calls"][0]["function"]["arguments"] =
serde_json::Value::String("".to_string());
let message = response_to_message(response)?;
let message = response_to_message(&response)?;
if let MessageContent::ToolRequest(request) = &message.content[0] {
let tool_call = request.tool_call.as_ref().unwrap();
@@ -198,7 +198,7 @@ pub fn parse_streaming_response(sse_data: &str) -> Result<Message> {
}
/// Convert Snowflake's API response to internal Message format
pub fn response_to_message(response: Value) -> Result<Message> {
pub fn response_to_message(response: &Value) -> Result<Message> {
let mut message = Message::assistant();
let content_list = response.get("content_list").and_then(|cl| cl.as_array());
@@ -380,7 +380,7 @@ mod tests {
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
let usage = get_usage(&response)?;
if let MessageContent::Text(text) = &message.content[0] {
@@ -417,7 +417,7 @@ mod tests {
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
let usage = get_usage(&response)?;
if let MessageContent::ToolRequest(tool_request) = &message.content[0] {
@@ -625,7 +625,7 @@ data: {"id":"a9537c2c-2017-4906-9817-2456168d89fa","model":"claude-3-5-sonnet","
}
});
let message = response_to_message(response.clone())?;
let message = response_to_message(&response)?;
// Should have both text and tool request content
assert_eq!(message.content.len(), 2);