mirror of
https://github.com/aljazceru/goose.git
synced 2025-12-18 14:44:21 +01:00
fix: fliter tool confirmation request (#2198)
This commit is contained in:
@@ -14,6 +14,12 @@ use serde_json::{json, Map, Value};
|
|||||||
pub fn format_messages(messages: &[Message]) -> Vec<Value> {
|
pub fn format_messages(messages: &[Message]) -> Vec<Value> {
|
||||||
messages
|
messages
|
||||||
.iter()
|
.iter()
|
||||||
|
.filter(|message| {
|
||||||
|
message
|
||||||
|
.content
|
||||||
|
.iter()
|
||||||
|
.any(|content| !matches!(content, MessageContent::ToolConfirmationRequest(_)))
|
||||||
|
})
|
||||||
.map(|message| {
|
.map(|message| {
|
||||||
let role = if message.role == Role::User {
|
let role = if message.role == Role::User {
|
||||||
"user"
|
"user"
|
||||||
@@ -333,6 +339,19 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn set_up_tool_confirmation_message(id: &str, tool_call: ToolCall) -> Message {
|
||||||
|
Message {
|
||||||
|
role: Role::User,
|
||||||
|
created: 0,
|
||||||
|
content: vec![MessageContent::tool_confirmation_request(
|
||||||
|
id.to_string(),
|
||||||
|
tool_call.name.clone(),
|
||||||
|
tool_call.arguments.clone(),
|
||||||
|
Some("Goose would like to call the above tool. Allow? (y/n):".to_string()),
|
||||||
|
)],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn set_up_tool_response_message(id: &str, tool_response: Vec<Content>) -> Message {
|
fn set_up_tool_response_message(id: &str, tool_response: Vec<Content>) -> Message {
|
||||||
Message {
|
Message {
|
||||||
role: Role::Assistant,
|
role: Role::Assistant,
|
||||||
@@ -389,10 +408,10 @@ mod tests {
|
|||||||
let arguments = json!({
|
let arguments = json!({
|
||||||
"param1": "value1"
|
"param1": "value1"
|
||||||
});
|
});
|
||||||
let messages = vec![set_up_tool_request_message(
|
let messages = vec![
|
||||||
"id",
|
set_up_tool_request_message("id", ToolCall::new("tool_name", json!(arguments))),
|
||||||
ToolCall::new("tool_name", json!(arguments)),
|
set_up_tool_confirmation_message("id2", ToolCall::new("tool_name_2", json!(arguments))),
|
||||||
)];
|
];
|
||||||
let payload = format_messages(&messages);
|
let payload = format_messages(&messages);
|
||||||
assert_eq!(payload.len(), 1);
|
assert_eq!(payload.len(), 1);
|
||||||
assert_eq!(payload[0]["role"], "user");
|
assert_eq!(payload[0]["role"], "user");
|
||||||
|
|||||||
Reference in New Issue
Block a user