| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- import type { NodeWithVar, VarInInspect } from '@/types/workflow'
 - import { useStore, useWorkflowStore } from '@/app/components/workflow/store'
 - import { useStoreApi } from 'reactflow'
 - import type { ToolWithProvider } from '@/app/components/workflow/types'
 - import type { Node } from '@/app/components/workflow/types'
 - import { fetchAllInspectVars } from '@/service/workflow'
 - import { useInvalidateConversationVarValues, useInvalidateSysVarValues } from '@/service/use-workflow'
 - import { useNodesInteractionsWithoutSync } from '@/app/components/workflow/hooks/use-nodes-interactions-without-sync'
 - import type { FlowType } from '@/types/common'
 - import useMatchSchemaType, { getMatchedSchemaType } from '../nodes/_base/components/variable/use-match-schema-type'
 - import { toNodeOutputVars } from '../nodes/_base/components/variable/utils'
 - import type { SchemaTypeDefinition } from '@/service/use-common'
 - import { useCallback } from 'react'
 - 
 - type Params = {
 -   flowType: FlowType
 -   flowId: string
 - }
 - 
 - export const useSetWorkflowVarsWithValue = ({
 -   flowType,
 -   flowId,
 - }: Params) => {
 -   const workflowStore = useWorkflowStore()
 -   const store = useStoreApi()
 -   const invalidateConversationVarValues = useInvalidateConversationVarValues(flowType, flowId)
 -   const invalidateSysVarValues = useInvalidateSysVarValues(flowType, flowId)
 -   const { handleCancelAllNodeSuccessStatus } = useNodesInteractionsWithoutSync()
 -   const { schemaTypeDefinitions } = useMatchSchemaType()
 -   const buildInTools = useStore(s => s.buildInTools)
 -   const customTools = useStore(s => s.customTools)
 -   const workflowTools = useStore(s => s.workflowTools)
 -   const mcpTools = useStore(s => s.mcpTools)
 -   const dataSourceList = useStore(s => s.dataSourceList)
 -   const allPluginInfoList = {
 -     buildInTools,
 -     customTools,
 -     workflowTools,
 -     mcpTools,
 -     dataSourceList: dataSourceList ?? [],
 -   }
 - 
 -   const setInspectVarsToStore = (inspectVars: VarInInspect[], passedInAllPluginInfoList?: Record<string, ToolWithProvider[]>, passedInSchemaTypeDefinitions?: SchemaTypeDefinition[]) => {
 -     const { setNodesWithInspectVars } = workflowStore.getState()
 -     const { getNodes } = store.getState()
 - 
 -     const nodeArr = getNodes()
 -     const allNodesOutputVars = toNodeOutputVars(nodeArr, false, () => true, [], [], [], passedInAllPluginInfoList || allPluginInfoList, passedInSchemaTypeDefinitions || schemaTypeDefinitions)
 - 
 -     const nodesKeyValue: Record<string, Node> = {}
 -     nodeArr.forEach((node) => {
 -       nodesKeyValue[node.id] = node
 -     })
 - 
 -     const withValueNodeIds: Record<string, boolean> = {}
 -     inspectVars.forEach((varItem) => {
 -       const nodeId = varItem.selector[0]
 - 
 -       const node = nodesKeyValue[nodeId]
 -       if (!node)
 -         return
 -       withValueNodeIds[nodeId] = true
 -     })
 -     const withValueNodes = Object.keys(withValueNodeIds).map((nodeId) => {
 -       return nodesKeyValue[nodeId]
 -     })
 - 
 -     const res: NodeWithVar[] = withValueNodes.map((node) => {
 -       const nodeId = node.id
 -       const varsUnderTheNode = inspectVars.filter((varItem) => {
 -         return varItem.selector[0] === nodeId
 -       })
 -       const nodeVar = allNodesOutputVars.find(item => item.nodeId === nodeId)
 - 
 -       const nodeWithVar = {
 -         nodeId,
 -         nodePayload: node.data,
 -         nodeType: node.data.type,
 -         title: node.data.title,
 -         vars: varsUnderTheNode.map((item) => {
 -           const schemaType = nodeVar ? nodeVar.vars.find(v => v.variable === item.name)?.schemaType : ''
 -           return {
 -             ...item,
 -             schemaType,
 -           }
 -         }),
 -         isSingRunRunning: false,
 -         isValueFetched: false,
 -       }
 -       return nodeWithVar
 -     })
 -     setNodesWithInspectVars(res)
 -   }
 - 
 -   const fetchInspectVars = useCallback(async (params: {
 -       passInVars?: boolean,
 -       vars?: VarInInspect[],
 -       passedInAllPluginInfoList?: Record<string, ToolWithProvider[]>,
 -       passedInSchemaTypeDefinitions?: SchemaTypeDefinition[]
 -     }) => {
 -     const { passInVars, vars, passedInAllPluginInfoList, passedInSchemaTypeDefinitions } = params
 -     invalidateConversationVarValues()
 -     invalidateSysVarValues()
 -     const data = passInVars ? vars! : await fetchAllInspectVars(flowType, flowId)
 -     setInspectVarsToStore(data, passedInAllPluginInfoList, passedInSchemaTypeDefinitions)
 -     handleCancelAllNodeSuccessStatus() // to make sure clear node output show the unset status
 -   }, [invalidateConversationVarValues, invalidateSysVarValues, flowType, flowId, setInspectVarsToStore, handleCancelAllNodeSuccessStatus, schemaTypeDefinitions, getMatchedSchemaType])
 -   return {
 -     fetchInspectVars,
 -   }
 - }
 
 
  |