Skip to content

Commit 7a039b7

Browse files
authored
fix: [Intelligent Agent] Tool nodes and intelligent agent nodes in the canvas cannot be copied and pasted using Ctrl+C/V (#5076)
1 parent 63dc209 commit 7a039b7

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

ui/src/workflow/common/data.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { WorkflowKind } from './../../enums/application'
22
import { WorkflowType, WorkflowMode } from '@/enums/application'
33
import { t } from '@/locales'
4+
import call$ from 'dingtalk-jsapi/api/biz/telephone/call'
45

56
export const startNode = {
67
id: WorkflowType.Start,
@@ -1022,6 +1023,42 @@ export const getMenuNodes = (workflowMode: WorkflowMode) => {
10221023
return toolLoopMenuNodes
10231024
}
10241025
}
1026+
export const workflowModelDict: any = {
1027+
[WorkflowMode.Application]: (node: any) => {
1028+
return (
1029+
['application-node', 'tool-workflow-lib-node', 'tool-lib-node'].includes(node.type) &&
1030+
node?.properties?.node_data?.tool_type !== 'DATA_SOURCE'
1031+
)
1032+
},
1033+
[WorkflowMode.ApplicationLoop]: (node: any) => {
1034+
return (
1035+
['application-node', 'tool-workflow-lib-node', 'tool-lib-node'].includes(node.type) &&
1036+
node?.properties?.node_data?.tool_type !== 'DATA_SOURCE'
1037+
)
1038+
},
1039+
[WorkflowMode.Knowledge]: (node: any) => {
1040+
console.log(['tool-workflow-lib-node', 'tool-lib-node'].includes(node))
1041+
return ['tool-workflow-lib-node', 'tool-lib-node'].includes(node.type)
1042+
},
1043+
[WorkflowMode.KnowledgeLoop]: (node: any) => {
1044+
return (
1045+
['tool-workflow-lib-node', 'tool-lib-node'].includes(node.type) &&
1046+
node?.properties?.node_data?.tool_type !== 'DATA_SOURCE'
1047+
)
1048+
},
1049+
[WorkflowMode.Tool]: (node: any) => {
1050+
return (
1051+
['tool-workflow-lib-node', 'tool-lib-node'].includes(node.type) &&
1052+
node?.properties?.node_data?.tool_type !== 'DATA_SOURCE'
1053+
)
1054+
},
1055+
[WorkflowMode.ToolLoop]: (node: any) => {
1056+
return (
1057+
['tool-workflow-lib-node', 'tool-lib-node'].includes(node.type) &&
1058+
node?.properties?.node_data?.tool_type !== 'DATA_SOURCE'
1059+
)
1060+
},
1061+
}
10251062

10261063
/**
10271064
* 工具配置数据

ui/src/workflow/common/shortcut.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { type GraphModel } from '@logicflow/core'
44
import { MsgSuccess, MsgError, MsgConfirm } from '@/utils/message'
55
import { WorkflowType } from '@/enums/application'
66
import { t } from '@/locales'
7-
import { getMenuNodes } from './data'
7+
import { getMenuNodes, workflowModelDict } from './data'
88
let selected: any | null = null
99

1010
function translationNodeData(nodeData: any, distance: any) {
@@ -71,12 +71,16 @@ export function initDefaultShortcut(lf: LogicFlow, graph: GraphModel) {
7171
MsgSuccess(t('workflow.tip.copyError'))
7272
return false
7373
}
74+
7475
const paste_node = () => {
7576
if (!keyboardOptions?.enabled) return true
7677
if (graph.textEditElement) return true
77-
const menus = getMenuNodes(lf.graphModel.get_provide(null, null).workflowMode)
78+
const workflowMode = lf.graphModel.get_provide(null, null).workflowMode
79+
const menus = getMenuNodes(workflowMode)
7880
const nodes = menus?.flatMap((m: any) => m.list).map((n) => n.type)
79-
selected.nodes = selected.nodes.filter((n: any) => nodes?.includes(n.type))
81+
selected.nodes = selected.nodes.filter(
82+
(n: any) => nodes?.includes(n.type) || workflowModelDict[workflowMode](n),
83+
)
8084
if (selected && (selected.nodes || selected.edges)) {
8185
lf.clearSelectElements()
8286
const addElements = lf.addElements(selected, CHILDREN_TRANSLATION_DISTANCE)

0 commit comments

Comments
 (0)