"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { CheckCircle, AlertCircle, Play, Loader2 } from "lucide-react"; import Editor from "@monaco-editor/react"; import { workflowApi } from "@/lib/api/workflows"; import { ValidationResult } from "@/types/workflow"; interface DSLEditorProps { initialValue?: string; onChange?: (value: string) => void; } export function DSLEditor({ initialValue = "", onChange }: DSLEditorProps) { const [dsl, setDsl] = useState(initialValue); const [validationResult, setValidationResult] = useState(null); const [isValidating, setIsValidating] = useState(false); const handleEditorChange = (value: string | undefined) => { const newValue = value || ""; setDsl(newValue); onChange?.(newValue); setValidationResult(null); // Clear validation on change }; const validateDSL = async () => { setIsValidating(true); try { const result = await workflowApi.validateDSL(dsl); setValidationResult(result); } catch (error) { console.error(error); setValidationResult({ valid: false, errors: ["Validation failed due to an error"] }); } finally { setIsValidating(false); } }; const testWorkflow = async () => { alert("Test workflow functionality to be implemented"); }; return (

Workflow DSL

{validationResult && ( {validationResult.valid ? ( ) : ( )} {validationResult.valid ? ( "DSL is valid ✓" ) : (

Validation Errors:

    {validationResult.errors?.map((error: string, i: number) => (
  • {error}
  • ))}
)}
)}
); }