diff --git a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
index bd5308da3..21c6e1377 100644
--- a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
+++ b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx
@@ -32,6 +32,8 @@ import {
Server,
Puzzle,
RefreshCcw,
+ Bot,
+ Workflow,
} from 'lucide-react';
import { useTheme } from '@/components/providers/theme-provider';
@@ -723,6 +725,18 @@ function NavItems({
/>
) : null}
{item.name}
+ {item.kind && (
+
+ {item.kind === 'pipeline' ? (
+
+ ) : (
+
+ )}
+ {item.kind === 'pipeline'
+ ? t('agents.kindBadgePipeline')
+ : t('agents.kindBadgeAgent')}
+
+ )}
{item.debug && (
)}
diff --git a/web/src/app/home/components/home-sidebar/SidebarDataContext.tsx b/web/src/app/home/components/home-sidebar/SidebarDataContext.tsx
index b59f420ee..4d1121cc1 100644
--- a/web/src/app/home/components/home-sidebar/SidebarDataContext.tsx
+++ b/web/src/app/home/components/home-sidebar/SidebarDataContext.tsx
@@ -28,6 +28,8 @@ export interface SidebarEntityItem {
debug?: boolean;
// Set when this item appears in the unified extensions list
extensionType?: 'plugin' | 'mcp' | 'skill';
+ // Agent-specific: distinguishes Agent orchestration from legacy Pipeline
+ kind?: 'agent' | 'pipeline';
}
// Plugin page registered by a plugin
@@ -123,6 +125,7 @@ export function SidebarDataProvider({
description: p.description,
emoji: p.emoji,
updatedAt: p.updated_at,
+ kind: p.kind,
})),
);
} catch (error) {
diff --git a/web/src/i18n/locales/en-US.ts b/web/src/i18n/locales/en-US.ts
index fdbe0a225..106cbb0ff 100644
--- a/web/src/i18n/locales/en-US.ts
+++ b/web/src/i18n/locales/en-US.ts
@@ -517,6 +517,8 @@ const enUS = {
agentOrchestrationDescription:
'Event-first handling logic for messages, group members, friends, feedback, and other EBA events.',
pipelineType: 'Pipeline',
+ kindBadgeAgent: 'Agent',
+ kindBadgePipeline: 'Pipeline',
pipelineTypeDescription:
'Keep the existing no-code message pipeline for backward compatibility. It only handles message events.',
allEvents: 'Supports all EBA events',
diff --git a/web/src/i18n/locales/ja-JP.ts b/web/src/i18n/locales/ja-JP.ts
index ec0ecaa15..8777aea5f 100644
--- a/web/src/i18n/locales/ja-JP.ts
+++ b/web/src/i18n/locales/ja-JP.ts
@@ -501,6 +501,8 @@ const jaJP = {
agentOrchestrationDescription:
'メッセージ、グループメンバー、友だち、フィードバックなどの EBA イベント向けの処理ロジックです。',
pipelineType: 'Pipeline',
+ kindBadgeAgent: 'Agent',
+ kindBadgePipeline: 'パイプライン',
pipelineTypeDescription:
'既存のノーコードメッセージ Pipeline を互換性のため保持します。メッセージイベントのみ処理できます。',
allEvents: 'すべての EBA イベントに対応',
diff --git a/web/src/i18n/locales/zh-Hans.ts b/web/src/i18n/locales/zh-Hans.ts
index 7c9c303b3..c98eb977b 100644
--- a/web/src/i18n/locales/zh-Hans.ts
+++ b/web/src/i18n/locales/zh-Hans.ts
@@ -497,6 +497,8 @@ const zhHans = {
agentOrchestrationDescription:
'面向 EBA 事件的处理逻辑,可用于消息、群成员、好友、反馈等事件。',
pipelineType: 'Pipeline',
+ kindBadgeAgent: 'Agent',
+ kindBadgePipeline: '流水线',
pipelineTypeDescription:
'保留现有无代码消息流水线,兼容旧配置,只能处理消息事件。',
allEvents: '支持全部 EBA 事件',