@aituber-onair/core
Version:
Core library for AITuber OnAir providing voice synthesis and chat processing
100 lines (99 loc) • 3.06 kB
TypeScript
import { Message } from '@aituber-onair/chat';
import { MemoryRecord, MemoryType, MemoryStorage } from '../types';
import { EventEmitter } from './EventEmitter';
/**
* Memory manager settings
*/
export interface MemoryOptions {
/** Enable summarization */
enableSummarization: boolean;
/** Short-term memory duration (milliseconds) */
shortTermDuration: number;
/** Mid-term memory duration (milliseconds) */
midTermDuration: number;
/** Long-term memory duration (milliseconds) */
longTermDuration: number;
/** Threshold for the number of messages before summarization */
maxMessagesBeforeSummarization: number;
/** Maximum number of characters in summary */
maxSummaryLength?: number;
/** Memory retention period (milliseconds) */
memoryRetentionPeriod?: number;
/** Custom summary prompt template */
summaryPromptTemplate?: string;
}
/**
* Summarizer interface
*/
export interface Summarizer {
/**
* Summarize message array
* @param messages Array of messages to summarize
* @param maxLength Maximum number of characters
* @param customPrompt Custom prompt template for summarization (optional)
*/
summarize(messages: Message[], maxLength?: number, customPrompt?: string): Promise<string>;
}
/**
* Manager for managing chat history and summarization
*/
export declare class MemoryManager extends EventEmitter {
private options;
private summarizer?;
private memories;
private storage?;
/**
* Constructor
* @param options Settings options
* @param summarizer Summarizer implementation (if omitted, summarization is disabled)
* @param storage Storage implementation for persistence (optional)
*/
constructor(options: MemoryOptions, summarizer?: Summarizer, storage?: MemoryStorage);
/**
* Load memories from storage
*/
private loadFromStorage;
/**
* Save memories to storage
*/
private saveToStorage;
/**
* Import memory records (used for restoring from external storage)
* @param records Memory records to import
*/
importMemoryRecords(records: MemoryRecord[]): void;
/**
* Summarize chat log and save as memory
* @param chatLog Chat log
* @param chatStartTime Chat start time
*/
createMemoryIfNeeded(chatLog: Message[], chatStartTime: number): Promise<void>;
/**
* Create memory of specified type
* @param type Memory type
* @param chatLog Chat log
* @param timestamp Timestamp
*/
private createMemory;
/**
* Get all memories
*/
getAllMemories(): MemoryRecord[];
/**
* Get memory of specified type
* @param type Memory type
*/
getMemoryByType(type: MemoryType): MemoryRecord | undefined;
/**
* Generate memory text for AI prompt
*/
getMemoryForPrompt(): string;
/**
* Clean up old memories
*/
cleanupOldMemories(): Promise<void>;
/**
* Clear all memories
*/
clearAllMemories(): Promise<void>;
}