UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

62 lines (54 loc) 1.62 kB
import type { Migration, MigrationData } from '@/migrations/VersionController'; import { V5ConfigState, V5Session } from './types/v5'; import { V6ConfigState, V6Session } from './types/v6'; export class MigrationV5ToV6 implements Migration { // from this version to start migration version = 5; migrate(data: MigrationData<V5ConfigState>): MigrationData<V6ConfigState> { const { sessions } = data.state; return { ...data, state: { ...data.state, sessions: MigrationV5ToV6.migrateSession(sessions), }, }; } static migrateChatConfig(config: V5Session['config']): V6Session['config'] { const { autoCreateTopicThreshold, enableAutoCreateTopic, compressThreshold, enableCompressThreshold, enableHistoryCount, enableMaxTokens, historyCount, inputTemplate, displayMode, ...agentConfig } = config; return { ...agentConfig, chatConfig: { autoCreateTopicThreshold, compressThreshold, displayMode, enableAutoCreateTopic, enableCompressThreshold, enableHistoryCount, enableMaxTokens, historyCount, inputTemplate, }, }; } static migrateSession(sessions: V5Session[]): V6Session[] { return sessions.map(({ config, updateAt, updatedAt, createdAt, createAt, ...res }) => ({ ...res, config: MigrationV5ToV6.migrateChatConfig(config), createdAt: createdAt || createAt!, updatedAt: updatedAt || updateAt!, })); } } export const MigrationAgentChatConfig = MigrationV5ToV6;