import { useCallback } from 'react' import produce from 'immer' import type { AgentLogResponse } from '@/types/workflow' import { useWorkflowStore } from '@/app/components/workflow/store' export const useWorkflowAgentLog = () => { const workflowStore = useWorkflowStore() const handleWorkflowAgentLog = useCallback((params: AgentLogResponse) => { const { data } = params const { workflowRunningData, setWorkflowRunningData, } = workflowStore.getState() setWorkflowRunningData(produce(workflowRunningData!, (draft) => { const currentIndex = draft.tracing!.findIndex(item => item.node_id === data.node_id) if (currentIndex > -1) { const current = draft.tracing![currentIndex] if (current.execution_metadata) { if (current.execution_metadata.agent_log) { const currentLogIndex = current.execution_metadata.agent_log.findIndex(log => log.id === data.id) if (currentLogIndex > -1) { current.execution_metadata.agent_log[currentLogIndex] = { ...current.execution_metadata.agent_log[currentLogIndex], ...data, } } else { current.execution_metadata.agent_log.push(data) } } else { current.execution_metadata.agent_log = [data] } } else { current.execution_metadata = { agent_log: [data], } as any } } })) }, [workflowStore]) return { handleWorkflowAgentLog, } }