mirror of https://github.com/kortix-ai/suna.git
config refactor wip
This commit is contained in:
parent
01401a1c9f
commit
72d05036ec
|
@ -119,7 +119,28 @@ def extract_agent_config(agent_data: Dict[str, Any], version_data: Optional[Dict
|
||||||
'model': None, # No model specified for default config
|
'model': None, # No model specified for default config
|
||||||
'configured_mcps': [],
|
'configured_mcps': [],
|
||||||
'custom_mcps': [],
|
'custom_mcps': [],
|
||||||
'agentpress_tools': {},
|
'agentpress_tools': {
|
||||||
|
# Default all tools to enabled for new agents
|
||||||
|
"sb_shell_tool": True,
|
||||||
|
"sb_files_tool": True,
|
||||||
|
"sb_deploy_tool": True,
|
||||||
|
"sb_expose_tool": True,
|
||||||
|
"web_search_tool": True,
|
||||||
|
"sb_vision_tool": True,
|
||||||
|
"sb_image_edit_tool": True,
|
||||||
|
"sb_presentation_outline_tool": True,
|
||||||
|
"sb_presentation_tool": True,
|
||||||
|
"sb_presentation_tool_v2": True,
|
||||||
|
"sb_sheets_tool": True,
|
||||||
|
"sb_web_dev_tool": True,
|
||||||
|
"browser_tool": True,
|
||||||
|
"data_providers_tool": True,
|
||||||
|
"agent_config_tool": True,
|
||||||
|
"mcp_search_tool": True,
|
||||||
|
"credential_profile_tool": True,
|
||||||
|
"workflow_tool": True,
|
||||||
|
"trigger_tool": True
|
||||||
|
},
|
||||||
'workflows': [],
|
'workflows': [],
|
||||||
'triggers': [],
|
'triggers': [],
|
||||||
'avatar': agent_data.get('avatar'),
|
'avatar': agent_data.get('avatar'),
|
||||||
|
|
|
@ -62,30 +62,70 @@ class ToolManager:
|
||||||
self.project_id = project_id
|
self.project_id = project_id
|
||||||
self.thread_id = thread_id
|
self.thread_id = thread_id
|
||||||
|
|
||||||
def register_all_tools(self):
|
def register_all_tools(self, agent_id: Optional[str] = None, disabled_tools: Optional[List[str]] = None):
|
||||||
|
"""Register all available tools by default, with optional exclusions.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
agent_id: Optional agent ID for agent builder tools
|
||||||
|
disabled_tools: List of tool names to exclude from registration
|
||||||
|
"""
|
||||||
|
disabled_tools = disabled_tools or []
|
||||||
|
|
||||||
|
logger.info(f"Registering tools with disabled list: {disabled_tools}")
|
||||||
|
|
||||||
|
# Core tools - always enabled
|
||||||
|
self._register_core_tools()
|
||||||
|
|
||||||
|
# Sandbox tools
|
||||||
|
self._register_sandbox_tools(disabled_tools)
|
||||||
|
|
||||||
|
# Data and utility tools
|
||||||
|
self._register_utility_tools(disabled_tools)
|
||||||
|
|
||||||
|
# Agent builder tools - register if agent_id provided
|
||||||
|
if agent_id:
|
||||||
|
self._register_agent_builder_tools(agent_id, disabled_tools)
|
||||||
|
|
||||||
|
# Browser tool
|
||||||
|
self._register_browser_tool(disabled_tools)
|
||||||
|
|
||||||
|
logger.info(f"Tool registration complete. Registered tools: {list(self.thread_manager.tool_registry.tools.keys())}")
|
||||||
|
|
||||||
|
def _register_core_tools(self):
|
||||||
|
"""Register core tools that are always available."""
|
||||||
self.thread_manager.add_tool(ExpandMessageTool, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
self.thread_manager.add_tool(ExpandMessageTool, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
||||||
self.thread_manager.add_tool(MessageTool)
|
self.thread_manager.add_tool(MessageTool)
|
||||||
|
|
||||||
self.thread_manager.add_tool(SandboxShellTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxFilesTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxDeployTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxExposeTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxWebSearchTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxVisionTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxImageEditTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxPresentationOutlineTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxPresentationToolV2, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(TaskListTool, project_id=self.project_id, thread_manager=self.thread_manager, thread_id=self.thread_id)
|
self.thread_manager.add_tool(TaskListTool, project_id=self.project_id, thread_manager=self.thread_manager, thread_id=self.thread_id)
|
||||||
self.thread_manager.add_tool(SandboxSheetsTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
# self.thread_manager.add_tool(SandboxWebDevTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
def _register_sandbox_tools(self, disabled_tools: List[str]):
|
||||||
if config.RAPID_API_KEY:
|
"""Register sandbox-related tools."""
|
||||||
|
sandbox_tools = [
|
||||||
|
('sb_shell_tool', SandboxShellTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_files_tool', SandboxFilesTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_deploy_tool', SandboxDeployTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_expose_tool', SandboxExposeTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('web_search_tool', SandboxWebSearchTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_vision_tool', SandboxVisionTool, {'project_id': self.project_id, 'thread_id': self.thread_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_image_edit_tool', SandboxImageEditTool, {'project_id': self.project_id, 'thread_id': self.thread_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_presentation_outline_tool', SandboxPresentationOutlineTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_presentation_tool_v2', SandboxPresentationToolV2, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_sheets_tool', SandboxSheetsTool, {'project_id': self.project_id, 'thread_manager': self.thread_manager}),
|
||||||
|
('sb_web_dev_tool', SandboxWebDevTool, {'project_id': self.project_id, 'thread_id': self.thread_id, 'thread_manager': self.thread_manager}),
|
||||||
|
]
|
||||||
|
|
||||||
|
for tool_name, tool_class, kwargs in sandbox_tools:
|
||||||
|
if tool_name not in disabled_tools:
|
||||||
|
self.thread_manager.add_tool(tool_class, **kwargs)
|
||||||
|
logger.debug(f"Registered {tool_name}")
|
||||||
|
|
||||||
|
def _register_utility_tools(self, disabled_tools: List[str]):
|
||||||
|
"""Register utility and data provider tools."""
|
||||||
|
if config.RAPID_API_KEY and 'data_providers_tool' not in disabled_tools:
|
||||||
self.thread_manager.add_tool(DataProvidersTool)
|
self.thread_manager.add_tool(DataProvidersTool)
|
||||||
|
logger.debug("Registered data_providers_tool")
|
||||||
|
|
||||||
# Add Browser Tool
|
def _register_agent_builder_tools(self, agent_id: str, disabled_tools: List[str]):
|
||||||
from agent.tools.browser_tool import BrowserTool
|
"""Register agent builder tools."""
|
||||||
self.thread_manager.add_tool(BrowserTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
|
|
||||||
def register_agent_builder_tools(self, agent_id: str):
|
|
||||||
from agent.tools.agent_builder_tools.agent_config_tool import AgentConfigTool
|
from agent.tools.agent_builder_tools.agent_config_tool import AgentConfigTool
|
||||||
from agent.tools.agent_builder_tools.mcp_search_tool import MCPSearchTool
|
from agent.tools.agent_builder_tools.mcp_search_tool import MCPSearchTool
|
||||||
from agent.tools.agent_builder_tools.credential_profile_tool import CredentialProfileTool
|
from agent.tools.agent_builder_tools.credential_profile_tool import CredentialProfileTool
|
||||||
|
@ -94,56 +134,26 @@ class ToolManager:
|
||||||
from services.supabase import DBConnection
|
from services.supabase import DBConnection
|
||||||
|
|
||||||
db = DBConnection()
|
db = DBConnection()
|
||||||
self.thread_manager.add_tool(AgentConfigTool, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
|
||||||
self.thread_manager.add_tool(MCPSearchTool, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
|
||||||
self.thread_manager.add_tool(CredentialProfileTool, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
|
||||||
self.thread_manager.add_tool(WorkflowTool, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
|
||||||
self.thread_manager.add_tool(TriggerTool, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
|
||||||
|
|
||||||
def register_custom_tools(self, enabled_tools: Dict[str, Any]):
|
agent_builder_tools = [
|
||||||
self.thread_manager.add_tool(ExpandMessageTool, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
('agent_config_tool', AgentConfigTool),
|
||||||
self.thread_manager.add_tool(MessageTool)
|
('mcp_search_tool', MCPSearchTool),
|
||||||
self.thread_manager.add_tool(TaskListTool, project_id=self.project_id, thread_manager=self.thread_manager, thread_id=self.thread_id)
|
('credential_profile_tool', CredentialProfileTool),
|
||||||
|
('workflow_tool', WorkflowTool),
|
||||||
|
('trigger_tool', TriggerTool),
|
||||||
|
]
|
||||||
|
|
||||||
def safe_tool_check(tool_name: str) -> bool:
|
for tool_name, tool_class in agent_builder_tools:
|
||||||
try:
|
if tool_name not in disabled_tools:
|
||||||
if not isinstance(enabled_tools, dict):
|
self.thread_manager.add_tool(tool_class, thread_manager=self.thread_manager, db_connection=db, agent_id=agent_id)
|
||||||
return False
|
logger.debug(f"Registered {tool_name}")
|
||||||
tool_config = enabled_tools.get(tool_name, {})
|
|
||||||
if not isinstance(tool_config, dict):
|
|
||||||
return bool(tool_config) if isinstance(tool_config, bool) else False
|
|
||||||
return tool_config.get('enabled', False)
|
|
||||||
except Exception:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if safe_tool_check('sb_shell_tool'):
|
def _register_browser_tool(self, disabled_tools: List[str]):
|
||||||
self.thread_manager.add_tool(SandboxShellTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
"""Register browser tool."""
|
||||||
if safe_tool_check('sb_files_tool'):
|
if 'browser_tool' not in disabled_tools:
|
||||||
self.thread_manager.add_tool(SandboxFilesTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_deploy_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxDeployTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_expose_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxExposeTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('web_search_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxWebSearchTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_vision_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxVisionTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_presentation_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxPresentationOutlineTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
self.thread_manager.add_tool(SandboxPresentationToolV2, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_image_edit_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxImageEditTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_sheets_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxSheetsTool, project_id=self.project_id, thread_manager=self.thread_manager)
|
|
||||||
if safe_tool_check('sb_web_dev_tool'):
|
|
||||||
self.thread_manager.add_tool(SandboxWebDevTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
|
||||||
if config.RAPID_API_KEY and safe_tool_check('data_providers_tool'):
|
|
||||||
self.thread_manager.add_tool(DataProvidersTool)
|
|
||||||
|
|
||||||
|
|
||||||
if safe_tool_check('browser_tool'):
|
|
||||||
from agent.tools.browser_tool import BrowserTool
|
from agent.tools.browser_tool import BrowserTool
|
||||||
self.thread_manager.add_tool(BrowserTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
self.thread_manager.add_tool(BrowserTool, project_id=self.project_id, thread_id=self.thread_id, thread_manager=self.thread_manager)
|
||||||
|
logger.debug("Registered browser_tool")
|
||||||
|
|
||||||
|
|
||||||
class MCPManager:
|
class MCPManager:
|
||||||
|
@ -427,31 +437,70 @@ class AgentRunner:
|
||||||
async def setup_tools(self):
|
async def setup_tools(self):
|
||||||
tool_manager = ToolManager(self.thread_manager, self.config.project_id, self.config.thread_id)
|
tool_manager = ToolManager(self.thread_manager, self.config.project_id, self.config.thread_id)
|
||||||
|
|
||||||
|
# Determine agent ID for agent builder tools
|
||||||
|
agent_id = None
|
||||||
if self.config.agent_config and self.config.agent_config.get('is_suna_default', False):
|
if self.config.agent_config and self.config.agent_config.get('is_suna_default', False):
|
||||||
suna_agent_id = self.config.agent_config['agent_id']
|
agent_id = self.config.agent_config['agent_id']
|
||||||
tool_manager.register_agent_builder_tools(suna_agent_id)
|
elif self.config.is_agent_builder and self.config.target_agent_id:
|
||||||
|
agent_id = self.config.target_agent_id
|
||||||
|
|
||||||
if self.config.is_agent_builder:
|
# Convert agent config to disabled tools list
|
||||||
tool_manager.register_agent_builder_tools(self.config.target_agent_id)
|
disabled_tools = self._get_disabled_tools_from_config()
|
||||||
|
|
||||||
|
# Register all tools with exclusions
|
||||||
|
tool_manager.register_all_tools(agent_id=agent_id, disabled_tools=disabled_tools)
|
||||||
|
|
||||||
|
def _get_disabled_tools_from_config(self) -> List[str]:
|
||||||
|
"""Convert agent config to list of disabled tools."""
|
||||||
|
disabled_tools = []
|
||||||
|
|
||||||
|
if not self.config.agent_config or 'agentpress_tools' not in self.config.agent_config:
|
||||||
|
# No tool configuration - enable all tools by default
|
||||||
|
return disabled_tools
|
||||||
|
|
||||||
enabled_tools = None
|
|
||||||
if self.config.agent_config and 'agentpress_tools' in self.config.agent_config:
|
|
||||||
raw_tools = self.config.agent_config['agentpress_tools']
|
raw_tools = self.config.agent_config['agentpress_tools']
|
||||||
|
|
||||||
if isinstance(raw_tools, dict):
|
# Handle different formats of tool configuration
|
||||||
if self.config.agent_config.get('is_suna_default', False) and not raw_tools:
|
if not isinstance(raw_tools, dict):
|
||||||
enabled_tools = None
|
# If not a dict, assume all tools are enabled
|
||||||
else:
|
return disabled_tools
|
||||||
enabled_tools = raw_tools
|
|
||||||
else:
|
|
||||||
enabled_tools = None
|
|
||||||
|
|
||||||
if enabled_tools is None:
|
# Special case: Suna default agents with empty tool config enable all tools
|
||||||
tool_manager.register_all_tools()
|
if self.config.agent_config.get('is_suna_default', False) and not raw_tools:
|
||||||
|
return disabled_tools
|
||||||
|
|
||||||
|
def is_tool_enabled(tool_name: str) -> bool:
|
||||||
|
try:
|
||||||
|
tool_config = raw_tools.get(tool_name, True) # Default to True (enabled) if not specified
|
||||||
|
if isinstance(tool_config, bool):
|
||||||
|
return tool_config
|
||||||
|
elif isinstance(tool_config, dict):
|
||||||
|
return tool_config.get('enabled', True) # Default to True (enabled) if not specified
|
||||||
else:
|
else:
|
||||||
if not isinstance(enabled_tools, dict):
|
return True # Default to enabled
|
||||||
enabled_tools = {}
|
except Exception:
|
||||||
tool_manager.register_custom_tools(enabled_tools)
|
return True # Default to enabled
|
||||||
|
|
||||||
|
# List of all available tools
|
||||||
|
all_tools = [
|
||||||
|
'sb_shell_tool', 'sb_files_tool', 'sb_deploy_tool', 'sb_expose_tool',
|
||||||
|
'web_search_tool', 'sb_vision_tool', 'sb_presentation_tool', 'sb_image_edit_tool',
|
||||||
|
'sb_sheets_tool', 'sb_web_dev_tool', 'data_providers_tool', 'browser_tool',
|
||||||
|
'agent_config_tool', 'mcp_search_tool', 'credential_profile_tool',
|
||||||
|
'workflow_tool', 'trigger_tool'
|
||||||
|
]
|
||||||
|
|
||||||
|
# Add tools that are explicitly disabled
|
||||||
|
for tool_name in all_tools:
|
||||||
|
if not is_tool_enabled(tool_name):
|
||||||
|
disabled_tools.append(tool_name)
|
||||||
|
|
||||||
|
# Special handling for presentation tools
|
||||||
|
if 'sb_presentation_tool' in disabled_tools:
|
||||||
|
disabled_tools.extend(['sb_presentation_outline_tool', 'sb_presentation_tool_v2'])
|
||||||
|
|
||||||
|
logger.info(f"Disabled tools from config: {disabled_tools}")
|
||||||
|
return disabled_tools
|
||||||
|
|
||||||
async def setup_mcp_tools(self) -> Optional[MCPToolWrapper]:
|
async def setup_mcp_tools(self) -> Optional[MCPToolWrapper]:
|
||||||
if not self.config.agent_config:
|
if not self.config.agent_config:
|
||||||
|
|
|
@ -11,20 +11,32 @@ class SunaConfig:
|
||||||
SYSTEM_PROMPT = SYSTEM_PROMPT
|
SYSTEM_PROMPT = SYSTEM_PROMPT
|
||||||
|
|
||||||
DEFAULT_TOOLS = {
|
DEFAULT_TOOLS = {
|
||||||
|
# Core sandbox tools
|
||||||
"sb_shell_tool": True,
|
"sb_shell_tool": True,
|
||||||
"sb_files_tool": True,
|
"sb_files_tool": True,
|
||||||
"sb_web_dev_tool": True,
|
|
||||||
"browser_tool": True,
|
|
||||||
"sb_deploy_tool": True,
|
"sb_deploy_tool": True,
|
||||||
"sb_expose_tool": True,
|
"sb_expose_tool": True,
|
||||||
"web_search_tool": True,
|
"web_search_tool": True,
|
||||||
"sb_vision_tool": True,
|
"sb_vision_tool": True,
|
||||||
"sb_image_edit_tool": True,
|
"sb_image_edit_tool": True,
|
||||||
"data_providers_tool": True,
|
|
||||||
"sb_presentation_outline_tool": True,
|
"sb_presentation_outline_tool": True,
|
||||||
"sb_presentation_tool": True,
|
"sb_presentation_tool": True,
|
||||||
|
"sb_presentation_tool_v2": True,
|
||||||
"sb_sheets_tool": True,
|
"sb_sheets_tool": True,
|
||||||
"sb_slides_tool": True
|
"sb_web_dev_tool": True,
|
||||||
|
|
||||||
|
# Browser and interaction tools
|
||||||
|
"browser_tool": True,
|
||||||
|
|
||||||
|
# Data provider tools
|
||||||
|
"data_providers_tool": True,
|
||||||
|
|
||||||
|
# Agent builder tools (for configuration and management)
|
||||||
|
"agent_config_tool": True,
|
||||||
|
"mcp_search_tool": True,
|
||||||
|
"credential_profile_tool": True,
|
||||||
|
"workflow_tool": True,
|
||||||
|
"trigger_tool": True
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_MCPS = []
|
DEFAULT_MCPS = []
|
||||||
|
|
|
@ -127,8 +127,8 @@ As part of the setup, you'll need to:
|
||||||
1. Create a Daytona account
|
1. Create a Daytona account
|
||||||
2. Generate an API key
|
2. Generate an API key
|
||||||
3. Create a Snapshot:
|
3. Create a Snapshot:
|
||||||
- Name: `kortix/suna:0.1.3`
|
- Name: `kortix/suna:0.1.3.4`
|
||||||
- Image name: `kortix/suna:0.1.3`
|
- Image name: `kortix/suna:0.1.3.4`
|
||||||
- Entrypoint: `/usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf`
|
- Entrypoint: `/usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf`
|
||||||
|
|
||||||
## Manual Configuration
|
## Manual Configuration
|
||||||
|
|
|
@ -1,17 +1,30 @@
|
||||||
export const AGENTPRESS_TOOL_DEFINITIONS: Record<string, { enabled: boolean; description: string; icon: string; color: string }> = {
|
export const AGENTPRESS_TOOL_DEFINITIONS: Record<string, { enabled: boolean; description: string; icon: string; color: string }> = {
|
||||||
|
// Core sandbox tools
|
||||||
'sb_shell_tool': { enabled: true, description: 'Execute shell commands in tmux sessions for terminal operations, CLI tools, and system management', icon: '💻', color: 'bg-slate-100 dark:bg-slate-800' },
|
'sb_shell_tool': { enabled: true, description: 'Execute shell commands in tmux sessions for terminal operations, CLI tools, and system management', icon: '💻', color: 'bg-slate-100 dark:bg-slate-800' },
|
||||||
'sb_files_tool': { enabled: true, description: 'Create, read, update, and delete files in the workspace with comprehensive file management', icon: '📁', color: 'bg-blue-100 dark:bg-blue-800/50' },
|
'sb_files_tool': { enabled: true, description: 'Create, read, update, and delete files in the workspace with comprehensive file management', icon: '📁', color: 'bg-blue-100 dark:bg-blue-800/50' },
|
||||||
'sb_web_dev_tool': { enabled: true, description: 'Create Next.js projects with shadcn/ui pre-installed, manage dependencies, build and deploy modern web applications', icon: '⚛️', color: 'bg-cyan-100 dark:bg-cyan-800/50' },
|
|
||||||
'browser_tool': { enabled: true, description: 'Browser automation for web navigation, clicking, form filling, and page interaction', icon: '🌐', color: 'bg-indigo-100 dark:bg-indigo-800/50' },
|
|
||||||
'sb_deploy_tool': { enabled: true, description: 'Deploy applications and services with automated deployment capabilities', icon: '🚀', color: 'bg-green-100 dark:bg-green-800/50' },
|
'sb_deploy_tool': { enabled: true, description: 'Deploy applications and services with automated deployment capabilities', icon: '🚀', color: 'bg-green-100 dark:bg-green-800/50' },
|
||||||
'sb_expose_tool': { enabled: true, description: 'Expose services and manage ports for application accessibility', icon: '🔌', color: 'bg-orange-100 dark:bg-orange-800/20' },
|
'sb_expose_tool': { enabled: true, description: 'Expose services and manage ports for application accessibility', icon: '🔌', color: 'bg-orange-100 dark:bg-orange-800/20' },
|
||||||
'web_search_tool': { enabled: true, description: 'Search the web using Tavily API and scrape webpages with Firecrawl for research', icon: '🔍', color: 'bg-yellow-100 dark:bg-yellow-800/50' },
|
'web_search_tool': { enabled: true, description: 'Search the web using Tavily API and scrape webpages with Firecrawl for research', icon: '🔍', color: 'bg-yellow-100 dark:bg-yellow-800/50' },
|
||||||
'sb_vision_tool': { enabled: true, description: 'Vision and image processing capabilities for visual content analysis', icon: '👁️', color: 'bg-pink-100 dark:bg-pink-800/50' },
|
'sb_vision_tool': { enabled: true, description: 'Vision and image processing capabilities for visual content analysis', icon: '👁️', color: 'bg-pink-100 dark:bg-pink-800/50' },
|
||||||
'sb_image_edit_tool': { enabled: true, description: 'Generate new images or edit existing images using OpenAI GPT Image 1', icon: '🎨', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
'sb_image_edit_tool': { enabled: true, description: 'Generate new images or edit existing images using OpenAI GPT Image 1', icon: '🎨', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
||||||
'data_providers_tool': { enabled: true, description: 'Access to data providers and external APIs (requires RapidAPI key)', icon: '🔗', color: 'bg-cyan-100 dark:bg-cyan-800/50' },
|
|
||||||
'sb_presentation_outline_tool': { enabled: true, description: 'Create structured presentation outlines with slide descriptions and speaker notes', icon: '📋', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
'sb_presentation_outline_tool': { enabled: true, description: 'Create structured presentation outlines with slide descriptions and speaker notes', icon: '📋', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
||||||
'sb_presentation_tool': { enabled: true, description: 'Create professional presentations with HTML slides, preview, and export capabilities', icon: '📊', color: 'bg-violet-100 dark:bg-violet-800/50' },
|
'sb_presentation_tool': { enabled: true, description: 'Create professional presentations with HTML slides, preview, and export capabilities', icon: '📊', color: 'bg-violet-100 dark:bg-violet-800/50' },
|
||||||
|
'sb_presentation_tool_v2': { enabled: true, description: 'Enhanced presentation tool with advanced formatting and export options', icon: '📊', color: 'bg-violet-100 dark:bg-violet-800/50' },
|
||||||
'sb_sheets_tool': { enabled: true, description: 'Create, view, update, analyze, visualize, and format spreadsheets (XLSX/CSV) with Luckysheet viewer', icon: '📊', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
'sb_sheets_tool': { enabled: true, description: 'Create, view, update, analyze, visualize, and format spreadsheets (XLSX/CSV) with Luckysheet viewer', icon: '📊', color: 'bg-purple-100 dark:bg-purple-800/50' },
|
||||||
|
'sb_web_dev_tool': { enabled: true, description: 'Create Next.js projects with shadcn/ui pre-installed, manage dependencies, build and deploy modern web applications', icon: '⚛️', color: 'bg-cyan-100 dark:bg-cyan-800/50' },
|
||||||
|
|
||||||
|
// Browser and interaction tools
|
||||||
|
'browser_tool': { enabled: true, description: 'Browser automation for web navigation, clicking, form filling, and page interaction', icon: '🌐', color: 'bg-indigo-100 dark:bg-indigo-800/50' },
|
||||||
|
|
||||||
|
// Data provider tools
|
||||||
|
'data_providers_tool': { enabled: true, description: 'Access to data providers and external APIs', icon: '🔗', color: 'bg-cyan-100 dark:bg-cyan-800/50' },
|
||||||
|
|
||||||
|
// Agent builder tools
|
||||||
|
'agent_config_tool': { enabled: true, description: 'Configure agent settings, tools, and integrations', icon: '⚙️', color: 'bg-gray-100 dark:bg-gray-800/50' },
|
||||||
|
'mcp_search_tool': { enabled: true, description: 'Search and discover MCP servers and integrations for external services', icon: '🔍', color: 'bg-teal-100 dark:bg-teal-800/50' },
|
||||||
|
'credential_profile_tool': { enabled: true, description: 'Manage credential profiles for secure integration authentication', icon: '🔐', color: 'bg-red-100 dark:bg-red-800/50' },
|
||||||
|
'workflow_tool': { enabled: true, description: 'Create and manage automated workflows and task sequences', icon: '🔄', color: 'bg-emerald-100 dark:bg-emerald-800/50' },
|
||||||
|
'trigger_tool': { enabled: true, description: 'Set up event triggers and scheduled automation', icon: '⏰', color: 'bg-amber-100 dark:bg-amber-800/50' },
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DEFAULT_AGENTPRESS_TOOLS: Record<string, boolean> = Object.entries(AGENTPRESS_TOOL_DEFINITIONS).reduce((acc, [key, value]) => {
|
export const DEFAULT_AGENTPRESS_TOOLS: Record<string, boolean> = Object.entries(AGENTPRESS_TOOL_DEFINITIONS).reduce((acc, [key, value]) => {
|
||||||
|
@ -21,18 +34,32 @@ export const DEFAULT_AGENTPRESS_TOOLS: Record<string, boolean> = Object.entries(
|
||||||
|
|
||||||
export const getToolDisplayName = (toolName: string): string => {
|
export const getToolDisplayName = (toolName: string): string => {
|
||||||
const displayNames: Record<string, string> = {
|
const displayNames: Record<string, string> = {
|
||||||
|
// Core sandbox tools
|
||||||
'sb_shell_tool': 'Terminal',
|
'sb_shell_tool': 'Terminal',
|
||||||
'sb_files_tool': 'File Manager',
|
'sb_files_tool': 'File Manager',
|
||||||
'sb_web_dev_tool': 'Web Development',
|
|
||||||
'browser_tool': 'Browser Automation',
|
|
||||||
'sb_deploy_tool': 'Deploy Tool',
|
'sb_deploy_tool': 'Deploy Tool',
|
||||||
'sb_expose_tool': 'Port Exposure',
|
'sb_expose_tool': 'Port Exposure',
|
||||||
'web_search_tool': 'Web Search',
|
'web_search_tool': 'Web Search',
|
||||||
'sb_vision_tool': 'Image Processing',
|
'sb_vision_tool': 'Image Processing',
|
||||||
'data_providers_tool': 'Data Providers',
|
'sb_image_edit_tool': 'Image Editor',
|
||||||
'sb_presentation_outline_tool': 'Presentation Outline',
|
'sb_presentation_outline_tool': 'Presentation Outline',
|
||||||
'sb_presentation_tool': 'Presentation Creator',
|
'sb_presentation_tool': 'Presentation Creator',
|
||||||
'sb_sheets_tool': 'Sheets Tool',
|
'sb_presentation_tool_v2': 'Presentation Creator V2',
|
||||||
|
'sb_sheets_tool': 'Spreadsheets',
|
||||||
|
'sb_web_dev_tool': 'Web Development',
|
||||||
|
|
||||||
|
// Browser and interaction tools
|
||||||
|
'browser_tool': 'Browser Automation',
|
||||||
|
|
||||||
|
// Data provider tools
|
||||||
|
'data_providers_tool': 'Data Providers',
|
||||||
|
|
||||||
|
// Agent builder tools
|
||||||
|
'agent_config_tool': 'Agent Builder Configuration',
|
||||||
|
'mcp_search_tool': 'Agent Builder MCP Search',
|
||||||
|
'credential_profile_tool': 'Agent Builder Credential Profiles',
|
||||||
|
'workflow_tool': 'Agent Builder Workflows',
|
||||||
|
'trigger_tool': 'Agent Builder Triggers',
|
||||||
};
|
};
|
||||||
|
|
||||||
return displayNames[toolName] || toolName.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
|
return displayNames[toolName] || toolName.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
|
||||||
|
|
Loading…
Reference in New Issue