mirror of https://github.com/kortix-ai/suna.git
agents use icons and bg color
This commit is contained in:
parent
967b68feb9
commit
ce98bb8a99
|
@ -116,8 +116,12 @@ class AgentUpdateRequest(BaseModel):
|
|||
# Deprecated, kept for backward-compat
|
||||
avatar: Optional[str] = None
|
||||
avatar_color: Optional[str] = None
|
||||
# New profile image url
|
||||
# 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
|
||||
|
||||
class AgentResponse(BaseModel):
|
||||
agent_id: str
|
||||
|
@ -133,6 +137,10 @@ class AgentResponse(BaseModel):
|
|||
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
|
||||
|
@ -1558,6 +1566,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'),
|
||||
created_at=agent['created_at'],
|
||||
updated_at=agent['updated_at'],
|
||||
current_version_id=agent.get('current_version_id'),
|
||||
|
@ -1683,6 +1694,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'),
|
||||
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'),
|
||||
|
@ -1923,11 +1937,12 @@ async def create_agent(
|
|||
"account_id": user_id,
|
||||
"name": agent_data.name,
|
||||
"description": agent_data.description,
|
||||
# Deprecated fields still populated if sent by older clients
|
||||
"avatar": agent_data.avatar,
|
||||
"avatar_color": agent_data.avatar_color,
|
||||
# New profile image url field
|
||||
"profile_image_url": agent_data.profile_image_url,
|
||||
"icon_name": agent_data.icon_name,
|
||||
"icon_color": agent_data.icon_color,
|
||||
"icon_background": agent_data.icon_background,
|
||||
"is_default": agent_data.is_default or False,
|
||||
"version_count": 1
|
||||
}
|
||||
|
@ -2005,6 +2020,9 @@ async def create_agent(
|
|||
avatar=agent.get('avatar'),
|
||||
avatar_color=agent.get('avatar_color'),
|
||||
profile_image_url=agent.get('profile_image_url'),
|
||||
icon_name=agent.get('icon_name'),
|
||||
icon_color=agent.get('icon_color'),
|
||||
icon_background=agent.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'),
|
||||
|
@ -2252,6 +2270,13 @@ async def update_agent(
|
|||
update_data["avatar_color"] = agent_data.avatar_color
|
||||
if agent_data.profile_image_url is not None:
|
||||
update_data["profile_image_url"] = agent_data.profile_image_url
|
||||
# Handle new icon system fields
|
||||
if agent_data.icon_name is not None:
|
||||
update_data["icon_name"] = agent_data.icon_name
|
||||
if agent_data.icon_color is not None:
|
||||
update_data["icon_color"] = agent_data.icon_color
|
||||
if agent_data.icon_background is not None:
|
||||
update_data["icon_background"] = agent_data.icon_background
|
||||
|
||||
current_system_prompt = agent_data.system_prompt if agent_data.system_prompt is not None else current_version_data.get('system_prompt', '')
|
||||
current_configured_mcps = agent_data.configured_mcps if agent_data.configured_mcps is not None else current_version_data.get('configured_mcps', [])
|
||||
|
@ -2380,6 +2405,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'),
|
||||
created_at=agent['created_at'],
|
||||
updated_at=agent.get('updated_at', agent['created_at']),
|
||||
current_version_id=agent.get('current_version_id'),
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
BEGIN;
|
||||
|
||||
ALTER TABLE agents
|
||||
ADD COLUMN IF NOT EXISTS icon_name VARCHAR(100),
|
||||
ADD COLUMN IF NOT EXISTS icon_color VARCHAR(7) DEFAULT '#000000',
|
||||
ADD COLUMN IF NOT EXISTS icon_background VARCHAR(7) DEFAULT '#F3F4F6';
|
||||
|
||||
ALTER TABLE agent_templates
|
||||
ADD COLUMN IF NOT EXISTS icon_name VARCHAR(100),
|
||||
ADD COLUMN IF NOT EXISTS icon_color VARCHAR(7) DEFAULT '#000000',
|
||||
ADD COLUMN IF NOT EXISTS icon_background VARCHAR(7) DEFAULT '#F3F4F6';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agents_icon_name ON agents(icon_name) WHERE icon_name IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_templates_icon_name ON agent_templates(icon_name) WHERE icon_name IS NOT NULL;
|
||||
|
||||
COMMENT ON COLUMN agents.icon_name IS 'Optional: Lucide React icon name for agent profile (used when profile_image_url is not set)';
|
||||
COMMENT ON COLUMN agents.icon_color IS 'Optional: Hex color for the icon (e.g., #000000)';
|
||||
COMMENT ON COLUMN agents.icon_background IS 'Optional: Hex background color for the icon container';
|
||||
|
||||
COMMENT ON COLUMN agent_templates.icon_name IS 'Optional: Lucide React icon name for template profile (used when profile_image_url is not set)';
|
||||
COMMENT ON COLUMN agent_templates.icon_color IS 'Optional: Hex color for the icon (e.g., #000000)';
|
||||
COMMENT ON COLUMN agent_templates.icon_background IS 'Optional: Hex background color for the icon container';
|
||||
|
||||
COMMIT;
|
|
@ -63,6 +63,9 @@ class TemplateResponse(BaseModel):
|
|||
avatar: Optional[str]
|
||||
avatar_color: Optional[str]
|
||||
profile_image_url: Optional[str] = None
|
||||
icon_name: Optional[str] = None
|
||||
icon_color: Optional[str] = None
|
||||
icon_background: Optional[str] = None
|
||||
metadata: Dict[str, Any]
|
||||
creator_name: Optional[str] = None
|
||||
|
||||
|
|
|
@ -359,6 +359,9 @@ class InstallationService:
|
|||
'avatar': template.avatar,
|
||||
'avatar_color': template.avatar_color,
|
||||
'profile_image_url': template.profile_image_url,
|
||||
'icon_name': template.icon_name,
|
||||
'icon_color': template.icon_color,
|
||||
'icon_background': template.icon_background,
|
||||
'metadata': {
|
||||
**template.metadata,
|
||||
'created_from_template': template.template_id,
|
||||
|
|
|
@ -49,6 +49,9 @@ class AgentTemplate:
|
|||
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
|
||||
metadata: ConfigType = field(default_factory=dict)
|
||||
creator_name: Optional[str] = None
|
||||
|
||||
|
@ -223,6 +226,9 @@ class TemplateService:
|
|||
avatar=agent.get('avatar'),
|
||||
avatar_color=agent.get('avatar_color'),
|
||||
profile_image_url=agent.get('profile_image_url'),
|
||||
icon_name=agent.get('icon_name'),
|
||||
icon_color=agent.get('icon_color'),
|
||||
icon_background=agent.get('icon_background'),
|
||||
metadata=agent.get('metadata', {})
|
||||
)
|
||||
|
||||
|
@ -629,6 +635,9 @@ class TemplateService:
|
|||
'avatar': template.avatar,
|
||||
'avatar_color': template.avatar_color,
|
||||
'profile_image_url': template.profile_image_url,
|
||||
'icon_name': template.icon_name,
|
||||
'icon_color': template.icon_color,
|
||||
'icon_background': template.icon_background,
|
||||
'metadata': template.metadata
|
||||
}
|
||||
|
||||
|
@ -653,6 +662,9 @@ class TemplateService:
|
|||
avatar=data.get('avatar'),
|
||||
avatar_color=data.get('avatar_color'),
|
||||
profile_image_url=data.get('profile_image_url'),
|
||||
icon_name=data.get('icon_name'),
|
||||
icon_color=data.get('icon_color'),
|
||||
icon_background=data.get('icon_background'),
|
||||
metadata=data.get('metadata', {}),
|
||||
creator_name=creator_name
|
||||
)
|
||||
|
|
|
@ -136,6 +136,9 @@ def format_template_for_response(template: AgentTemplate) -> Dict[str, Any]:
|
|||
'avatar': template.avatar,
|
||||
'avatar_color': template.avatar_color,
|
||||
'profile_image_url': template.profile_image_url,
|
||||
'icon_name': template.icon_name,
|
||||
'icon_color': template.icon_color,
|
||||
'icon_background': template.icon_background,
|
||||
'metadata': template.metadata,
|
||||
'creator_name': template.creator_name
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue