stock-nse-india
Version:
This package will help us to get equity/index details and historical data from National Stock Exchange of India.
188 lines • 5.8 kB
TypeScript
import { ContextSummary, ContextWindowConfig } from './context-summarizer';
export interface ConversationMessage {
role: 'user' | 'assistant' | 'system';
content: string;
timestamp: string;
tools_used?: string[];
metadata?: Record<string, any>;
}
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<string, number>;
frequentlyUsedTools: Record<string, number>;
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<ContextWindowConfig>;
}
export declare class MemoryManager {
private sessions;
private config;
private memoryFilePath;
private contextSummarizer?;
constructor(config?: Partial<MemoryConfig>);
private getContextSummarizer;
/**
* 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<UserPreferences>): void;
/**
* Update market context
*/
updateMarketContext(sessionId: string, marketData: Record<string, unknown>): 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<boolean>;
/**
* 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<ContextSummary | null>;
/**
* Update context window configuration
*/
updateContextWindowConfig(config: Partial<ContextWindowConfig>): 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