From 58cf6b29bc1e0487440fa89705b32bd2fbefd235 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 16 Dec 2025 12:01:55 -0800 Subject: [PATCH] fix precommit and tests --- .../src/handlers/pipeline_processor.rs | 8 +-- crates/hermesllm/src/providers/request.rs | 66 +++++++++---------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/crates/brightstaff/src/handlers/pipeline_processor.rs b/crates/brightstaff/src/handlers/pipeline_processor.rs index 8c11838c..134863e9 100644 --- a/crates/brightstaff/src/handlers/pipeline_processor.rs +++ b/crates/brightstaff/src/handlers/pipeline_processor.rs @@ -537,17 +537,13 @@ mod tests { let agent_map = HashMap::new(); let request_headers = HeaderMap::new(); - let initial_request = ChatCompletionsRequest { - messages: vec![create_test_message(Role::User, "Hello")], - model: "test-model".to_string(), - ..Default::default() - }; + let messages = vec![create_test_message(Role::User, "Hello")]; let pipeline = create_test_pipeline(vec!["nonexistent-agent", "terminal-agent"]); let result = processor .process_filter_chain( - &initial_request.messages, + &messages, &pipeline, &agent_map, &request_headers, diff --git a/crates/hermesllm/src/providers/request.rs b/crates/hermesllm/src/providers/request.rs index 72246f39..212d6eb1 100644 --- a/crates/hermesllm/src/providers/request.rs +++ b/crates/hermesllm/src/providers/request.rs @@ -54,31 +54,31 @@ impl ProviderRequestType { /// This is useful for processing chat history across different provider formats pub fn get_message_history(&self) -> Vec { use crate::apis::openai::{Message, MessageContent, Role}; - + match self { Self::ChatCompletionsRequest(r) => r.messages.clone(), Self::MessagesRequest(r) => { // Convert Anthropic messages to OpenAI format let mut openai_messages = Vec::new(); - + // Add system prompt as system message if present if let Some(system) = &r.system { openai_messages.push(system.clone().into()); } - + // Convert each Anthropic message to OpenAI format for msg in &r.messages { if let Ok(converted_msgs) = TryInto::>::try_into(msg.clone()) { openai_messages.extend(converted_msgs); } } - + openai_messages } Self::BedrockConverse(r) => { // Convert Bedrock messages to OpenAI format let mut openai_messages = Vec::new(); - + // Add system messages if present if let Some(system) = &r.system { for sys_block in system { @@ -96,7 +96,7 @@ impl ProviderRequestType { } } } - + // Convert conversation messages if let Some(messages) = &r.messages { for msg in messages { @@ -104,7 +104,7 @@ impl ProviderRequestType { crate::apis::amazon_bedrock::ConversationRole::User => Role::User, crate::apis::amazon_bedrock::ConversationRole::Assistant => Role::Assistant, }; - + // Extract text from content blocks let content = msg.content.iter() .filter_map(|block| { @@ -116,7 +116,7 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + openai_messages.push(Message { role, content: MessageContent::Text(content), @@ -126,13 +126,13 @@ impl ProviderRequestType { }); } } - + openai_messages } Self::BedrockConverseStream(r) => { // Same as BedrockConverse let mut openai_messages = Vec::new(); - + if let Some(system) = &r.system { for sys_block in system { match sys_block { @@ -149,14 +149,14 @@ impl ProviderRequestType { } } } - + if let Some(messages) = &r.messages { for msg in messages { let role = match msg.role { crate::apis::amazon_bedrock::ConversationRole::User => Role::User, crate::apis::amazon_bedrock::ConversationRole::Assistant => Role::Assistant, }; - + let content = msg.content.iter() .filter_map(|block| { if let crate::apis::amazon_bedrock::ContentBlock::Text { text } = block { @@ -167,7 +167,7 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + openai_messages.push(Message { role, content: MessageContent::Text(content), @@ -177,13 +177,13 @@ impl ProviderRequestType { }); } } - + openai_messages } Self::ResponsesAPIRequest(r) => { // Convert ResponsesAPIRequest input to a user message let mut openai_messages = Vec::new(); - + // Add instructions as system message if present if let Some(instructions) = &r.instructions { openai_messages.push(Message { @@ -194,7 +194,7 @@ impl ProviderRequestType { tool_call_id: None, }); } - + // Convert input to messages use crate::apis::openai_responses::{InputParam, InputItem}; match &r.input { @@ -218,7 +218,7 @@ impl ProviderRequestType { crate::apis::openai_responses::MessageRole::System => Role::System, crate::apis::openai_responses::MessageRole::Developer => Role::System, // Map developer to system }; - + // Extract text from message content let content = msg.content.iter() .filter_map(|c| { @@ -230,7 +230,7 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + openai_messages.push(Message { role, content: MessageContent::Text(content), @@ -243,7 +243,7 @@ impl ProviderRequestType { } } } - + openai_messages } } @@ -261,7 +261,7 @@ impl ProviderRequestType { // Separate system messages from regular messages let mut system_messages = Vec::new(); let mut regular_messages = Vec::new(); - + for msg in messages { if msg.role == crate::apis::openai::Role::System { system_messages.push(msg.clone()); @@ -269,7 +269,7 @@ impl ProviderRequestType { regular_messages.push(msg.clone()); } } - + // Set system prompt if there are system messages if !system_messages.is_empty() { // Combine all system messages into one @@ -283,10 +283,10 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + r.system = Some(crate::apis::anthropic::MessagesSystemPrompt::Single(system_text)); } - + // Convert regular messages r.messages = regular_messages.iter() .filter_map(|msg| { @@ -297,10 +297,10 @@ impl ProviderRequestType { Self::BedrockConverse(r) | Self::BedrockConverseStream(r) => { // Convert OpenAI messages to Bedrock format use crate::apis::amazon_bedrock::{ContentBlock, ConversationRole, SystemContentBlock}; - + let mut system_blocks = Vec::new(); let mut bedrock_messages = Vec::new(); - + for msg in messages { match msg.role { crate::apis::openai::Role::System => { @@ -314,13 +314,13 @@ impl ProviderRequestType { crate::apis::openai::Role::Assistant => ConversationRole::Assistant, _ => continue, }; - + let content = if let crate::apis::openai::MessageContent::Text(text) = &msg.content { vec![ContentBlock::Text { text: text.clone() }] } else { vec![] }; - + bedrock_messages.push(crate::apis::amazon_bedrock::Message { role, content, @@ -329,7 +329,7 @@ impl ProviderRequestType { _ => {} } } - + if !system_blocks.is_empty() { r.system = Some(system_blocks); } @@ -349,18 +349,18 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + if !system_text.is_empty() { r.instructions = Some(system_text); } - + // Convert user/assistant messages to InputParam // For simplicity, we'll use the last user message as the input // or combine all non-system messages let input_messages: Vec<_> = messages.iter() .filter(|msg| msg.role != crate::apis::openai::Role::System) .collect(); - + if !input_messages.is_empty() { // If there's only one message, use Text format if input_messages.len() == 1 { @@ -373,7 +373,7 @@ impl ProviderRequestType { let combined_text = input_messages.iter() .filter_map(|msg| { if let crate::apis::openai::MessageContent::Text(text) = &msg.content { - Some(format!("{}: {}", + Some(format!("{}: {}", match msg.role { crate::apis::openai::Role::User => "User", crate::apis::openai::Role::Assistant => "Assistant", @@ -387,7 +387,7 @@ impl ProviderRequestType { }) .collect::>() .join("\n"); - + r.input = crate::apis::openai_responses::InputParam::Text(combined_text); } }