diff --git a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
index 263d72057..5657bf981 100644
--- a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
+++ b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
@@ -34,6 +34,7 @@ import {
RefreshCcw,
Bot,
Workflow,
+ Group,
} from 'lucide-react';
import { useTheme } from '@/components/providers/theme-provider';
@@ -509,6 +510,7 @@ function NavItems({
const isSkill = categoryId === 'skills';
const isBot = categoryId === 'bots';
const isMCP = categoryId === 'mcp';
+ const isAgents = categoryId === 'pipelines';
const resolveItemRoute = (item: SidebarEntityItem): string => {
if (item.extensionType === 'mcp') {
@@ -591,6 +593,18 @@ function NavItems({
!inPopover &&
sidebarData.extensionsGroupByType;
+ const showAgentGroupHeaders =
+ isAgents && !inPopover && sidebarData.agentsGroupByKind;
+
+ const agentGroupOrder: Array<'agent' | 'pipeline'> = [
+ 'agent',
+ 'pipeline',
+ ];
+ const agentGroupLabelKey: Record<'agent' | 'pipeline', string> = {
+ agent: 'agents.kindBadgeAgent',
+ pipeline: 'agents.kindBadgePipeline',
+ };
+
const groupOrder: Array<'plugin' | 'mcp' | 'skill'> = [
'plugin',
'mcp',
@@ -792,7 +806,25 @@ function NavItems({
);
})
- : visibleItems.map((item) => renderItem(item))}
+ : showAgentGroupHeaders
+ ? agentGroupOrder.map((kind) => {
+ const groupItems = visibleItems.filter(
+ (it) => (it.kind ?? 'agent') === kind,
+ );
+ if (groupItems.length === 0) return null;
+ return (
+
+
+ {t(agentGroupLabelKey[kind])}
+
+ {groupItems.map((item) => renderItem(item))}
+
+ );
+ })
+ : visibleItems.map((item) => renderItem(item))}
{/* Show more / less toggle when items exceed limit */}
{sortedItems.length > maxItems && !inPopover && (
@@ -1030,6 +1062,26 @@ function NavItems({
{config.name}
+ {isAgents && (
+
+ )}
{isExtensionsCategory && (