| | |
| | | </template> |
| | | |
| | | <template #node-agent="agentNodeProps"> |
| | | <AgentNode v-bind="agentNodeProps" :agentNames="agentNames"/> |
| | | <AgentNode v-bind="agentNodeProps" :agentNames="agentNames" /> |
| | | </template> |
| | | <Controls /> |
| | | <Background /> |
| | |
| | | import AgentNode from './ui/nodes/AgentNode.vue'; |
| | | |
| | | import CustomEdge from './ui/edges/CustomEdge.vue'; |
| | | import { onMounted } from 'vue'; |
| | | |
| | | const props = defineProps(['flowJson','agentNames']); |
| | | |
| | | const props = defineProps(['flowJson', 'agentNames']); |
| | | |
| | | const nodeTypes = { |
| | | start: markRaw(StartNode), |
| | |
| | | condition: markRaw(ConditionNode), |
| | | LLM: markRaw(LLMNode), |
| | | // output:markRaw(OutputNode), |
| | | agent: markRaw(AgentNode), |
| | | // agent: markRaw(AgentNode), |
| | | [NodeType.Output]: markRaw(OutputNode), |
| | | // LLM: markRaw(LLMNode), |
| | | // code: markRaw(CodeNode), |
| | |
| | | // api: markRaw(ApiNode), |
| | | }; |
| | | const elements = ref<Elements>(); |
| | | const { findNode, nodes, addNodes, addEdges, project, vueFlowRef, onConnect, setNodes, setEdges, setViewport, fromObject } = |
| | | useVueFlow( |
| | | Object.keys(props.flowJson).length > 0 |
| | | ? props.flowJson |
| | | : { |
| | | nodes: [ |
| | | { |
| | | id: '1', |
| | | type: 'start', |
| | | data: VueFlowHelper.getDefaultData(NodeType.Start), |
| | | const { findNode, nodes, addNodes, addEdges, project, vueFlowRef, onConnect, setNodes, setEdges, setViewport, fitView } = useVueFlow( |
| | | Object.keys(props.flowJson).length > 0 |
| | | ? props.flowJson |
| | | : { |
| | | nodes: [ |
| | | { |
| | | id: '1', |
| | | type: 'start', |
| | | data: VueFlowHelper.getDefaultData(NodeType.Start), |
| | | |
| | | position: { x: 25, y: 400 }, |
| | | }, |
| | | { |
| | | id: '2', |
| | | type: 'end', |
| | | data: VueFlowHelper.getDefaultData(NodeType.End), |
| | | position: { x: 1000, y: 400 }, |
| | | }, |
| | | ], |
| | | edges: [ |
| | | // { |
| | | // id: 'test', |
| | | // source: '1', |
| | | // target: '2', |
| | | // }, |
| | | ], |
| | | } |
| | | ); |
| | | position: { x: 25, y: 400 }, |
| | | }, |
| | | ], |
| | | edges: [], |
| | | } |
| | | ); |
| | | |
| | | onConnect((params) => { |
| | | addEdges(params); |
| | | addEdges({ |
| | | id: VueFlowHelper.genGeometryId(), |
| | | |
| | | source: params.source, |
| | | target: params.target, |
| | | sourceHandle: params.sourceHandle, |
| | | targetHandle: params.targetHandle, |
| | | type: 'custom', |
| | | markerEnd: { |
| | | type: MarkerType.ArrowClosed, |
| | | width: 40, |
| | | height: 70, |
| | | }, |
| | | }); |
| | | |
| | | // addEdges()); |
| | | }); |
| | | |
| | | onMounted(() => { |
| | | setTimeout(() => { |
| | | fitView(); |
| | | }, 30); |
| | | }); |
| | | |
| | | function handleOnDrop(event: DragEvent) { |
| | |
| | | |
| | | #main-canvas { |
| | | --vf-handle: #2563eb; |
| | | |
| | | --handle-size: 13px; |
| | | .vue-flow__handle { |
| | | width: 18px; |
| | | height: 18px; |
| | | width: var(--handle-size); |
| | | height: var(--handle-size); |
| | | } |
| | | } |
| | | </style> |
| | | |
| | | <style lang="scss" scoped></style> |