Flowise
1import { ICommonObject } from 'flowise-components'2import { IActiveChatflows, INodeData, IReactFlowNode } from './Interface'3import logger from './utils/logger'4
5/**
6* This pool is to keep track of active chatflow pools
7* so we can prevent building langchain flow all over again
8*/
9export class ChatflowPool {10activeChatflows: IActiveChatflows = {}11
12/**13* Add to the pool
14* @param {string} chatflowid
15* @param {INodeData} endingNodeData
16* @param {IReactFlowNode[]} startingNodes
17* @param {ICommonObject} overrideConfig
18*/
19add(chatflowid: string, endingNodeData: INodeData | undefined, startingNodes: IReactFlowNode[], overrideConfig?: ICommonObject) {20this.activeChatflows[chatflowid] = {21startingNodes,22endingNodeData,23inSync: true24}25if (overrideConfig) this.activeChatflows[chatflowid].overrideConfig = overrideConfig26logger.info(`[server]: Chatflow ${chatflowid} added into ChatflowPool`)27}28
29/**30* Update to the pool
31* @param {string} chatflowid
32* @param {boolean} inSync
33*/
34updateInSync(chatflowid: string, inSync: boolean) {35if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) {36this.activeChatflows[chatflowid].inSync = inSync37logger.info(`[server]: Chatflow ${chatflowid} updated inSync=${inSync} in ChatflowPool`)38}39}40
41/**42* Remove from the pool
43* @param {string} chatflowid
44*/
45async remove(chatflowid: string) {46if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) {47delete this.activeChatflows[chatflowid]48logger.info(`[server]: Chatflow ${chatflowid} removed from ChatflowPool`)49}50}51}
52