feat: add agent icons with picker and collapsible sidebar section
- Add `icon` text column to agents DB schema with migration - Add icon field to shared Agent type and validators - Create AgentIconPicker component with 40+ curated lucide icons and search - Show clickable icon next to agent name on detail page header - Replace static Agents nav item with collapsible AGENTS section in sidebar - Each agent shows its icon (defaulting to Bot) with truncated name Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1
packages/db/src/migrations/0016_agent_icon.sql
Normal file
1
packages/db/src/migrations/0016_agent_icon.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE "agents" ADD COLUMN "icon" text;
|
||||
@@ -113,6 +113,13 @@
|
||||
"when": 1771865100000,
|
||||
"tag": "0015_project_color_archived",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"version": "7",
|
||||
"when": 1771955900000,
|
||||
"tag": "0016_agent_icon",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -18,6 +18,7 @@ export const agents = pgTable(
|
||||
name: text("name").notNull(),
|
||||
role: text("role").notNull().default("general"),
|
||||
title: text("title"),
|
||||
icon: text("icon"),
|
||||
status: text("status").notNull().default("idle"),
|
||||
reportsTo: uuid("reports_to").references((): AnyPgColumn => agents.id),
|
||||
capabilities: text("capabilities"),
|
||||
|
||||
@@ -14,6 +14,7 @@ export interface Agent {
|
||||
name: string;
|
||||
role: AgentRole;
|
||||
title: string | null;
|
||||
icon: string | null;
|
||||
status: AgentStatus;
|
||||
reportsTo: string | null;
|
||||
capabilities: string | null;
|
||||
|
||||
@@ -27,6 +27,7 @@ export const createAgentSchema = z.object({
|
||||
name: z.string().min(1),
|
||||
role: z.enum(AGENT_ROLES).optional().default("general"),
|
||||
title: z.string().optional().nullable(),
|
||||
icon: z.string().optional().nullable(),
|
||||
reportsTo: z.string().uuid().optional().nullable(),
|
||||
capabilities: z.string().optional().nullable(),
|
||||
adapterType: z.enum(AGENT_ADAPTER_TYPES).optional().default("process"),
|
||||
|
||||
Reference in New Issue
Block a user