mirror of https://github.com/kortix-ai/suna.git
Merge pull request #1441 from escapade-mckv/agent-icons
fix agent creation error
This commit is contained in:
commit
dad49f8a50
|
@ -71,16 +71,17 @@ class MessageCreateRequest(BaseModel):
|
|||
class AgentCreateRequest(BaseModel):
|
||||
name: str
|
||||
description: Optional[str] = None
|
||||
system_prompt: Optional[str] = None # Make optional to allow defaulting to Suna's system prompt
|
||||
system_prompt: Optional[str] = None
|
||||
configured_mcps: Optional[List[Dict[str, Any]]] = []
|
||||
custom_mcps: Optional[List[Dict[str, Any]]] = []
|
||||
agentpress_tools: Optional[Dict[str, Any]] = {}
|
||||
is_default: Optional[bool] = False
|
||||
# Deprecated, kept for backward-compat
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
# New profile image url (can be external or Supabase storage URL)
|
||||
profile_image_url: Optional[str] = None
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
|
||||
class AgentVersionResponse(BaseModel):
|
||||
version_id: str
|
||||
|
@ -88,7 +89,7 @@ class AgentVersionResponse(BaseModel):
|
|||
version_number: int
|
||||
version_name: str
|
||||
system_prompt: str
|
||||
model: Optional[str] = None # Add model field
|
||||
model: Optional[str] = None
|
||||
configured_mcps: List[Dict[str, Any]]
|
||||
custom_mcps: List[Dict[str, Any]]
|
||||
agentpress_tools: Dict[str, Any]
|
||||
|
@ -102,8 +103,8 @@ class AgentVersionCreateRequest(BaseModel):
|
|||
configured_mcps: Optional[List[Dict[str, Any]]] = []
|
||||
custom_mcps: Optional[List[Dict[str, Any]]] = []
|
||||
agentpress_tools: Optional[Dict[str, Any]] = {}
|
||||
version_name: Optional[str] = None # Custom version name
|
||||
description: Optional[str] = None # Version description
|
||||
version_name: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
|
||||
class AgentUpdateRequest(BaseModel):
|
||||
name: Optional[str] = None
|
||||
|
@ -113,12 +114,9 @@ class AgentUpdateRequest(BaseModel):
|
|||
custom_mcps: Optional[List[Dict[str, Any]]] = None
|
||||
agentpress_tools: Optional[Dict[str, Any]] = None
|
||||
is_default: Optional[bool] = None
|
||||
# Deprecated, kept for backward-compat
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
# New profile image url (backward compatibility)
|
||||
profile_image_url: Optional[str] = None
|
||||
# New icon system fields
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
|
@ -132,19 +130,15 @@ class AgentResponse(BaseModel):
|
|||
custom_mcps: List[Dict[str, Any]]
|
||||
agentpress_tools: Dict[str, Any]
|
||||
is_default: bool
|
||||
# Deprecated
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
# New
|
||||
profile_image_url: Optional[str] = None
|
||||
# Icon system fields
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
created_at: str
|
||||
updated_at: Optional[str] = None
|
||||
is_public: Optional[bool] = False
|
||||
|
||||
tags: Optional[List[str]] = []
|
||||
current_version_id: Optional[str] = None
|
||||
version_count: Optional[int] = 1
|
||||
|
@ -163,7 +157,7 @@ class AgentsResponse(BaseModel):
|
|||
|
||||
class ThreadAgentResponse(BaseModel):
|
||||
agent: Optional[AgentResponse]
|
||||
source: str # "thread", "default", "none", "missing"
|
||||
source: str
|
||||
message: str
|
||||
|
||||
class AgentExportData(BaseModel):
|
||||
|
@ -1566,9 +1560,9 @@ async def get_agents(
|
|||
avatar=agent_config.get('avatar'),
|
||||
avatar_color=agent_config.get('avatar_color'),
|
||||
profile_image_url=agent_config.get('profile_image_url'),
|
||||
icon_name=agent.get('icon_name'),
|
||||
icon_color=agent.get('icon_color'),
|
||||
icon_background=agent.get('icon_background'),
|
||||
icon_name=agent_config.get('icon_name'),
|
||||
icon_color=agent_config.get('icon_color'),
|
||||
icon_background=agent_config.get('icon_background'),
|
||||
created_at=agent['created_at'],
|
||||
updated_at=agent['updated_at'],
|
||||
current_version_id=agent.get('current_version_id'),
|
||||
|
@ -1694,9 +1688,9 @@ async def get_agent(agent_id: str, user_id: str = Depends(get_current_user_id_fr
|
|||
avatar=agent_config.get('avatar'),
|
||||
avatar_color=agent_config.get('avatar_color'),
|
||||
profile_image_url=agent_config.get('profile_image_url'),
|
||||
icon_name=agent_data.get('icon_name'),
|
||||
icon_color=agent_data.get('icon_color'),
|
||||
icon_background=agent_data.get('icon_background'),
|
||||
icon_name=agent_config.get('icon_name'),
|
||||
icon_color=agent_config.get('icon_color'),
|
||||
icon_background=agent_config.get('icon_background'),
|
||||
created_at=agent_data['created_at'],
|
||||
updated_at=agent_data.get('updated_at', agent_data['created_at']),
|
||||
current_version_id=agent_data.get('current_version_id'),
|
||||
|
@ -2405,9 +2399,9 @@ async def update_agent(
|
|||
avatar=agent_config.get('avatar'),
|
||||
avatar_color=agent_config.get('avatar_color'),
|
||||
profile_image_url=agent_config.get('profile_image_url'),
|
||||
icon_name=agent.get('icon_name'),
|
||||
icon_color=agent.get('icon_color'),
|
||||
icon_background=agent.get('icon_background'),
|
||||
icon_name=agent_config.get('icon_name'),
|
||||
icon_color=agent_config.get('icon_color'),
|
||||
icon_background=agent_config.get('icon_background'),
|
||||
created_at=agent['created_at'],
|
||||
updated_at=agent.get('updated_at', agent['created_at']),
|
||||
current_version_id=agent.get('current_version_id'),
|
||||
|
|
|
@ -49,9 +49,7 @@ def _extract_suna_agent_config(agent_data: Dict[str, Any], version_data: Optiona
|
|||
}
|
||||
}
|
||||
|
||||
# Add user customizations from version or agent data
|
||||
if version_data:
|
||||
# Get customizations from version data
|
||||
if version_data.get('config'):
|
||||
version_config = version_data['config']
|
||||
tools = version_config.get('tools', {})
|
||||
|
@ -60,13 +58,11 @@ def _extract_suna_agent_config(agent_data: Dict[str, Any], version_data: Optiona
|
|||
config['workflows'] = version_config.get('workflows', [])
|
||||
config['triggers'] = version_config.get('triggers', [])
|
||||
else:
|
||||
# Legacy version format
|
||||
config['configured_mcps'] = version_data.get('configured_mcps', [])
|
||||
config['custom_mcps'] = version_data.get('custom_mcps', [])
|
||||
config['workflows'] = []
|
||||
config['triggers'] = []
|
||||
else:
|
||||
# Fallback to agent data or empty
|
||||
config['configured_mcps'] = agent_data.get('configured_mcps', [])
|
||||
config['custom_mcps'] = agent_data.get('custom_mcps', [])
|
||||
config['workflows'] = []
|
||||
|
@ -76,13 +72,11 @@ def _extract_suna_agent_config(agent_data: Dict[str, Any], version_data: Optiona
|
|||
|
||||
|
||||
def _extract_custom_agent_config(agent_data: Dict[str, Any], version_data: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
|
||||
"""Extract config for custom agents using versioning system."""
|
||||
agent_id = agent_data.get('agent_id', 'Unknown')
|
||||
|
||||
if version_data:
|
||||
logger.debug(f"Using version data for custom agent {agent_id} (version: {version_data.get('version_name', 'unknown')})")
|
||||
|
||||
# Extract from version data
|
||||
if version_data.get('config'):
|
||||
config = version_data['config'].copy()
|
||||
system_prompt = config.get('system_prompt', '')
|
||||
|
@ -94,7 +88,6 @@ def _extract_custom_agent_config(agent_data: Dict[str, Any], version_data: Optio
|
|||
workflows = config.get('workflows', [])
|
||||
triggers = config.get('triggers', [])
|
||||
else:
|
||||
# Legacy version format
|
||||
system_prompt = version_data.get('system_prompt', '')
|
||||
model = version_data.get('model')
|
||||
configured_mcps = version_data.get('configured_mcps', [])
|
||||
|
@ -117,6 +110,9 @@ def _extract_custom_agent_config(agent_data: Dict[str, Any], version_data: Optio
|
|||
'avatar': agent_data.get('avatar'),
|
||||
'avatar_color': agent_data.get('avatar_color'),
|
||||
'profile_image_url': agent_data.get('profile_image_url'),
|
||||
'icon_name': agent_data.get('icon_name'),
|
||||
'icon_color': agent_data.get('icon_color'),
|
||||
'icon_background': agent_data.get('icon_background'),
|
||||
'is_default': agent_data.get('is_default', False),
|
||||
'is_suna_default': False,
|
||||
'centrally_managed': False,
|
||||
|
@ -126,7 +122,6 @@ def _extract_custom_agent_config(agent_data: Dict[str, Any], version_data: Optio
|
|||
'restrictions': {}
|
||||
}
|
||||
|
||||
# Fallback: create default config for custom agents without version data
|
||||
logger.warning(f"No version data found for custom agent {agent_id}, creating default configuration")
|
||||
|
||||
return {
|
||||
|
@ -143,6 +138,9 @@ def _extract_custom_agent_config(agent_data: Dict[str, Any], version_data: Optio
|
|||
'avatar': agent_data.get('avatar'),
|
||||
'avatar_color': agent_data.get('avatar_color'),
|
||||
'profile_image_url': agent_data.get('profile_image_url'),
|
||||
'icon_name': agent_data.get('icon_name'),
|
||||
'icon_color': agent_data.get('icon_color'),
|
||||
'icon_background': agent_data.get('icon_background'),
|
||||
'is_default': agent_data.get('is_default', False),
|
||||
'is_suna_default': False,
|
||||
'centrally_managed': False,
|
||||
|
|
|
@ -293,7 +293,6 @@ function AgentConfigurationContent() {
|
|||
|
||||
setFormData(prev => ({ ...prev, profile_image_url: profileImageUrl || '' }));
|
||||
setOriginalData(prev => ({ ...prev, profile_image_url: profileImageUrl || '' }));
|
||||
toast.success('Profile picture updated');
|
||||
} catch (error) {
|
||||
toast.error('Failed to update profile picture');
|
||||
throw error;
|
||||
|
|
|
@ -10,7 +10,6 @@ import {
|
|||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuTrigger,
|
||||
DropdownMenuSeparator,
|
||||
} from '@/components/ui/dropdown-menu';
|
||||
import {
|
||||
AlertDialog,
|
||||
|
@ -22,7 +21,6 @@ import {
|
|||
AlertDialogHeader,
|
||||
AlertDialogTitle,
|
||||
} from '@/components/ui/alert-dialog';
|
||||
import type { MarketplaceTemplate } from '@/components/agents/installation/types';
|
||||
import { KortixLogo } from '@/components/sidebar/kortix-logo';
|
||||
|
||||
export type AgentCardMode = 'marketplace' | 'template' | 'agent';
|
||||
|
|
|
@ -35,6 +35,10 @@ class AgentCreateRequest:
|
|||
is_default: bool = False
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
profile_image_url: Optional[str] = None
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
|
@ -47,6 +51,10 @@ class AgentUpdateRequest:
|
|||
is_default: Optional[bool] = None
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
profile_image_url: Optional[str] = None
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
Loading…
Reference in New Issue