#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/puppeteer.h" #include "../tool/filesystem.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 { Manus( const ToolCollection& available_tools = ToolCollection( // Add general-purpose tools to the tool collection { std::make_shared(), std::make_shared(), // for web browsing 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, const std::shared_ptr& llm = nullptr, const std::shared_ptr& memory = nullptr, AgentState state = AgentState::IDLE, 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, llm, memory, state, max_steps, current_step, duplicate_threshold ) {} }; } #endif // HUMANUS_AGENT_MANUS_H