feat: get var list hooks

This commit is contained in:
Joel 2024-03-28 16:44:11 +08:00
parent 08650339d7
commit 615178dafa
3 changed files with 40 additions and 1 deletions

View File

@ -0,0 +1,27 @@
import {
useIsChatMode,
useWorkflow,
} from '@/app/components/workflow/hooks'
import { toNodeOutputVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'
import type { ValueSelector, Var } from '@/app/components/workflow/types'
type Params = {
onlyLeafNodeVar?: boolean
filterVar: (payload: Var, selector: ValueSelector) => boolean
}
const useAvailableVarList = (nodeId: string, {
onlyLeafNodeVar,
filterVar,
}: Params = {
onlyLeafNodeVar: false,
filterVar: () => true,
}) => {
const { getTreeLeafNodes, getBeforeNodesInSameBranch } = useWorkflow()
const isChatMode = useIsChatMode()
const availableNodes = onlyLeafNodeVar ? getTreeLeafNodes(nodeId) : getBeforeNodesInSameBranch(nodeId)
const availableVars = toNodeOutputVars(availableNodes, isChatMode, filterVar).map(item => item.vars)
return availableVars
}
export default useAvailableVarList

View File

@ -3,8 +3,9 @@ import type { FC } from 'react'
import React, { useCallback } from 'react'
import { useTranslation } from 'react-i18next'
import produce from 'immer'
import type { PromptItem } from '../../../types'
import type { PromptItem, ValueSelector, Var } from '../../../types'
import { PromptRole } from '../../../types'
import useAvailableVarList from '../../_base/hooks/use-available-var-list'
import Editor from '@/app/components/workflow/nodes/_base/components/prompt/editor'
import AddButton from '@/app/components/workflow/nodes/_base/components/add-button'
import TypeSelector from '@/app/components/workflow/nodes/_base/components/selector'
@ -15,6 +16,8 @@ const i18nPrefix = 'workflow.nodes.llm'
type Props = {
readOnly: boolean
nodeId: string
filterVar: (payload: Var, selector: ValueSelector) => boolean
isChatModel: boolean
isChatApp: boolean
payload: PromptItem | PromptItem[]
@ -30,6 +33,8 @@ type Props = {
const ConfigPrompt: FC<Props> = ({
readOnly,
nodeId,
filterVar,
isChatModel,
isChatApp,
payload,
@ -39,6 +44,11 @@ const ConfigPrompt: FC<Props> = ({
hasSetBlockStatus,
}) => {
const { t } = useTranslation()
const availableVarList = useAvailableVarList(nodeId, {
onlyLeafNodeVar: false,
filterVar,
})
console.log('availableVarList', availableVarList)
const handleChatModePromptChange = useCallback((index: number) => {
return (prompt: string) => {

View File

@ -171,6 +171,8 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({
{model.name && (
<ConfigPrompt
readOnly={readOnly}
nodeId={id}
filterVar={filterVar}
isChatModel={isChatModel}
isChatApp={isChatMode}
isShowContext