/** * WorkflowList - OpenFang Workflow Management UI * * Displays available OpenFang Workflows and allows executing them. * * Design based on OpenFang Dashboard v0.4.0 */ import { useState, useEffect, useCallback } from 'react'; import { useWorkflowStore, type Workflow } from '../store/workflowStore'; import { WorkflowEditor } from './WorkflowEditor'; import { WorkflowHistory } from './WorkflowHistory'; import { Play, Edit, Trash2, History, Plus, List, GitBranch, RefreshCw, Loader2, X, } from 'lucide-react'; import { safeJsonParse } from '../lib/json-utils'; // === View Toggle Types === type ViewMode = 'list' | 'visual'; // === Workflow Execute Modal === interface ExecuteModalProps { workflow: Workflow; isOpen: boolean; onClose: () => void; onExecute: (id: string, input?: Record) => Promise; isExecuting: boolean; } function ExecuteModal({ workflow, isOpen, onClose, onExecute, isExecuting }: ExecuteModalProps) { const [input, setInput] = useState(''); const handleExecute = async () => { let parsedInput: Record | undefined; if (input.trim()) { const result = safeJsonParse>(input); if (!result.success) { alert('Input format error, please use valid JSON format.'); return; } parsedInput = result.data; } await onExecute(workflow.id, parsedInput); setInput(''); onClose(); }; if (!isOpen) return null; return (
{/* Backdrop */}
{/* Modal */}
{/* Header */}

运行工作流

{workflow.name}

{/* Body */}
输入参数 (JSON 格式,可选):