Commit 55b5d76e authored by Joel's avatar Joel

chore: move node run data to node hooks

parent 9693d014
...@@ -2,14 +2,14 @@ import { useState } from 'react' ...@@ -2,14 +2,14 @@ import { useState } from 'react'
import { useWorkflow } from '@/app/components/workflow/hooks' import { useWorkflow } from '@/app/components/workflow/hooks'
import type { CommonNodeType, InputVar, Variable } from '@/app/components/workflow/types' import type { CommonNodeType, InputVar, Variable } from '@/app/components/workflow/types'
import { InputVarType } from '@/app/components/workflow/types' import { InputVarType } from '@/app/components/workflow/types'
import { RETRIEVAL_OUTPUT_STRUCT } from '@/app/components/workflow/constants'
type Params<T> = { type Params<T> = {
id: string id: string
data: CommonNodeType<T> data: CommonNodeType<T>
defaultRunInputData: Record<string, any>
} }
const useOneStepRun = <T>({ id, data }: Params<T>) => { const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => {
const { handleNodeDataUpdate } = useWorkflow() const { handleNodeDataUpdate } = useWorkflow()
const isShowSingleRun = data._isSingleRun const isShowSingleRun = data._isSingleRun
const hideSingleRun = () => { const hideSingleRun = () => {
...@@ -24,15 +24,8 @@ const useOneStepRun = <T>({ id, data }: Params<T>) => { ...@@ -24,15 +24,8 @@ const useOneStepRun = <T>({ id, data }: Params<T>) => {
const [runningStatus, setRunningStatus] = useState('un started') const [runningStatus, setRunningStatus] = useState('un started')
// TODO: test // TODO: store to node
const [inputVarValues, setInputVarValues] = useState<Record<string, any>>({ const [runInputData, setRunInputData] = useState<Record<string, any>>(defaultRunInputData || {})
name: 'Joel',
age: '18',
})
const [visionFiles, setVisionFiles] = useState<any[]>([])
const [contexts, setContexts] = useState<string[]>([RETRIEVAL_OUTPUT_STRUCT])
const toVarInputs = (variables: Variable[]): InputVar[] => { const toVarInputs = (variables: Variable[]): InputVar[] => {
if (!variables) if (!variables)
...@@ -58,12 +51,8 @@ const useOneStepRun = <T>({ id, data }: Params<T>) => { ...@@ -58,12 +51,8 @@ const useOneStepRun = <T>({ id, data }: Params<T>) => {
toVarInputs, toVarInputs,
runningStatus, runningStatus,
setRunningStatus, setRunningStatus,
inputVarValues, runInputData,
setInputVarValues, setRunInputData,
visionFiles,
setVisionFiles,
contexts,
setContexts,
} }
} }
......
...@@ -9,6 +9,7 @@ import { ModelFeatureEnum } from '@/app/components/header/account-setting/model- ...@@ -9,6 +9,7 @@ import { ModelFeatureEnum } from '@/app/components/header/account-setting/model-
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud' import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud'
import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-step-run' import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-step-run'
import type { PromptItem } from '@/models/debug' import type { PromptItem } from '@/models/debug'
import { RETRIEVAL_OUTPUT_STRUCT } from '@/app/components/workflow/constants'
const useConfig = (id: string, payload: LLMNodeType) => { const useConfig = (id: string, payload: LLMNodeType) => {
const { inputs, setInputs } = useNodeCrud<LLMNodeType>(id, payload) const { inputs, setInputs } = useNodeCrud<LLMNodeType>(id, payload)
...@@ -95,18 +96,53 @@ const useConfig = (id: string, payload: LLMNodeType) => { ...@@ -95,18 +96,53 @@ const useConfig = (id: string, payload: LLMNodeType) => {
toVarInputs, toVarInputs,
runningStatus, runningStatus,
setRunningStatus, setRunningStatus,
inputVarValues, runInputData,
setInputVarValues, setRunInputData,
visionFiles,
setVisionFiles,
contexts,
setContexts,
} = useOneStepRun<LLMNodeType>({ } = useOneStepRun<LLMNodeType>({
id, id,
data: inputs, data: inputs,
defaultRunInputData: {
'name': 'Joel',
'age': '18',
'#context#': [RETRIEVAL_OUTPUT_STRUCT],
'#vision#': [],
},
}) })
console.log(contexts) const inputVarValues = (() => {
const vars: Record<string, any> = {}
Object.keys(runInputData)
.filter(key => !['#context#', '#vision#'].includes(key))
.forEach((key) => {
vars[key] = runInputData[key]
})
return vars
})()
const setInputVarValues = useCallback((newPayload: Record<string, any>) => {
const newVars = {
...newPayload,
'#context#': runInputData['#context#'],
'#vision#': runInputData['#vision#'],
}
setRunInputData(newVars)
}, [runInputData, setRunInputData])
const contexts = runInputData['#context#']
const setContexts = useCallback((newContexts: string[]) => {
setRunInputData({
...runInputData,
'#context#': newContexts,
})
}, [runInputData, setRunInputData])
const visionFiles = runInputData['#vision']
const setVisionFiles = useCallback((newFiles: any[]) => {
setRunInputData({
...runInputData,
'#vision#': newFiles,
})
}, [runInputData, setRunInputData])
const varInputs = toVarInputs(inputs.variables) const varInputs = toVarInputs(inputs.variables)
const handleRun = () => { const handleRun = () => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment