MCPcopy Create free account
hub / github.com/FlowiseAI/Flowise / updateEdges

Function updateEdges

packages/components/src/agentflowv2Generator.ts:168–230  ·  view source on GitHub ↗
(edges: Edge[], nodes: Node[])

Source from the content-addressed store, hash-verified

166}
167
168const updateEdges = (edges: Edge[], nodes: Node[]): Edge[] => {
169 const isMultiOutput = (source: string) => {
170 return source.includes('conditionAgentflow') || source.includes('conditionAgentAgentflow') || source.includes('humanInputAgentflow')
171 }
172 const findNodeColor = (nodeId: string) => {
173 const node = nodes.find((node) => node.id === nodeId)
174 return node?.data?.color
175 }
176
177 // filter out edges that do not exist in nodes
178 edges = edges.filter((edge) => {
179 return nodes.some((node) => node.id === edge.source || node.id === edge.target)
180 })
181
182 // filter out the edge that has hideInput/hideOutput on the source/target node
183 const indexToDelete = []
184 for (let i = 0; i < edges.length; i += 1) {
185 const edge = edges[i]
186 const sourceNode = nodes.find((node) => node.id === edge.source)
187 if (sourceNode?.data?.hideOutput) {
188 indexToDelete.push(i)
189 }
190
191 const targetNode = nodes.find((node) => node.id === edge.target)
192 if (targetNode?.data?.hideInput) {
193 indexToDelete.push(i)
194 }
195 }
196
197 // delete the edges at the index in indexToDelete
198 for (let i = indexToDelete.length - 1; i >= 0; i -= 1) {
199 edges.splice(indexToDelete[i], 1)
200 }
201
202 const updatedEdges = edges.map((edge) => {
203 return {
204 ...edge,
205 data: {
206 ...edge.data,
207 sourceColor: findNodeColor(edge.source),
208 targetColor: findNodeColor(edge.target),
209 edgeLabel: isMultiOutput(edge.source) && edge.label && edge.label.trim() !== '' ? edge.label.trim() : undefined,
210 isHumanInput: edge.source.includes('humanInputAgentflow') ? true : false
211 },
212 type: 'agentFlow',
213 id: `${edge.source}-${edge.sourceHandle}-${edge.target}-${edge.targetHandle}`
214 }
215 }) as Edge[]
216
217 if (updatedEdges.length > 0) {
218 updatedEdges.forEach((edge) => {
219 if (isMultiOutput(edge.source)) {
220 if (edge.sourceHandle.includes('true')) {
221 edge.sourceHandle = edge.sourceHandle.replace('true', '0')
222 } else if (edge.sourceHandle.includes('false')) {
223 edge.sourceHandle = edge.sourceHandle.replace('false', '1')
224 }
225 }

Callers 1

generateAgentflowv2Function · 0.85

Calls 2

findNodeColorFunction · 0.85
isMultiOutputFunction · 0.85

Tested by

no test coverage detected