"use client"; import { Bug, Loader2, Save } from "lucide-react"; import { DebugDrawer } from "@/components/assistant-editor/debug-preview"; import { DynamicVariablesPanel } from "@/components/assistant-editor/dynamic-variables"; import { AssistantIdentity, EditableTitle, EditorBackButton, } from "@/components/assistant-editor/editor-controls"; import { Button } from "@/components/ui/button"; import { WorkflowEditor } from "@/components/workflow/WorkflowEditor"; import type { WorkflowSettings } from "@/components/workflow/types"; import { workflowUsesVision, type WorkflowGraph, } from "@/components/workflow/specs"; import type { DynamicVariableDefinition } from "@/lib/api"; type ResourceOption = { value: string; label: string }; type WorkflowPageProps = { assistantId: string | null; workflowName: string; workflowGraph: WorkflowGraph; workflowSettings: WorkflowSettings; dynamicVariableDefinitions: Record; workflowDebugOpen: boolean; workflowSettingsOpen: boolean; workflowEditingNodeId: string | null; workflowEditingEdgeId: string | null; activeNodeId: string | null; dynamicVariablesOpen: boolean; saving: boolean; dirty: boolean; saveError: string | null; modelOptions: { realtime: ResourceOption[]; llm: ResourceOption[]; asr: ResourceOption[]; tts: ResourceOption[]; vision: ResourceOption[]; }; toolOptions: ResourceOption[]; knowledgeOptions: ResourceOption[]; onBack: () => void; onSave: () => void; setWorkflowName: (name: string) => void; setWorkflowGraph: (graph: WorkflowGraph) => void; setWorkflowSettings: (settings: WorkflowSettings) => void; setWorkflowDynamicVariableDefinitions: ( definitions: Record, ) => void; setWorkflowDebugOpen: (open: boolean) => void; setWorkflowSettingsOpen: (open: boolean) => void; setWorkflowEditingNodeId: (nodeId: string | null) => void; setWorkflowEditingEdgeId: (edgeId: string | null) => void; setActiveNodeId: (nodeId: string | null) => void; setDynamicVariablesOpen: (open: boolean) => void; }; export function WorkflowPage({ assistantId, workflowName, workflowGraph, workflowSettings, dynamicVariableDefinitions, workflowDebugOpen, workflowSettingsOpen, workflowEditingNodeId, workflowEditingEdgeId, activeNodeId, dynamicVariablesOpen, saving, dirty, saveError, modelOptions, toolOptions, knowledgeOptions: kbOptions, onBack, onSave, setWorkflowName, setWorkflowGraph, setWorkflowSettings, setWorkflowDynamicVariableDefinitions, setWorkflowDebugOpen, setWorkflowSettingsOpen, setWorkflowEditingNodeId, setWorkflowEditingEdgeId, setActiveNodeId, setDynamicVariablesOpen, }: WorkflowPageProps) { return (
{saveError && ( {saveError} )}
} editingNodeId={workflowEditingNodeId} onEditingNodeIdChange={setWorkflowEditingNodeId} editingEdgeId={workflowEditingEdgeId} onEditingEdgeIdChange={setWorkflowEditingEdgeId} settingsOpen={workflowSettingsOpen} onSettingsOpenChange={setWorkflowSettingsOpen} debugOpen={workflowDebugOpen} onDebugOpenChange={(open) => { setWorkflowDebugOpen(open); if (!open) setActiveNodeId(null); }} debugPanel={ { setWorkflowDebugOpen(false); setActiveNodeId(null); }} hasUnsavedChanges={dirty} onNodeActive={setActiveNodeId} dynamicVariablesEnabled dynamicVariableDefinitions={ dynamicVariableDefinitions } /> } activeNodeId={activeNodeId} modelOptions={modelOptions} toolOptions={toolOptions} knowledgeOptions={kbOptions} dynamicVariableOptions={Object.entries( dynamicVariableDefinitions, ).map(([value, definition]) => ({ value, label: `${value} · ${definition.type}`, }))} />
); }