UNPKG

n8n

Version:

n8n Workflow Automation Tool

62 lines (61 loc) 2.42 kB
import type { ChatMessageId, ChatSessionId } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { ChatHubConfig, ExecutionsConfig, GlobalConfig } from '@n8n/config'; import { InstanceSettings } from 'n8n-core'; import { RedisClientService } from '../../services/redis-client.service'; export interface StreamState { sessionId: ChatSessionId; messageId: ChatMessageId; userId: string; sequenceNumber: number; startedAt: number; } export interface BufferedChunk { sequenceNumber: number; content: string; } export interface StartStreamParams { sessionId: ChatSessionId; messageId: ChatMessageId; userId: string; } export interface StartExecutionParams { sessionId: ChatSessionId; userId: string; } export declare class ChatStreamStateService { private readonly logger; private readonly instanceSettings; private readonly executionsConfig; private readonly globalConfig; private readonly chatHubConfig; private readonly redisClientService; private readonly memoryStore; private readonly chunkBuffer; private readonly cleanupTimers; private readonly useRedis; private readonly redisPrefix; private readonly cleanupDelayMs; private redisClient; constructor(logger: Logger, instanceSettings: InstanceSettings, executionsConfig: ExecutionsConfig, globalConfig: GlobalConfig, chatHubConfig: ChatHubConfig, redisClientService: RedisClientService); startExecution(params: StartExecutionParams): Promise<void>; endExecution(sessionId: ChatSessionId): Promise<void>; setCurrentMessage(sessionId: ChatSessionId, messageId: ChatMessageId): Promise<void>; startStream(params: StartStreamParams): Promise<void>; getStreamState(sessionId: ChatSessionId): Promise<StreamState | null>; incrementSequence(sessionId: ChatSessionId): Promise<number>; bufferChunk(sessionId: ChatSessionId, chunk: BufferedChunk): Promise<void>; getChunksAfter(sessionId: ChatSessionId, lastReceivedSequence: number): Promise<BufferedChunk[]>; endStream(sessionId: ChatSessionId): Promise<void>; shutdown(): void; private getStateKey; private getChunksKey; private getRedisState; private setRedisState; private deleteRedisState; private getRedisChunks; private setRedisChunks; private deleteRedisChunks; private scheduleCleanup; private cancelCleanup; }