"use client"; import { useState } from "react"; import type { WorkflowSettings } from "@/components/workflow/types"; import { defaultGraph, type WorkflowGraph } from "@/components/workflow/specs"; import type { DynamicVariableDefinition } from "@/lib/api"; import { defaultTurnConfig } from "@/lib/turn-config"; function initialWorkflowSettings(): WorkflowSettings { const graph = defaultGraph(); return { globalPrompt: graph.settings.globalPrompt, llm: graph.settings.defaultLlmResourceId, asr: graph.settings.defaultAsrResourceId, tts: graph.settings.defaultTtsResourceId, toolIds: graph.settings.toolIds, knowledgeBaseId: graph.settings.knowledgeBaseId, knowledgeRetrievalConfig: { mode: graph.settings.knowledgeMode, topN: graph.settings.knowledgeTopN, scoreThreshold: graph.settings.knowledgeScoreThreshold, }, allowInterrupt: true, turnConfig: defaultTurnConfig(), }; } /** Owns Workflow editor state; AssistantPage only coordinates loading and saving. */ export function useWorkflowEditorState() { const [workflowName, setWorkflowName] = useState(""); const [workflowGraph, setWorkflowGraph] = useState(() => defaultGraph(), ); const [workflowSettings, setWorkflowSettings] = useState( initialWorkflowSettings, ); const [workflowDynamicVariableDefinitions, setWorkflowDynamicVariableDefinitions] = useState>({}); const [workflowDebugOpen, setWorkflowDebugOpen] = useState(false); const [workflowSettingsOpen, setWorkflowSettingsOpen] = useState(false); const [workflowEditingNodeId, setWorkflowEditingNodeId] = useState( null, ); const [workflowEditingEdgeId, setWorkflowEditingEdgeId] = useState( null, ); const [activeNodeId, setActiveNodeId] = useState(null); const [dynamicVariablesOpen, setDynamicVariablesOpen] = useState(false); return { workflowName, setWorkflowName, workflowGraph, setWorkflowGraph, workflowSettings, setWorkflowSettings, workflowDynamicVariableDefinitions, setWorkflowDynamicVariableDefinitions, workflowDebugOpen, setWorkflowDebugOpen, workflowSettingsOpen, setWorkflowSettingsOpen, workflowEditingNodeId, setWorkflowEditingNodeId, workflowEditingEdgeId, setWorkflowEditingEdgeId, activeNodeId, setActiveNodeId, dynamicVariablesOpen, setDynamicVariablesOpen, }; }