'use client' import type { AgentAppPublishedReferenceResponse } from '@dify/contracts/api/console/agent/types.gen' import { zAgentIconType } from '@dify/contracts/api/console/agent/zod.gen' import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuLinkItem, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { useTranslation } from 'react-i18next' import AppIcon from '@/app/components/base/app-icon' import Link from '@/next/link' const getWorkflowReferenceHref = (reference: AgentAppPublishedReferenceResponse) => `/app/${reference.app_id}/workflow` const getWorkflowReferenceIcon = (reference: AgentAppPublishedReferenceResponse) => { const parsedIconType = zAgentIconType.safeParse(reference.app_icon_type).data return { iconType: parsedIconType === 'link' ? 'image' : parsedIconType, imageUrl: parsedIconType === 'image' || parsedIconType === 'link' ? reference.app_icon : undefined, } } export function AgentWorkflowReferencesDropdown({ agentName, publishedReferences, referenceCount, }: { agentName: string publishedReferences: AgentAppPublishedReferenceResponse[] referenceCount: number }) { const { t } = useTranslation('agentV2') return ( {t(($) => $['roster.references.trigger'], { name: agentName })}:{' '} {referenceCount} {t(($) => $['roster.references.label'], { name: agentName })} {publishedReferences.map((reference) => { const { iconType, imageUrl } = getWorkflowReferenceIcon(reference) return ( } className="group mx-0 h-8 gap-2 px-2 py-1 pr-2.5 system-md-regular text-text-secondary" > {reference.app_name} ) })} ) }