xyflow change to flowgraam

This commit is contained in:
mlogclub
2026-06-27 21:27:57 +08:00
parent 228ad1902f
commit 689acc997c
32 changed files with 3154 additions and 5004 deletions
@@ -70,6 +70,7 @@ import {
IMConversationServiceMode,
Status,
} from "@/lib/generated/enums"
import { useWorkflowDefinitionHistory } from "../../ai-workflows/_components/use-workflow-definition-history"
import { WorkflowEditor } from "../../ai-workflows/_components/workflow-editor"
type DirectToolItem = CreateAIAgentPayload["directTools"][number]
@@ -88,25 +89,22 @@ type SectionKey =
| "workflow"
const fallbackDefinition: AIWorkflowDefinition = {
schemaVersion: 1,
entryNodeId: "start_1",
schemaVersion: 2,
nodes: [
{
id: "start_1",
type: "start",
name: "开始",
position: { x: 0, y: 80 },
config: {},
meta: { position: { x: 0, y: 80 } },
data: { title: "开始", config: {}, inputsValues: {} },
},
{
id: "end_1",
type: "end",
name: "结束",
position: { x: 260, y: 80 },
config: {},
meta: { position: { x: 260, y: 80 } },
data: { title: "结束", config: {}, inputsValues: {} },
},
],
edges: [{ id: "edge_start_end", source: "start_1", target: "end_1" }],
edges: [{ sourceNodeID: "start_1", targetNodeID: "end_1", sourcePortID: "edge_start_end" }],
}
function toText(value: string | number | undefined | null) {
@@ -156,8 +154,16 @@ export function AIAgentConfigWorkbench({
const [selectedSkillIds, setSelectedSkillIds] = useState<number[]>([])
const [directTools, setDirectTools] = useState<DirectToolItem[]>([])
const [definition, setDefinition] = useState<AIWorkflowDefinition>(fallbackDefinition)
const [workflowEditorKey, setWorkflowEditorKey] = useState(0)
const {
definition,
revision: workflowRevision,
canUndo: canUndoWorkflow,
canRedo: canRedoWorkflow,
replace: replaceWorkflowHistory,
update: updateWorkflowDefinition,
undo: undoWorkflowDefinition,
redo: redoWorkflowDefinition,
} = useWorkflowDefinitionHistory(fallbackDefinition)
const [aiConfigs, setAIConfigs] = useState<AIConfig[]>([])
const [knowledgeBases, setKnowledgeBases] = useState<KnowledgeBase[]>([])
@@ -175,9 +181,8 @@ export function AIAgentConfigWorkbench({
}, [agentId])
const replaceWorkflowDefinition = useCallback((nextDefinition: AIWorkflowDefinition) => {
setDefinition(nextDefinition)
setWorkflowEditorKey((current) => current + 1)
}, [])
replaceWorkflowHistory(nextDefinition)
}, [replaceWorkflowHistory])
const loadData = useCallback(async () => {
setLoading(true)
@@ -811,10 +816,14 @@ export function AIAgentConfigWorkbench({
{activeSection === "workflow" ? (
<WorkflowEditor
key={workflowEditorKey}
key={workflowRevision}
definition={definition}
nodeSpecs={nodeSpecs}
onDefinitionChange={setDefinition}
onDefinitionChange={updateWorkflowDefinition}
onUndo={undoWorkflowDefinition}
undoDisabled={!canUndoWorkflow || savingWorkflow || loading}
onRedo={redoWorkflowDefinition}
redoDisabled={!canRedoWorkflow || savingWorkflow || loading}
onRestoreDefault={restoreDefaultWorkflow}
restoreDefaultDisabled={savingWorkflow || loading}
onValidate={validateWorkflowDraft}