import type { ChatItem, WorkflowProcess } from '../../types' import { RiArrowRightSLine, RiErrorWarningFill, RiLoader2Line, RiPauseCircleFill, } from '@remixicon/react' import { useEffect, useState, } from 'react' import { useTranslation } from 'react-i18next' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import TracingPanel from '@/app/components/workflow/run/tracing-panel' import { WorkflowRunningStatus } from '@/app/components/workflow/types' import { cn } from '@/utils/classnames' type WorkflowProcessProps = { data: WorkflowProcess item?: ChatItem expand?: boolean hideInfo?: boolean hideProcessDetail?: boolean readonly?: boolean } const WorkflowProcessItem = ({ data, expand = false, hideInfo = false, hideProcessDetail = false, readonly = false, }: WorkflowProcessProps) => { const { t } = useTranslation() const [collapse, setCollapse] = useState(!expand) const running = data.status === WorkflowRunningStatus.Running const succeeded = data.status === WorkflowRunningStatus.Succeeded const failed = data.status === WorkflowRunningStatus.Failed || data.status === WorkflowRunningStatus.Stopped const paused = data.status === WorkflowRunningStatus.Paused const latestNode = data.tracing[data.tracing.length - 1] useEffect(() => { setCollapse(!expand) }, [expand]) if (readonly) return null return (