UNPKG

dtamind-components

Version:

Apps integration for Dtamind. Contain Nodes and Credentials.

101 lines 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Interface_1 = require("../../../src/Interface"); const utils_1 = require("../../../src/utils"); const memory_1 = require("langchain/memory"); class BufferMemory_Memory { constructor() { this.label = 'Buffer Memory'; this.name = 'bufferMemory'; this.version = 2.0; this.type = 'BufferMemory'; this.icon = 'memory.svg'; this.category = 'Memory'; this.description = 'Retrieve chat messages stored in database'; this.baseClasses = [this.type, ...(0, utils_1.getBaseClasses)(memory_1.BufferMemory)]; this.inputs = [ { label: 'Session Id', name: 'sessionId', type: 'string', description: 'If not specified, a random id will be used. Learn <a target="_blank" href="https://docs.dtamindai.com/memory#ui-and-embedded-chat">more</a>', default: '', additionalParams: true, optional: true }, { label: 'Memory Key', name: 'memoryKey', type: 'string', default: 'chat_history', additionalParams: true } ]; } async init(nodeData, _, options) { const sessionId = nodeData.inputs?.sessionId; const memoryKey = nodeData.inputs?.memoryKey ?? 'chat_history'; const appDataSource = options.appDataSource; const databaseEntities = options.databaseEntities; const chatflowid = options.chatflowid; const orgId = options.orgId; return new BufferMemoryExtended({ returnMessages: true, memoryKey, sessionId, appDataSource, databaseEntities, chatflowid, orgId }); } } class BufferMemoryExtended extends Interface_1.DtamindMemory { constructor(fields) { super(fields); this.sessionId = ''; this.sessionId = fields.sessionId; this.appDataSource = fields.appDataSource; this.databaseEntities = fields.databaseEntities; this.chatflowid = fields.chatflowid; this.orgId = fields.orgId; } async getChatMessages(overrideSessionId = '', returnBaseMessages = false, prependMessages) { const id = overrideSessionId ? overrideSessionId : this.sessionId; if (!id) return []; const chatMessage = await this.appDataSource.getRepository(this.databaseEntities['ChatMessage']).find({ where: { sessionId: id, chatflowid: this.chatflowid }, order: { createdDate: 'ASC' } }); if (prependMessages?.length) { chatMessage.unshift(...prependMessages); } if (returnBaseMessages) { return await (0, utils_1.mapChatMessageToBaseMessage)(chatMessage, this.orgId); } let returnIMessages = []; for (const m of chatMessage) { returnIMessages.push({ message: m.content, type: m.role }); } return returnIMessages; } async addChatMessages() { // adding chat messages is done on server level return; } async clearChatMessages() { // clearing chat messages is done on server level return; } } module.exports = { nodeClass: BufferMemory_Memory }; //# sourceMappingURL=BufferMemory.js.map