diff --git a/enterprise/lib/captain/tools/update_priority_tool.rb b/enterprise/lib/captain/tools/update_priority_tool.rb index 860d8b3bd..738bcab22 100644 --- a/enterprise/lib/captain/tools/update_priority_tool.rb +++ b/enterprise/lib/captain/tools/update_priority_tool.rb @@ -6,21 +6,33 @@ class Captain::Tools::UpdatePriorityTool < Captain::Tools::BaseAgentTool def perform(_tool_context, conversation_id:, priority:) log_tool_usage('update_priority', { conversation_id: conversation_id, priority: priority }) - return 'Missing required parameter: conversation_id' if conversation_id.blank? + error = validate_and_prepare(conversation_id, priority) + return error if error - conversation = find_conversation(conversation_id) - return 'Conversation not found' unless conversation - - normalized_priority = normalize_priority(priority) - return "Invalid priority. Valid options: #{valid_priority_options}" unless valid_priority?(normalized_priority) - - update_conversation_priority(conversation, normalized_priority) - priority_text = normalized_priority || 'none' - "Priority updated to '#{priority_text}' for conversation #{conversation_id}" + execute_priority_update end private + def validate_and_prepare(conversation_id, priority) + return 'Missing required parameter: conversation_id' if conversation_id.blank? + + @conversation = find_conversation(conversation_id) + return 'Conversation not found' unless @conversation + + @normalized_priority = normalize_priority(priority) + return "Invalid priority. Valid options: #{valid_priority_options}" unless valid_priority?(@normalized_priority) + + @conversation_id = conversation_id + nil + end + + def execute_priority_update + update_conversation_priority(@conversation, @normalized_priority) + priority_text = @normalized_priority || 'none' + "Priority updated to '#{priority_text}' for conversation #{@conversation_id}" + end + def find_conversation(conversation_id) account_scoped(::Conversation).find_by(display_id: conversation_id) end @@ -50,4 +62,4 @@ class Captain::Tools::UpdatePriorityTool < Captain::Tools::BaseAgentTool user_has_permission('conversation_unassigned_manage') || user_has_permission('conversation_participating_manage') end -end \ No newline at end of file +end