UNPKG

@aituber-onair/manneri

Version:

A lightweight conversation pattern detection library to prevent repetitive AI responses

52 lines (51 loc) 1.8 kB
import type { Message, AnalysisResult, TextAnalysisOptions } from '../types/index.js'; export interface ConversationAnalyzerOptions { similarityThreshold: number; patternThreshold: number; keywordThreshold: number; analysisWindow: number; enableSimilarityAnalysis: boolean; enablePatternDetection: boolean; enableKeywordAnalysis: boolean; enableTopicTracking: boolean; textAnalysisOptions: Partial<TextAnalysisOptions>; } export declare class ConversationAnalyzer { private readonly similarityAnalyzer; private readonly keywordExtractor; private readonly patternDetector; private readonly options; constructor(options?: Partial<ConversationAnalyzerOptions>); analyzeConversation(messages: Message[]): AnalysisResult; private getAnalysisWindow; private analyzeSimilarity; private analyzeTopics; private analyzePatterns; private shouldIntervene; private getInterventionReason; private createEmptySimilarityResult; analyzeMessageFlow(messages: Message[]): { avgMessageLength: number; roleDistribution: Record<string, number>; conversationRhythm: number[]; engagementScore: number; }; private calculateConversationRhythm; private calculateEngagementScore; detectConversationLoops(messages: Message[]): { hasLoop: boolean; loopLength: number; loopStart: number; confidence: number; }; private calculateSequenceSimilarity; getAnalysisStats(): { totalAnalyses: number; averageAnalysisTime: number; cacheHitRate: number; memoryUsage: number; }; clearCache(): void; updateOptions(options: Partial<ConversationAnalyzerOptions>): void; getOptions(): ConversationAnalyzerOptions; }