import { ContextSummary, ContextWindowConfig } from './context-summarizer'; export interface ConversationMessage { role: 'user' | 'assistant' | 'system'; content: string; timestamp: string; tools_used?: string[]; metadata?: Record; } export interface UserSession { sessionId: string; userId?: string; startTime: string; lastActivity: string; conversationHistory: ConversationMessage[]; userPreferences: UserPreferences; contextData: ContextData; } export interface UserPreferences { preferredStocks: string[]; preferredIndices: string[]; analysisStyle: 'detailed' | 'brief' | 'technical'; language: string; timezone: string; notificationSettings: { priceAlerts: boolean; marketUpdates: boolean; }; } export interface SummarizationRecord { timestamp: string; originalMessageCount: number; summarizedMessageCount: number; originalMessages: ConversationMessage[]; summary: ContextSummary; tokensSaved: number; triggerReason: string; } export interface ContextData { recentQueries: string[]; frequentlyAccessedStocks: Record; frequentlyUsedTools: Record; marketContext: { currentMarketStatus?: any; lastMarketUpdate?: string; activeIndices?: string[]; }; userGoals: string[]; investmentProfile?: 'conservative' | 'moderate' | 'aggressive'; summarizationHistory?: SummarizationRecord[]; lastSummarization?: SummarizationRecord; } export interface MemoryConfig { maxConversationHistory: number; maxRecentQueries: number; sessionTimeoutMinutes: number; persistToFile: boolean; memoryFilePath: string; contextWindowConfig: Partial; } export declare class MemoryManager { private sessions; private config; private memoryFilePath; private contextSummarizer; constructor(config?: Partial); /** * Create or get existing user session */ getOrCreateSession(sessionId: string, userId?: string): UserSession; /** * Add message to conversation history */ addMessage(sessionId: string, message: ConversationMessage): void; /** * Update recent queries */ private updateRecentQueries; /** * Update tool usage statistics */ private updateToolUsage; /** * Update stock access frequency */ updateStockAccess(sessionId: string, symbol: string): void; /** * Update user preferences */ updatePreferences(sessionId: string, preferences: Partial): void; /** * Update market context */ updateMarketContext(sessionId: string, marketData: Record): void; /** * Get conversation context for AI with intelligent summarization */ getConversationContext(sessionId: string, maxMessages?: number, systemPrompt?: string, persistSummarization?: boolean): Promise<{ messages: ConversationMessage[]; summary?: ContextSummary; wasSummarized: boolean; tokenCount: any; }>; /** * Get conversation context for AI (backward compatibility) */ getConversationContextSync(sessionId: string, maxMessages?: number): ConversationMessage[]; /** * Get user context summary */ getUserContextSummary(sessionId: string): string; /** * Get system prompt with context */ getContextualSystemPrompt(sessionId: string): string; /** * Clean up expired sessions */ cleanupExpiredSessions(): void; /** * Save memory to file (synchronous to guarantee persistence before returning) */ private saveMemoryToFile; /** * Load memory from file (synchronous so sessions are ready after construction) */ private loadMemoryFromFile; /** * Get session statistics */ getSessionStats(sessionId: string): any; /** * Export session data */ exportSessionData(sessionId: string): any; /** * Clear session data */ clearSession(sessionId: string): void; /** * Check if context needs summarization for a session */ needsContextSummarization(sessionId: string, systemPrompt?: string): Promise; /** * Get context statistics for a session */ getContextStats(sessionId: string, systemPrompt?: string): Promise<{ messageCount: number; tokenCount: any; needsSummarization: boolean; contextWindowUsage: number; }>; /** * Force context summarization for a session */ forceContextSummarization(sessionId: string, systemPrompt?: string): Promise; /** * Update context window configuration */ updateContextWindowConfig(config: Partial): void; /** * Get context window configuration */ getContextWindowConfig(): ContextWindowConfig; /** * Get last summarization for a session */ getLastSummarization(sessionId: string): SummarizationRecord | null; /** * Get summarization history for a session */ getSummarizationHistory(sessionId: string, limit?: number): SummarizationRecord[]; /** * Get detailed summarization info (without original messages for lighter payload) */ getSummarizationSummary(sessionId: string): { totalSummarizations: number; totalTokensSaved: number; lastSummarization?: { timestamp: string; messagesBefore: number; messagesAfter: number; tokensSaved: number; summary: string; }; } | null; } //# sourceMappingURL=memory-manager.d.ts.map