mirror of https://github.com/kortix-ai/suna.git
1115 lines
38 KiB
Python
1115 lines
38 KiB
Python
from typing import Dict, List, Any, Optional
|
|
from dataclasses import dataclass
|
|
|
|
@dataclass
|
|
class ToolMethod:
|
|
name: str
|
|
display_name: str
|
|
description: str
|
|
enabled: bool = True
|
|
is_core: bool = False
|
|
|
|
@dataclass
|
|
class ToolGroup:
|
|
name: str
|
|
display_name: str
|
|
description: str
|
|
tool_class: str
|
|
methods: List[ToolMethod]
|
|
enabled: bool = True
|
|
is_core: bool = False
|
|
|
|
TOOL_GROUPS: Dict[str, ToolGroup] = {
|
|
"sb_files_tool": ToolGroup(
|
|
name="sb_files_tool",
|
|
display_name="File Operations",
|
|
description="Create, read, edit, and manage files in the workspace",
|
|
tool_class="SandboxFilesTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_file",
|
|
display_name="Create File",
|
|
description="Create new files with content",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="str_replace",
|
|
display_name="String Replace",
|
|
description="Replace specific text in files",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="full_file_rewrite",
|
|
display_name="Full File Rewrite",
|
|
description="Completely rewrite file contents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="edit_file",
|
|
display_name="Edit File",
|
|
description="AI-powered file editing with instructions",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_file",
|
|
display_name="Delete File",
|
|
description="Delete files from workspace",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_shell_tool": ToolGroup(
|
|
name="sb_shell_tool",
|
|
display_name="Shell Operations",
|
|
description="Execute shell commands and manage terminal sessions",
|
|
tool_class="SandboxShellTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="execute_command",
|
|
display_name="Execute Command",
|
|
description="Execute shell commands in tmux sessions",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="check_command_output",
|
|
display_name="Check Command Output",
|
|
description="Check the output of running commands",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="terminate_command",
|
|
display_name="Terminate Command",
|
|
description="Terminate running commands",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_commands",
|
|
display_name="List Commands",
|
|
description="List all running commands",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"web_search_tool": ToolGroup(
|
|
name="web_search_tool",
|
|
display_name="Web Search",
|
|
description="Search the web and scrape content for research",
|
|
tool_class="SandboxWebSearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="web_search",
|
|
display_name="Web Search",
|
|
description="Search the web using Tavily API",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="scrape_webpage",
|
|
display_name="Scrape Webpage",
|
|
description="Scrape webpage content using Firecrawl",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_vision_tool": ToolGroup(
|
|
name="sb_vision_tool",
|
|
display_name="Vision & Image Analysis",
|
|
description="Analyze images and visual content with AI",
|
|
tool_class="SandboxVisionTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="load_image",
|
|
display_name="Load Image",
|
|
description="Load and analyze images with AI vision",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="clear_images_from_context",
|
|
display_name="Clear Images",
|
|
description="Clear images from analysis context",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_image_edit_tool": ToolGroup(
|
|
name="sb_image_edit_tool",
|
|
display_name="Image Editing",
|
|
description="Edit and manipulate images with AI",
|
|
tool_class="SandboxImageEditTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="image_edit_or_generate",
|
|
display_name="Edit or Generate Image",
|
|
description="Edit existing images or generate new ones with AI",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"browser_tool": ToolGroup(
|
|
name="browser_tool",
|
|
display_name="Browser Automation",
|
|
description="Automate web browser interactions and navigation",
|
|
tool_class="BrowserTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="browser_navigate_to",
|
|
display_name="Navigate To URL",
|
|
description="Navigate browser to specific URL",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_act",
|
|
display_name="Browser Action",
|
|
description="Perform actions like clicking, typing, scrolling",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_extract_content",
|
|
display_name="Extract Content",
|
|
description="Extract text and data from web pages",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_screenshot",
|
|
display_name="Take Screenshot",
|
|
description="Capture screenshots of web pages",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_presentation_tool": ToolGroup(
|
|
name="sb_presentation_tool",
|
|
display_name="Presentations",
|
|
description="Create and manage presentations",
|
|
tool_class="SandboxPresentationTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_slide",
|
|
display_name="Create Slide",
|
|
description="Create individual slides with content",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_slides",
|
|
display_name="List Slides",
|
|
description="List all slides in presentations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_slide",
|
|
display_name="Delete Slide",
|
|
description="Delete slides from presentations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_presentations",
|
|
display_name="List Presentations",
|
|
description="List all available presentations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_presentation",
|
|
display_name="Delete Presentation",
|
|
description="Delete entire presentations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="present_presentation",
|
|
display_name="Present Presentation",
|
|
description="Present completed presentations to user",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_sheets_tool": ToolGroup(
|
|
name="sb_sheets_tool",
|
|
display_name="Spreadsheets",
|
|
description="Create and manipulate spreadsheet data",
|
|
tool_class="SandboxSheetsTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="update_sheet",
|
|
display_name="Update Sheet",
|
|
description="Update spreadsheet cells and data",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="view_sheet",
|
|
display_name="View Sheet",
|
|
description="View and read spreadsheet data",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="create_sheet",
|
|
display_name="Create Sheet",
|
|
description="Create new spreadsheets",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="analyze_sheet",
|
|
display_name="Analyze Sheet",
|
|
description="Analyze spreadsheet data and patterns",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="visualize_sheet",
|
|
display_name="Visualize Sheet",
|
|
description="Create visualizations from spreadsheet data",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="format_sheet",
|
|
display_name="Format Sheet",
|
|
description="Format spreadsheet appearance and styling",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
|
|
"task_list_tool": ToolGroup(
|
|
name="task_list_tool",
|
|
display_name="Task Management",
|
|
description="Create and manage task lists",
|
|
tool_class="TaskListTool",
|
|
is_core=True,
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_task_list",
|
|
display_name="Create Task List",
|
|
description="Create and manage task lists",
|
|
enabled=True,
|
|
is_core=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"expand_message_tool": ToolGroup(
|
|
name="expand_message_tool",
|
|
display_name="Message Expansion",
|
|
description="Expand truncated messages from conversations",
|
|
tool_class="ExpandMessageTool",
|
|
is_core=True,
|
|
methods=[
|
|
ToolMethod(
|
|
name="expand_message",
|
|
display_name="Expand Message",
|
|
description="Expand truncated messages",
|
|
enabled=True,
|
|
is_core=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_deploy_tool": ToolGroup(
|
|
name="sb_deploy_tool",
|
|
display_name="Deployment",
|
|
description="Deploy applications and services",
|
|
tool_class="SandboxDeployTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="deploy",
|
|
display_name="Deploy Application",
|
|
description="Deploy applications and services",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_expose_tool": ToolGroup(
|
|
name="sb_expose_tool",
|
|
display_name="Port Management",
|
|
description="Expose services and manage ports",
|
|
tool_class="SandboxExposeTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="expose_port",
|
|
display_name="Expose Port",
|
|
description="Expose services on specific ports",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"image_search_tool": ToolGroup(
|
|
name="image_search_tool",
|
|
display_name="Image Search",
|
|
description="Search for images using SERPER API",
|
|
tool_class="SandboxImageSearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="image_search",
|
|
display_name="Image Search",
|
|
description="Search for images with batch support",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"data_providers_tool": ToolGroup(
|
|
name="data_providers_tool",
|
|
display_name="Data Providers",
|
|
description="Access to data providers and external APIs",
|
|
tool_class="DataProvidersTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="get_data_provider_endpoints",
|
|
display_name="Get Data Provider Endpoints",
|
|
description="List available data provider endpoints",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="execute_data_provider_call",
|
|
display_name="Execute Data Provider Call",
|
|
description="Execute calls to external data providers",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"agent_config_tool": ToolGroup(
|
|
name="agent_config_tool",
|
|
display_name="Agent Configuration",
|
|
description="Configure agent settings, tools, and integrations",
|
|
tool_class="AgentConfigTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="update_agent",
|
|
display_name="Update Agent",
|
|
description="Update agent configuration and settings",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_current_agent_config",
|
|
display_name="Get Agent Config",
|
|
description="Get current agent configuration",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"mcp_search_tool": ToolGroup(
|
|
name="mcp_search_tool",
|
|
display_name="MCP Search",
|
|
description="Search and discover MCP servers and integrations",
|
|
tool_class="MCPSearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="search_mcp_servers",
|
|
display_name="Search MCP Servers",
|
|
description="Search for available MCP server integrations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_app_details",
|
|
display_name="Get App Details",
|
|
description="Get detailed information about MCP apps",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="discover_user_mcp_servers",
|
|
display_name="Discover User MCP Servers",
|
|
description="Discover user's available MCP servers",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"credential_profile_tool": ToolGroup(
|
|
name="credential_profile_tool",
|
|
display_name="Credential Management",
|
|
description="Manage credential profiles for secure authentication",
|
|
tool_class="CredentialProfileTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="get_credential_profiles",
|
|
display_name="Get Credential Profiles",
|
|
description="List all available credential profiles",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="create_credential_profile",
|
|
display_name="Create Credential Profile",
|
|
description="Create new credential profiles for authentication",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="configure_profile_for_agent",
|
|
display_name="Configure Profile for Agent",
|
|
description="Configure credential profile for agent use",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_credential_profile",
|
|
display_name="Delete Credential Profile",
|
|
description="Delete existing credential profiles",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"trigger_tool": ToolGroup(
|
|
name="trigger_tool",
|
|
display_name="Triggers",
|
|
description="Create and manage automated triggers",
|
|
tool_class="TriggerTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_scheduled_trigger",
|
|
display_name="Create Scheduled Trigger",
|
|
description="Create time-based scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_scheduled_triggers",
|
|
display_name="Get Scheduled Triggers",
|
|
description="List all scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_scheduled_trigger",
|
|
display_name="Delete Scheduled Trigger",
|
|
description="Delete scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="toggle_scheduled_trigger",
|
|
display_name="Toggle Scheduled Trigger",
|
|
description="Enable or disable scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_event_trigger_apps",
|
|
display_name="List Event Trigger Apps",
|
|
description="List available apps for event triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_app_event_triggers",
|
|
display_name="List App Event Triggers",
|
|
description="List event triggers for specific apps",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="create_event_trigger",
|
|
display_name="Create Event Trigger",
|
|
description="Create event-based triggers",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_kb_tool": ToolGroup(
|
|
name="sb_kb_tool",
|
|
display_name="Knowledge Base",
|
|
description="Manage knowledge base content",
|
|
tool_class="SandboxKbTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="init_kb",
|
|
display_name="Initialize Knowledge Base",
|
|
description="Initialize the kb-fusion binary and optionally sync knowledge base",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="search_files",
|
|
display_name="Search Files",
|
|
description="Perform semantic search on files using kb-fusion",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="cleanup_kb",
|
|
display_name="Cleanup Knowledge Base",
|
|
description="Perform maintenance and cleanup operations",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="ls_kb",
|
|
display_name="List Knowledge Base Files",
|
|
description="List indexed files in the knowledge base",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_sync",
|
|
display_name="Sync Global Knowledge Base",
|
|
description="Sync agent's knowledge base files to sandbox",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_create_folder",
|
|
display_name="Create Knowledge Base Folder",
|
|
description="Create a new folder in the global knowledge base",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_upload_file",
|
|
display_name="Upload File to Knowledge Base",
|
|
description="Upload a file from sandbox to the global knowledge base",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_delete_item",
|
|
display_name="Delete Knowledge Base Item",
|
|
description="Delete a file or folder from the global knowledge base",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_enable_item",
|
|
display_name="Enable/Disable Knowledge Base Item",
|
|
description="Enable or disable a knowledge base file for this agent",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="global_kb_list_contents",
|
|
display_name="List Knowledge Base Contents",
|
|
description="List all folders and files in the global knowledge base",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_design_tool": ToolGroup(
|
|
name="sb_design_tool",
|
|
display_name="Design Tool",
|
|
description="Create and edit design elements",
|
|
tool_class="SandboxDesignerTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="designer_create_or_edit",
|
|
display_name="Create or Edit Design",
|
|
description="Create new designs or edit existing ones",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_presentation_outline_tool": ToolGroup(
|
|
name="sb_presentation_outline_tool",
|
|
display_name="Presentation Outline",
|
|
description="Create structured presentation outlines",
|
|
tool_class="SandboxPresentationOutlineTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_outline",
|
|
display_name="Create Outline",
|
|
description="Create presentation outlines",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_upload_file_tool": ToolGroup(
|
|
name="sb_upload_file_tool",
|
|
display_name="File Upload",
|
|
description="Upload files to the workspace",
|
|
tool_class="SandboxUploadFileTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="upload_file",
|
|
display_name="Upload File",
|
|
description="Upload files to workspace",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_docs_tool": ToolGroup(
|
|
name="sb_docs_tool",
|
|
display_name="Document Editor",
|
|
description="Create and edit documents with TipTap",
|
|
tool_class="SandboxDocsTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_document",
|
|
display_name="Create Document",
|
|
description="Create new documents with rich text content",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="read_document",
|
|
display_name="Read Document",
|
|
description="Read the content of a document",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_documents",
|
|
display_name="List Documents",
|
|
description="List all documents in the workspace",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_document",
|
|
display_name="Delete Document",
|
|
description="Delete a document from the workspace",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_format_guide",
|
|
display_name="Get Format Guide",
|
|
description="Get TipTap-compatible HTML format guide",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"agent_creation_tool": ToolGroup(
|
|
name="agent_creation_tool",
|
|
display_name="Agent Creation",
|
|
description="Create new agents (Suna only)",
|
|
tool_class="AgentCreationTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_new_agent",
|
|
display_name="Create New Agent",
|
|
description="Create completely new AI agents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="search_mcp_servers_for_agent",
|
|
display_name="Search MCP Servers",
|
|
description="Search MCP servers for agent integration",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_mcp_server_details",
|
|
display_name="Get MCP Server Details",
|
|
description="Get detailed MCP server information",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="create_credential_profile_for_agent",
|
|
display_name="Create Credential Profile",
|
|
description="Create credential profiles for agents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="discover_mcp_tools_for_agent",
|
|
display_name="Discover MCP Tools",
|
|
description="Discover available MCP tools for agents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="configure_agent_integration",
|
|
display_name="Configure Agent Integration",
|
|
description="Configure integrations for new agents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="create_agent_scheduled_trigger",
|
|
display_name="Create Scheduled Trigger",
|
|
description="Create scheduled triggers for agents",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="list_agent_scheduled_triggers",
|
|
display_name="List Scheduled Triggers",
|
|
description="List agent scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="toggle_agent_scheduled_trigger",
|
|
display_name="Toggle Scheduled Trigger",
|
|
description="Enable/disable agent scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="delete_agent_scheduled_trigger",
|
|
display_name="Delete Scheduled Trigger",
|
|
description="Delete agent scheduled triggers",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="update_agent_config",
|
|
display_name="Update Agent Config",
|
|
description="Update existing agent configurations",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_browser_tool": ToolGroup(
|
|
name="sb_browser_tool",
|
|
display_name="Browser Automation (Advanced)",
|
|
description="Advanced browser automation with full UI interaction capabilities",
|
|
tool_class="SandboxBrowserTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="browser_navigate_to",
|
|
display_name="Navigate To URL",
|
|
description="Navigate browser to specific URL",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_go_back",
|
|
display_name="Go Back",
|
|
description="Navigate back in browser history",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_wait",
|
|
display_name="Wait",
|
|
description="Wait for specified number of seconds",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_click_element",
|
|
display_name="Click Element",
|
|
description="Click on an element by index",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_input_text",
|
|
display_name="Input Text",
|
|
description="Input text into an element",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_send_keys",
|
|
display_name="Send Keys",
|
|
description="Send keyboard keys (Enter, Escape, shortcuts)",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_switch_tab",
|
|
display_name="Switch Tab",
|
|
description="Switch to a different browser tab",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_close_tab",
|
|
display_name="Close Tab",
|
|
description="Close a browser tab",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_scroll_down",
|
|
display_name="Scroll Down",
|
|
description="Scroll down the page",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_scroll_up",
|
|
display_name="Scroll Up",
|
|
description="Scroll up the page",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_scroll_to_text",
|
|
display_name="Scroll To Text",
|
|
description="Scroll to specific text on the page",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_get_dropdown_options",
|
|
display_name="Get Dropdown Options",
|
|
description="Get all options from a dropdown element",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_select_dropdown_option",
|
|
display_name="Select Dropdown Option",
|
|
description="Select an option from a dropdown by text",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_drag_drop",
|
|
display_name="Drag and Drop",
|
|
description="Perform drag and drop operation",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="browser_click_coordinates",
|
|
display_name="Click Coordinates",
|
|
description="Click at specific X,Y coordinates",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"people_search_tool": ToolGroup(
|
|
name="people_search_tool",
|
|
display_name="People Search",
|
|
description="Search for people using LinkedIn",
|
|
tool_class="PeopleSearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="people_search",
|
|
display_name="People Search",
|
|
description="Search for people using LinkedIn",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"company_search_tool": ToolGroup(
|
|
name="company_search_tool",
|
|
display_name="Company Search",
|
|
description="Search for companies using natural language queries",
|
|
tool_class="CompanySearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="company_search",
|
|
display_name="Company Search",
|
|
description="Search for companies using natural language queries",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"paper_search_tool": ToolGroup(
|
|
name="paper_search_tool",
|
|
display_name="Paper Search",
|
|
description="Search for papers using natural language queries",
|
|
tool_class="PaperSearchTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="paper_search",
|
|
display_name="Paper Search",
|
|
description="Search for papers using natural language queries",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
# "sb_document_parser_tool": ToolGroup(
|
|
# name="sb_document_parser_tool",
|
|
# display_name="Document Parser",
|
|
# description="Parse documents using Chunkr AI",
|
|
# tool_class="SandboxDocumentParserTool",
|
|
# methods=[
|
|
# ToolMethod(
|
|
# name="parse_document",
|
|
# display_name="Parse Document",
|
|
# description="Parse documents using Chunkr AI",
|
|
# enabled=True
|
|
# ),
|
|
# ]
|
|
# ),
|
|
|
|
"sb_web_dev_tool": ToolGroup(
|
|
name="sb_web_dev_tool",
|
|
display_name="Web Development",
|
|
description="Create and manage web development projects with Vite and React",
|
|
tool_class="SandboxWebDevTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="create_vite_react_project",
|
|
display_name="Create Vite React Project",
|
|
description="Create a new Vite React project",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="get_project_structure",
|
|
display_name="Get Project Structure",
|
|
description="Get the file structure of a project",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="build_project",
|
|
display_name="Build Project",
|
|
description="Build a web project for production",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="start_dev_server",
|
|
display_name="Start Dev Server",
|
|
description="Start development server",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="start_preview_server",
|
|
display_name="Start Preview Server",
|
|
description="Start preview server for built project",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"sb_templates_tool": ToolGroup(
|
|
name="sb_templates_tool",
|
|
display_name="Project Templates",
|
|
description="Discover and scaffold web project templates",
|
|
tool_class="SandboxTemplatesTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="list_templates",
|
|
display_name="List Templates",
|
|
description="List available project templates",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="scaffold_from_template",
|
|
display_name="Scaffold From Template",
|
|
description="Create project from template",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"computer_use_tool": ToolGroup(
|
|
name="computer_use_tool",
|
|
display_name="Computer Automation",
|
|
description="Automate computer interactions including GUI control",
|
|
tool_class="ComputerUseTool",
|
|
methods=[
|
|
ToolMethod(
|
|
name="screenshot",
|
|
display_name="Take Screenshot",
|
|
description="Capture screenshot of current screen",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="click",
|
|
display_name="Click",
|
|
description="Click at coordinates or on elements",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="type",
|
|
display_name="Type Text",
|
|
description="Type text into active element",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="key",
|
|
display_name="Press Keys",
|
|
description="Press keyboard keys and shortcuts",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="scroll",
|
|
display_name="Scroll",
|
|
description="Scroll in specified direction",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
|
|
"message_tool": ToolGroup(
|
|
name="message_tool",
|
|
display_name="User Communication",
|
|
description="Enhanced communication tools for user interaction",
|
|
tool_class="MessageTool",
|
|
is_core=True,
|
|
methods=[
|
|
ToolMethod(
|
|
name="ask",
|
|
display_name="Ask Question",
|
|
description="Ask users questions during task execution",
|
|
enabled=True,
|
|
is_core=True
|
|
),
|
|
ToolMethod(
|
|
name="web_browser_takeover",
|
|
display_name="Request Browser Takeover",
|
|
description="Request user takeover of browser interaction",
|
|
enabled=True
|
|
),
|
|
ToolMethod(
|
|
name="complete",
|
|
display_name="Complete Task",
|
|
description="Signal task completion and enter complete state",
|
|
enabled=True,
|
|
is_core=True
|
|
),
|
|
ToolMethod(
|
|
name="wait",
|
|
display_name="Wait",
|
|
description="Pause execution for specified duration",
|
|
enabled=True
|
|
),
|
|
]
|
|
),
|
|
}
|
|
|
|
def get_tool_group(tool_name: str) -> Optional[ToolGroup]:
|
|
return TOOL_GROUPS.get(tool_name)
|
|
|
|
def get_all_tool_groups() -> Dict[str, ToolGroup]:
|
|
return TOOL_GROUPS
|
|
|
|
def get_enabled_methods_for_tool(tool_name: str, config: Dict[str, Any]) -> List[str]:
|
|
tool_group = get_tool_group(tool_name)
|
|
if not tool_group:
|
|
return []
|
|
|
|
tool_config = config.get(tool_name, True)
|
|
|
|
if isinstance(tool_config, bool) and not tool_config:
|
|
return []
|
|
|
|
if tool_config is True:
|
|
return [method.name for method in tool_group.methods if method.enabled]
|
|
|
|
if isinstance(tool_config, dict):
|
|
if not tool_config.get('enabled', True):
|
|
return []
|
|
|
|
methods_config = tool_config.get('methods', {})
|
|
enabled_methods = []
|
|
|
|
for method in tool_group.methods:
|
|
method_enabled = method.enabled
|
|
|
|
if method.name in methods_config:
|
|
method_config = methods_config[method.name]
|
|
if isinstance(method_config, bool):
|
|
method_enabled = method_config
|
|
elif isinstance(method_config, dict):
|
|
method_enabled = method_config.get('enabled', method.enabled)
|
|
|
|
if method_enabled:
|
|
enabled_methods.append(method.name)
|
|
|
|
return enabled_methods
|
|
|
|
return [method.name for method in tool_group.methods if method.enabled]
|
|
|
|
def validate_tool_config(config: Dict[str, Any]) -> Dict[str, Any]:
|
|
normalized_config = {}
|
|
|
|
for tool_name, tool_config in config.items():
|
|
tool_group = get_tool_group(tool_name)
|
|
if not tool_group:
|
|
normalized_config[tool_name] = tool_config
|
|
continue
|
|
|
|
if tool_group.is_core:
|
|
normalized_config[tool_name] = True
|
|
continue
|
|
|
|
if isinstance(tool_config, bool):
|
|
normalized_config[tool_name] = tool_config
|
|
elif isinstance(tool_config, dict):
|
|
validated_config = {
|
|
'enabled': tool_config.get('enabled', True),
|
|
'methods': {}
|
|
}
|
|
|
|
methods_config = tool_config.get('methods', {})
|
|
for method in tool_group.methods:
|
|
if method.name in methods_config:
|
|
method_config = methods_config[method.name]
|
|
if isinstance(method_config, bool):
|
|
validated_config['methods'][method.name] = method_config
|
|
elif isinstance(method_config, dict):
|
|
validated_config['methods'][method.name] = {
|
|
'enabled': method_config.get('enabled', method.enabled)
|
|
}
|
|
else:
|
|
validated_config['methods'][method.name] = method.enabled
|
|
else:
|
|
validated_config['methods'][method.name] = method.enabled
|
|
|
|
normalized_config[tool_name] = validated_config
|
|
else:
|
|
normalized_config[tool_name] = True
|
|
|
|
return normalized_config
|