import { useAtom, useAtomRefresh, useAtomSet, useAtomValue } from "@effect/atom-react"; import { Workflow, Plus, Square, RefreshCw, ChevronDown, ChevronRight, Loader2, Info, } from "lucide-react"; import { cn } from "@/lib/utils"; import { activeActionAtom, encodeJsonUnknownString, flowBlueprintAtom, flowBlueprintsAtom, flowExpandedAtom, flowsAtom, flowsStartDialogOpenAtom, parseJsonUnknown, resultData, resultError, resultLoading, startFlowAtom, startFlowFormAtom, stopFlowAtom, } from "@/atoms/workbench"; import { Dialog } from "@/components/ui/dialog"; import { Badge } from "@/components/ui/badge"; function StartFlowDialog() { const [open, setOpen] = useAtom(flowsStartDialogOpenAtom); const [form, setForm] = useAtom(startFlowFormAtom); const startFlow = useAtomSet(startFlowAtom); const blueprintsResult = useAtomValue(flowBlueprintsAtom); const blueprints = resultData(blueprintsResult, []); const blueprintDetail = resultData(useAtomValue(flowBlueprintAtom(form.blueprint)), null) as Record | null; const loadingBlueprints = resultLoading(blueprintsResult, blueprints); const isValid = form.id.trim().length > 0 && form.blueprint.length > 0 && form.description.trim().length > 0; const close = () => { setForm({ id: "", blueprint: "", description: "", paramsJson: "{}", submitting: false, paramsError: null, submitted: false, definitionExpanded: false, }); setOpen(false); }; return ( } >
{blueprintDetail !== null && (
{form.definitionExpanded && (
                {encodeJsonUnknownString(blueprintDetail)}
              
)}
)}