|
@@ -31,9 +31,10 @@
|
|
|
<Toolbar
|
|
<Toolbar
|
|
|
@create:node="handleNodeCreate"
|
|
@create:node="handleNodeCreate"
|
|
|
@run="handleRunAgent"
|
|
@run="handleRunAgent"
|
|
|
- @chat="handleOpenWorkflowChat"
|
|
|
|
|
|
|
+ @chat="handleWorkflowChatSelectStartNode"
|
|
|
:env-vars="workflow?.env_variables || []"
|
|
:env-vars="workflow?.env_variables || []"
|
|
|
:run-nodes="toolbarRunNodes"
|
|
:run-nodes="toolbarRunNodes"
|
|
|
|
|
+ :chat-nodes="workflowChatStartNodes"
|
|
|
:can-chat="canRunWorkflowChat"
|
|
:can-chat="canRunWorkflowChat"
|
|
|
@change-env-vars="handleChangeEnvVars"
|
|
@change-env-vars="handleChangeEnvVars"
|
|
|
/>
|
|
/>
|
|
@@ -210,6 +211,7 @@ const runWorkflowInputOnly = ref(false)
|
|
|
const runWorkflowNodeId = ref('')
|
|
const runWorkflowNodeId = ref('')
|
|
|
const runWorkflowInitialTab = ref<'input' | 'trigger' | 'result' | 'detail' | 'trace'>('input')
|
|
const runWorkflowInitialTab = ref<'input' | 'trigger' | 'result' | 'detail' | 'trace'>('input')
|
|
|
const workflowChatVisible = ref(false)
|
|
const workflowChatVisible = ref(false)
|
|
|
|
|
+const workflowChatSelectedStartNodeId = ref('')
|
|
|
const workflowChatInputValues = ref<Record<string, any>>({})
|
|
const workflowChatInputValues = ref<Record<string, any>>({})
|
|
|
const workflowChatJsonDrafts = ref<Record<string, string>>({})
|
|
const workflowChatJsonDrafts = ref<Record<string, string>>({})
|
|
|
const workflowChatValidationErrors = ref<Record<string, string>>({})
|
|
const workflowChatValidationErrors = ref<Record<string, string>>({})
|
|
@@ -443,12 +445,17 @@ const getStartVariables = (node?: IWorkflowNode | null): StartVariable[] => {
|
|
|
return Array.isArray(variables) ? variables : []
|
|
return Array.isArray(variables) ? variables : []
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const workflowChatStartNodes = computed<IWorkflowNode[]>(() =>
|
|
|
|
|
+ (props.workflow?.nodes || []).filter((node) => {
|
|
|
|
|
+ const nodeType = (node as any)?.nodeType || (node as any)?.data?.nodeType
|
|
|
|
|
+ return nodeType === 'start'
|
|
|
|
|
+ })
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
const workflowChatStartNode = computed<IWorkflowNode | null>(() => {
|
|
const workflowChatStartNode = computed<IWorkflowNode | null>(() => {
|
|
|
return (
|
|
return (
|
|
|
- (props.workflow?.nodes || []).find((node) => {
|
|
|
|
|
- const nodeType = (node as any)?.nodeType || (node as any)?.data?.nodeType
|
|
|
|
|
- return nodeType === 'start'
|
|
|
|
|
- }) || null
|
|
|
|
|
|
|
+ workflowChatStartNodes.value.find((node) => node.id === workflowChatSelectedStartNodeId.value) ||
|
|
|
|
|
+ null
|
|
|
)
|
|
)
|
|
|
})
|
|
})
|
|
|
|
|
|
|
@@ -460,7 +467,7 @@ const workflowChatVisibleVariables = computed(() =>
|
|
|
workflowChatStartVariables.value.filter((item) => !item.is_hide)
|
|
workflowChatStartVariables.value.filter((item) => !item.is_hide)
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-const canRunWorkflowChat = computed(() => !!workflowChatStartNode.value)
|
|
|
|
|
|
|
+const canRunWorkflowChat = computed(() => workflowChatStartNodes.value.length > 0)
|
|
|
|
|
|
|
|
const workflowChatRunning = computed(
|
|
const workflowChatRunning = computed(
|
|
|
() => runnerStore.status === 'connecting' || runnerStore.status === 'running'
|
|
() => runnerStore.status === 'connecting' || runnerStore.status === 'running'
|
|
@@ -756,12 +763,8 @@ const buildWorkflowChatParams = () => {
|
|
|
return params
|
|
return params
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const handleOpenWorkflowChat = () => {
|
|
|
|
|
- if (!workflowChatStartNode.value) {
|
|
|
|
|
- ElMessage.warning(t('pages.nodeView.messages.missingTrigger'))
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+const handleWorkflowChatSelectStartNode = (id: string) => {
|
|
|
|
|
+ workflowChatSelectedStartNodeId.value = id
|
|
|
initializeWorkflowChatInputValues()
|
|
initializeWorkflowChatInputValues()
|
|
|
resetWorkflowChatValidation()
|
|
resetWorkflowChatValidation()
|
|
|
workflowChatBaseParams.value = {}
|
|
workflowChatBaseParams.value = {}
|
|
@@ -841,6 +844,16 @@ watch(
|
|
|
{ flush: 'post' }
|
|
{ flush: 'post' }
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+watch(
|
|
|
|
|
+ () => workflowChatStartNodes.value.map((node) => node.id),
|
|
|
|
|
+ (ids) => {
|
|
|
|
|
+ if (!ids.includes(workflowChatSelectedStartNodeId.value)) {
|
|
|
|
|
+ workflowChatSelectedStartNodeId.value = ''
|
|
|
|
|
+ workflowChatVisible.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 创建新节点
|
|
* 创建新节点
|
|
|
*/
|
|
*/
|