|  | @@ -4,16 +4,21 @@ import {
 | 
	
		
			
				|  |  |  } from 'react'
 | 
	
		
			
				|  |  |  import { useTranslation } from 'react-i18next'
 | 
	
		
			
				|  |  |  import { RiCloseLine } from '@remixicon/react'
 | 
	
		
			
				|  |  | +import { useNodes } from 'reactflow'
 | 
	
		
			
				|  |  |  import { useStore } from './store'
 | 
	
		
			
				|  |  |  import {
 | 
	
		
			
				|  |  |    useIsChatMode,
 | 
	
		
			
				|  |  |    useNodesReadOnly,
 | 
	
		
			
				|  |  |    useNodesSyncDraft,
 | 
	
		
			
				|  |  |  } from './hooks'
 | 
	
		
			
				|  |  | +import { type CommonNodeType, type InputVar, InputVarType, type Node } from './types'
 | 
	
		
			
				|  |  | +import useConfig from './nodes/start/use-config'
 | 
	
		
			
				|  |  | +import type { StartNodeType } from './nodes/start/types'
 | 
	
		
			
				|  |  |  import {
 | 
	
		
			
				|  |  |    FeaturesChoose,
 | 
	
		
			
				|  |  |    FeaturesPanel,
 | 
	
		
			
				|  |  |  } from '@/app/components/base/features'
 | 
	
		
			
				|  |  | +import type { PromptVariable } from '@/models/debug'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const Features = () => {
 | 
	
		
			
				|  |  |    const { t } = useTranslation()
 | 
	
	
		
			
				|  | @@ -21,6 +26,24 @@ const Features = () => {
 | 
	
		
			
				|  |  |    const setShowFeaturesPanel = useStore(s => s.setShowFeaturesPanel)
 | 
	
		
			
				|  |  |    const { nodesReadOnly } = useNodesReadOnly()
 | 
	
		
			
				|  |  |    const { handleSyncWorkflowDraft } = useNodesSyncDraft()
 | 
	
		
			
				|  |  | +  const nodes = useNodes<CommonNodeType>()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const startNode = nodes.find(node => node.data.type === 'start')
 | 
	
		
			
				|  |  | +  const { id, data } = startNode as Node<StartNodeType>
 | 
	
		
			
				|  |  | +  const { handleAddVariable } = useConfig(id, data)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const handleAddOpeningStatementVariable = (variables: PromptVariable[]) => {
 | 
	
		
			
				|  |  | +    const newVariable = variables[0]
 | 
	
		
			
				|  |  | +    const startNodeVariable: InputVar = {
 | 
	
		
			
				|  |  | +      variable: newVariable.key,
 | 
	
		
			
				|  |  | +      label: newVariable.name,
 | 
	
		
			
				|  |  | +      type: InputVarType.textInput,
 | 
	
		
			
				|  |  | +      max_length: newVariable.max_length,
 | 
	
		
			
				|  |  | +      required: newVariable.required || false,
 | 
	
		
			
				|  |  | +      options: [],
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    handleAddVariable(startNodeVariable)
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const handleFeaturesChange = useCallback(() => {
 | 
	
		
			
				|  |  |      handleSyncWorkflowDraft()
 | 
	
	
		
			
				|  | @@ -55,8 +78,9 @@ const Features = () => {
 | 
	
		
			
				|  |  |            disabled={nodesReadOnly}
 | 
	
		
			
				|  |  |            onChange={handleFeaturesChange}
 | 
	
		
			
				|  |  |            openingStatementProps={{
 | 
	
		
			
				|  |  | -            onAutoAddPromptVariable: () => {},
 | 
	
		
			
				|  |  | +            onAutoAddPromptVariable: handleAddOpeningStatementVariable,
 | 
	
		
			
				|  |  |            }}
 | 
	
		
			
				|  |  | +          workflowVariables={data.variables}
 | 
	
		
			
				|  |  |          />
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </div>
 |