add memory icon in editor block

This commit is contained in:
JzoNg 2025-09-15 18:40:08 +08:00
parent 55f146f527
commit 257e43e2c2
6 changed files with 16 additions and 4 deletions

View File

@ -63,7 +63,8 @@ const WorkflowVariableBlockComponent = ({
const [localWorkflowNodesMap, setLocalWorkflowNodesMap] = useState<WorkflowNodesMap>(workflowNodesMap)
const node = localWorkflowNodesMap![variables[0]]
const isEnv = isENV(variables)
const isChatVar = isConversationVar(variables)
const isChatVar = isConversationVar(variables) && conversationVariables?.some(v => v.variable === `${variables?.[0] ?? ''}.${variables?.[1] ?? ''}` && v.type !== 'memory')
const isMemoryVar = isConversationVar(variables) && conversationVariables?.some(v => v.variable === `${variables?.[0] ?? ''}.${variables?.[1] ?? ''}` && v.type === 'memory')
const isException = isExceptionVariable(varName, node?.type)
let variableValid = true
@ -129,6 +130,7 @@ const WorkflowVariableBlockComponent = ({
handleVariableJump()
}}
isExceptionVariable={isException}
isMemoryVariable={isMemoryVar}
errorMsg={!variableValid ? t('workflow.errorMsg.invalidVariable') : undefined}
isSelected={isSelected}
ref={ref}

View File

@ -7,13 +7,15 @@ export type VariableIconProps = {
className?: string
variables?: string[]
variableCategory?: VarInInspectType | string
isMemoryVariable?: boolean
}
const VariableIcon = ({
className,
variables = [],
variableCategory,
isMemoryVariable,
}: VariableIconProps) => {
const VarIcon = useVarIcon(variables, variableCategory)
const VarIcon = useVarIcon(variables, variableCategory, isMemoryVariable)
return VarIcon && (
<VarIcon

View File

@ -21,6 +21,7 @@ const VariableLabel = ({
errorMsg,
onClick,
isExceptionVariable,
isMemoryVariable,
ref,
notShowFullPath,
rightSlot,
@ -50,6 +51,7 @@ const VariableLabel = ({
<VariableIcon
variables={variables}
className={varColorClassName}
isMemoryVariable={isMemoryVariable}
/>
<VariableName
variables={variables}

View File

@ -1,7 +1,8 @@
import { useMemo } from 'react'
import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development'
import { BubbleX, Env } from '@/app/components/base/icons/src/vender/line/others'
import { BubbleX, Env, Memory } from '@/app/components/base/icons/src/vender/line/others'
import { Loop } from '@/app/components/base/icons/src/vender/workflow'
import {
isConversationVar,
isENV,
@ -9,13 +10,16 @@ import {
} from '../utils'
import { VarInInspectType } from '@/types/workflow'
export const useVarIcon = (variables: string[], variableCategory?: VarInInspectType | string) => {
export const useVarIcon = (variables: string[], variableCategory?: VarInInspectType | string, isMemoryVariable?: boolean) => {
if (variableCategory === 'loop')
return Loop
if (isENV(variables) || variableCategory === VarInInspectType.environment || variableCategory === 'environment')
return Env
if (isMemoryVariable)
return Memory
if (isConversationVar(variables) || variableCategory === VarInInspectType.conversation || variableCategory === 'conversation')
return BubbleX

View File

@ -13,6 +13,7 @@ export type VariablePayload = {
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void
errorMsg?: string
isExceptionVariable?: boolean
isMemoryVariable?: boolean
ref?: React.Ref<HTMLDivElement>
notShowFullPath?: boolean
rightSlot?: ReactNode

View File

@ -288,6 +288,7 @@ export enum VarType {
arrayFile = 'array[file]',
any = 'any',
arrayAny = 'array[any]',
memory = 'memory',
}
export enum ValueType {