import { IAction, ICommonObject, IFileUpload, IHumanInput, INode, INodeData as INodeDataFromComponent, INodeExecutionData, INodeParams, IServerSideEventStreamer } from 'flowise-components' import { DataSource } from 'typeorm' import { CachePool } from './CachePool' import { Telemetry } from './utils/telemetry' import { UsageCacheManager } from './UsageCacheManager' export type MessageType = 'apiMessage' | 'userMessage' export type ChatflowType = 'CHATFLOW' | 'MULTIAGENT' | 'ASSISTANT' | 'AGENTFLOW' export type AssistantType = 'CUSTOM' | 'OPENAI' | 'AZURE' export type ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED' export enum MODE { QUEUE = 'queue', MAIN = 'main' } export enum ChatType { INTERNAL = 'INTERNAL', EXTERNAL = 'EXTERNAL', EVALUATION = 'EVALUATION' } export enum ChatMessageRatingType { THUMBS_UP = 'THUMBS_UP', THUMBS_DOWN = 'THUMBS_DOWN' } export enum Platform { OPEN_SOURCE = 'open source', CLOUD = 'cloud', ENTERPRISE = 'enterprise' } export enum UserPlan { STARTER = 'STARTER', PRO = 'PRO', FREE = 'FREE' } /** * Databases */ export interface IChatFlow { id: string name: string flowData: string updatedDate: Date createdDate: Date deployed?: boolean isPublic?: boolean apikeyid?: string analytic?: string speechToText?: string chatbotConfig?: string followUpPrompts?: string apiConfig?: string category?: string type?: ChatflowType workspaceId?: string } export interface IChatMessage { id: string role: MessageType content: string chatflowid: string executionId?: string sourceDocuments?: string usedTools?: string fileAnnotations?: string agentReasoning?: string fileUploads?: string artifacts?: string chatType: string chatId: string memoryType?: string sessionId?: string createdDate: Date leadEmail?: string action?: string | null followUpPrompts?: string } export interface IChatMessageFeedback { id: string content?: string chatflowid: string chatId: string messageId: string rating: ChatMessageRatingType createdDate: Date } export interface ITool { id: string name: string description: string color: string iconSrc?: string schema?: string func?: string updatedDate: Date createdDate: Date workspaceId?: string } export interface IAssistant { id: string details: string credential: string iconSrc?: string updatedDate: Date createdDate: Date workspaceId?: string } export interface ICredential { id: string name: string credentialName: string encryptedData: string updatedDate: Date createdDate: Date workspaceId?: string } export interface IVariable { id: string name: string value: string type: string updatedDate: Date createdDate: Date workspaceId?: string } export interface ILead { id: string name?: string email?: string phone?: string chatflowid: string chatId: string createdDate: Date } export interface IUpsertHistory { id: string chatflowid: string result: string flowData: string date: Date } export interface IExecution { id: string executionData: string state: ExecutionState agentflowId: string sessionId: string isPublic?: boolean action?: string createdDate: Date updatedDate: Date stoppedDate: Date workspaceId?: string } export interface IComponentNodes { [key: string]: INode } export interface IComponentCredentials { [key: string]: INode } export interface IVariableDict { [key: string]: string } export interface INodeDependencies { [key: string]: number } export interface INodeDirectedGraph { [key: string]: string[] } export interface INodeData extends INodeDataFromComponent { inputAnchors: INodeParams[] inputParams: INodeParams[] outputAnchors: INodeParams[] } export interface IReactFlowNode { id: string position: { x: number y: number } type: string data: INodeData positionAbsolute: { x: number y: number } z: number handleBounds: { source: any target: any } width: number height: number selected: boolean dragging: boolean parentNode?: string extent?: string } export interface IReactFlowEdge { source: string sourceHandle: string target: string targetHandle: string type: string id: string data: { label: string } } export interface IReactFlowObject { nodes: IReactFlowNode[] edges: IReactFlowEdge[] viewport: { x: number y: number zoom: number } } export interface IExploredNode { [key: string]: { remainingLoop: number lastSeenDepth: number } } export interface INodeQueue { nodeId: string depth: number } export interface IDepthQueue { [key: string]: number } export interface IAgentflowExecutedData { nodeLabel: string nodeId: string data: INodeExecutionData previousNodeIds: string[] status?: ExecutionState } export interface IMessage { message: string type: MessageType role?: MessageType content?: string } export interface IncomingInput { question: string overrideConfig?: ICommonObject chatId?: string sessionId?: string stopNodeId?: string uploads?: IFileUpload[] leadEmail?: string history?: IMessage[] action?: IAction streaming?: boolean } export interface IncomingAgentflowInput extends Omit { question?: string form?: Record humanInput?: IHumanInput } export interface IActiveChatflows { [key: string]: { startingNodes: IReactFlowNode[] endingNodeData?: INodeData inSync: boolean overrideConfig?: ICommonObject chatId?: string } } export interface IActiveCache { [key: string]: Map } export interface IOverrideConfig { node: string nodeId: string label: string name: string type: string schema?: ICommonObject[] | Record } export type ICredentialDataDecrypted = ICommonObject // Plain credential object sent to server export interface ICredentialReqBody { name: string credentialName: string plainDataObj: ICredentialDataDecrypted workspaceId?: string } // Decrypted credential object sent back to client export interface ICredentialReturnResponse extends ICredential { plainDataObj: ICredentialDataDecrypted } export interface IUploadFileSizeAndTypes { fileTypes: string[] maxUploadSize: number } export interface IApiKey { id: string keyName: string apiKey: string apiSecret: string updatedDate: Date workspaceId?: string } export interface ICustomTemplate { id: string name: string flowData: string updatedDate: Date createdDate: Date description?: string type?: string badge?: string framework?: string usecases?: string workspaceId?: string } export interface IFlowConfig { chatflowid: string chatId: string sessionId: string chatHistory: IMessage[] apiMessageId: string overrideConfig?: ICommonObject state?: ICommonObject runtimeChatHistoryLength?: number } export interface IPredictionQueueAppServer { appDataSource: DataSource componentNodes: IComponentNodes sseStreamer: IServerSideEventStreamer telemetry: Telemetry cachePool: CachePool usageCacheManager: UsageCacheManager } export interface IExecuteFlowParams extends IPredictionQueueAppServer { incomingInput: IncomingInput chatflow: IChatFlow chatId: string orgId: string workspaceId: string subscriptionId: string baseURL: string isInternal: boolean isEvaluation?: boolean evaluationRunId?: string signal?: AbortController files?: Express.Multer.File[] fileUploads?: IFileUpload[] uploadedFilesContent?: string isUpsert?: boolean isRecursive?: boolean parentExecutionId?: string iterationContext?: ICommonObject isTool?: boolean } export interface INodeOverrides { [key: string]: { label: string name: string type: string enabled: boolean }[] } export interface IVariableOverride { id: string name: string type: 'static' | 'runtime' enabled: boolean } // DocumentStore related export * from './Interface.DocumentStore' // Evaluations related export * from './Interface.Evaluation'