diff --git a/packages/components/nodes/memory/Mem0/Mem0.ts b/packages/components/nodes/memory/Mem0/Mem0.ts index ba7960163dc..456cbba7f45 100644 --- a/packages/components/nodes/memory/Mem0/Mem0.ts +++ b/packages/components/nodes/memory/Mem0/Mem0.ts @@ -15,6 +15,12 @@ interface BufferMemoryExtendedInput { chatflowid: string } +interface NodeFields extends Mem0MemoryInput, Mem0MemoryExtendedInput, BufferMemoryExtendedInput { + searchOnly: boolean + useFlowiseChatId: boolean + input: string +} + class Mem0_Memory implements INode { label: string name: string @@ -143,12 +149,12 @@ class Mem0_Memory implements INode { ] } - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - return await initializeMem0(nodeData, options) + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + return await initializeMem0(nodeData, input, options) } } -const initializeMem0 = async (nodeData: INodeData, options: ICommonObject): Promise => { +const initializeMem0 = async (nodeData: INodeData, input: string, options: ICommonObject): Promise => { const initialUserId = nodeData.inputs?.user_id as string const useFlowiseChatId = nodeData.inputs?.useFlowiseChatId as boolean @@ -183,23 +189,23 @@ const initializeMem0 = async (nodeData: INodeData, options: ICommonObject): Prom filters: (nodeData.inputs?.filters as Record) || {} } - const obj: Mem0MemoryInput & Mem0MemoryExtendedInput & BufferMemoryExtendedInput & { searchOnly: boolean; useFlowiseChatId: boolean } = - { - apiKey: apiKey, - humanPrefix: nodeData.inputs?.humanPrefix as string, - aiPrefix: nodeData.inputs?.aiPrefix as string, - inputKey: nodeData.inputs?.inputKey as string, - sessionId: constructorSessionId, - mem0Options: mem0Options, - memoryOptions: memoryOptions, - separateMessages: false, - returnMessages: false, - appDataSource: options.appDataSource as DataSource, - databaseEntities: options.databaseEntities as IDatabaseEntity, - chatflowid: options.chatflowid as string, - searchOnly: (nodeData.inputs?.searchOnly as boolean) || false, - useFlowiseChatId: useFlowiseChatId - } + const obj: NodeFields = { + apiKey: apiKey, + humanPrefix: nodeData.inputs?.humanPrefix as string, + aiPrefix: nodeData.inputs?.aiPrefix as string, + inputKey: nodeData.inputs?.inputKey as string, + sessionId: constructorSessionId, + mem0Options: mem0Options, + memoryOptions: memoryOptions, + separateMessages: false, + returnMessages: false, + appDataSource: options.appDataSource as DataSource, + databaseEntities: options.databaseEntities as IDatabaseEntity, + chatflowid: options.chatflowid as string, + searchOnly: (nodeData.inputs?.searchOnly as boolean) || false, + useFlowiseChatId: useFlowiseChatId, + input: input + } return new Mem0MemoryExtended(obj) } @@ -219,10 +225,9 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { chatflowid: string searchOnly: boolean useFlowiseChatId: boolean + input: string - constructor( - fields: Mem0MemoryInput & Mem0MemoryExtendedInput & BufferMemoryExtendedInput & { searchOnly: boolean; useFlowiseChatId: boolean } - ) { + constructor(fields: NodeFields) { super(fields) this.initialUserId = fields.memoryOptions?.user_id ?? '' this.userId = this.initialUserId @@ -233,6 +238,7 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { this.chatflowid = fields.chatflowid this.searchOnly = fields.searchOnly this.useFlowiseChatId = fields.useFlowiseChatId + this.input = fields.input } // Selects Mem0 user_id based on toggle state (Flowise chat ID or input field) @@ -318,11 +324,16 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { if (prependMessages?.length) { returnIMessages.unshift(...prependMessages) // Reverted to original simpler unshift - chatMessage.unshift(...(prependMessages as any)) // Cast as any + chatMessage.unshift(...(prependMessages as any)) } if (returnBaseMessages) { - const memoryVariables = await this.loadMemoryVariables({}, overrideUserId) + const memoryVariables = await this.loadMemoryVariables( + { + [this.inputKey]: this.input ?? '' + }, + overrideUserId + ) const mem0History = memoryVariables[this.memoryKey] if (mem0History && typeof mem0History === 'string') {