|  | @@ -105,32 +105,29 @@ const useOneStepRun = <T>({
 | 
	
		
			
				|  |  |    const availableNodesIncludeParent = getBeforeNodesInSameBranchIncludeParent(id)
 | 
	
		
			
				|  |  |    const allOutputVars = toNodeOutputVars(availableNodes, isChatMode, undefined, undefined, conversationVariables)
 | 
	
		
			
				|  |  |    const getVar = (valueSelector: ValueSelector): Var | undefined => {
 | 
	
		
			
				|  |  | -    let res: Var | undefined
 | 
	
		
			
				|  |  |      const isSystem = valueSelector[0] === 'sys'
 | 
	
		
			
				|  |  | -    const targetVar = isSystem ? allOutputVars.find(item => !!item.isStartNode) : allOutputVars.find(v => v.nodeId === valueSelector[0])
 | 
	
		
			
				|  |  | +    const targetVar = allOutputVars.find(item => isSystem ? !!item.isStartNode : item.nodeId === valueSelector[0])
 | 
	
		
			
				|  |  |      if (!targetVar)
 | 
	
		
			
				|  |  |        return undefined
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      if (isSystem)
 | 
	
		
			
				|  |  |        return targetVar.vars.find(item => item.variable.split('.')[1] === valueSelector[1])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      let curr: any = targetVar.vars
 | 
	
		
			
				|  |  | -    if (!curr)
 | 
	
		
			
				|  |  | -      return
 | 
	
		
			
				|  |  | +    for (let i = 1; i < valueSelector.length; i++) {
 | 
	
		
			
				|  |  | +      const key = valueSelector[i]
 | 
	
		
			
				|  |  | +      const isLast = i === valueSelector.length - 1
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    valueSelector.slice(1).forEach((key, i) => {
 | 
	
		
			
				|  |  | -      const isLast = i === valueSelector.length - 2
 | 
	
		
			
				|  |  | -      // conversation variable is start with 'conversation.'
 | 
	
		
			
				|  |  | -      curr = curr?.find((v: any) => v.variable.replace('conversation.', '') === key)
 | 
	
		
			
				|  |  | -      if (isLast) {
 | 
	
		
			
				|  |  | -        res = curr
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      else {
 | 
	
		
			
				|  |  | -        if (curr?.type === VarType.object || curr?.type === VarType.file)
 | 
	
		
			
				|  |  | -          curr = curr.children
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | +      if (Array.isArray(curr))
 | 
	
		
			
				|  |  | +        curr = curr.find((v: any) => v.variable.replace('conversation.', '') === key)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (isLast)
 | 
	
		
			
				|  |  | +        return curr
 | 
	
		
			
				|  |  | +      else if (curr?.type === VarType.object || curr?.type === VarType.file)
 | 
	
		
			
				|  |  | +        curr = curr.children
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    return res
 | 
	
		
			
				|  |  | +    return undefined
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const checkValid = checkValidFns[data.type]
 |