#ifndef HUMANUS_AGENT_MANUS_H #define HUMANUS_AGENT_MANUS_H #include "base.h" #include "toolcall.h" #include "../prompt.h" #include "../tool/tool_collection.h" #include "../tool/python_execute.h" #include "../tool/terminate.h" #include "../tool/google_search.h" #include "../tool/file_saver.h" namespace humanus { /** * A versatile general-purpose agent that uses planning to solve various tasks. * * This agent extends PlanningAgent with a comprehensive set of tools and capabilities, * including Python execution, web browsing, file operations, and information retrieval * to handle a wide range of user requests. */ struct Manus : ToolCallAgent { std::string name = "manus"; std::string description = "A versatile agent that can solve various tasks using multiple tools"; std::string system_prompt = prompt::manus::SYSTEM_PROMPT; std::string next_step_prompt = prompt::manus::NEXT_STEP_PROMPT; Manus( const ToolCollection& available_tools = ToolCollection( { std::make_shared(), std::make_shared(), std::make_shared(), std::make_shared() } ), const std::string& tool_choice = "auto", const std::set& special_tool_names = {"terminate"}, const std::string& name = "manus", const std::string& description = "A versatile agent that can solve various tasks using multiple tools", const std::string& system_prompt = prompt::manus::SYSTEM_PROMPT, const std::string& next_step_prompt = prompt::manus::NEXT_STEP_PROMPT, int max_steps = 30, int current_step = 0, int duplicate_threshold = 2 ) : ToolCallAgent( available_tools, tool_choice, special_tool_names, name, description, system_prompt, next_step_prompt, max_steps, current_step, duplicate_threshold ) {} }; } #endif // HUMANUS_AGENT_MANUS_H