/** * ThinkHive SDK v3.0 - Transcript Patterns API * * API for transcript pattern detection and analysis */ export type PatternCategory = 'frustration' | 'confusion' | 'success' | 'failure' | 'escalation' | 'pii_exposure' | 'hallucination' | 'custom'; export type PatternOutcome = 'success' | 'failure' | 'escalation' | 'neutral'; export type PatternSeverity = 'info' | 'warning' | 'critical'; export type DetectionType = 'sequence' | 'keywords' | 'regex'; export interface PatternMatch { patternId: string; patternName: string; category: PatternCategory; matchedText?: string; position?: { start: number; end: number; }; confidence: number; severity: PatternSeverity; } export interface PatternInsight { type: string; message: string; severity: PatternSeverity; recommendation?: string; } export interface AnalysisResult { traceId: string; sessionId?: string; patternsMatched: number; riskScore: number; predictedOutcome?: PatternOutcome; predictionConfidence?: number; matches: PatternMatch[]; insights: PatternInsight[]; sentimentScores?: { overall: number; byTurn?: Array<{ turn: number; sentiment: number; confidence: number; }>; }; } export interface BulkAnalysisResult { results: Array; summary: { tracesAnalyzed: number; totalMatches: number; tracesWithMatches: number; }; } export interface PatternCategoryInfo { id: PatternCategory; name: string; description: string; indicators: string[]; } export interface BuiltInPattern { id: string; name: string; category: PatternCategory; detectionType: DetectionType; description: string; } /** * Transcript Patterns API client for pattern detection and analysis */ export declare const transcriptPatterns: { /** * Analyze a trace for patterns * * @example * ```typescript * const result = await transcriptPatterns.analyze('trace_123'); * console.log(`Found ${result.patternsMatched} patterns`); * console.log(`Risk score: ${result.riskScore}`); * ``` */ analyze(traceId: string): Promise; /** * Analyze multiple traces for patterns * * @example * ```typescript * const { results, summary } = await transcriptPatterns.bulkAnalyze([ * 'trace_1', 'trace_2', 'trace_3' * ]); * console.log(`${summary.tracesWithMatches} traces have patterns`); * ``` */ bulkAnalyze(traceIds: string[]): Promise; /** * Get available pattern categories with descriptions * * @example * ```typescript * const categories = await transcriptPatterns.getCategories(); * for (const category of categories) { * console.log(`${category.name}: ${category.description}`); * } * ``` */ getCategories(): Promise; /** * Get built-in patterns * * @example * ```typescript * const patterns = await transcriptPatterns.getBuiltInPatterns(); * const frustrationPatterns = patterns.filter(p => p.category === 'frustration'); * ``` */ getBuiltInPatterns(): Promise; }; /** * Check if analysis result indicates high risk * * @param result - Analysis result to check * @param threshold - Risk score threshold (default 70) * @returns Whether the result indicates high risk */ export declare function isHighRisk(result: AnalysisResult, threshold?: number): boolean; /** * Get matches by category * * @param result - Analysis result * @param category - Pattern category to filter by * @returns Filtered pattern matches */ export declare function getMatchesByCategory(result: AnalysisResult, category: PatternCategory): PatternMatch[]; /** * Get critical insights from analysis * * @param result - Analysis result * @returns Critical severity insights */ export declare function getCriticalInsights(result: AnalysisResult): PatternInsight[]; /** * Check if analysis detected PII * * @param result - Analysis result * @returns Whether PII was detected */ export declare function hasPiiExposure(result: AnalysisResult): boolean; /** * Check if analysis detected frustration * * @param result - Analysis result * @returns Whether frustration was detected */ export declare function hasFrustrationSignals(result: AnalysisResult): boolean; /** * Check if analysis detected escalation request * * @param result - Analysis result * @returns Whether escalation was requested */ export declare function hasEscalationRequest(result: AnalysisResult): boolean; /** * Calculate category distribution * * @param result - Analysis result * @returns Object with counts per category */ export declare function getCategoryDistribution(result: AnalysisResult): Record; /** * Get actionable recommendations from insights * * @param result - Analysis result * @returns Array of recommendation strings */ export declare function getRecommendations(result: AnalysisResult): string[]; /** * Calculate overall sentiment from analysis * * @param result - Analysis result * @returns Sentiment score (-1 to 1) or null if not available */ export declare function getOverallSentiment(result: AnalysisResult): number | null; /** * Determine if conversation needs attention based on patterns * * @param result - Analysis result * @returns Whether the conversation needs attention */ export declare function needsAttention(result: AnalysisResult): boolean; /** * Get severity level as numeric value * * @param severity - Pattern severity * @returns Numeric severity (1-3) */ export declare function getSeverityLevel(severity: PatternSeverity): number; /** * Sort matches by severity (critical first) * * @param matches - Pattern matches to sort * @returns Sorted matches */ export declare function sortMatchesBySeverity(matches: PatternMatch[]): PatternMatch[];