codecrucible-synth
Version:
Production-Ready AI Development Platform with Multi-Voice Synthesis, Smithery MCP Integration, Enterprise Security, and Zero-Timeout Reliability
165 lines • 4.21 kB
TypeScript
import { SynthesisResult } from '../types.js';
import { ProjectContext } from './project-memory.js';
export interface StoredInteraction {
id: string;
sessionId: string;
timestamp: number;
prompt: string;
response: string;
voicesUsed: string[];
confidence: number;
latency: number;
userFeedback?: 'positive' | 'negative' | 'neutral';
topics: string[];
contextHash: string;
embedding?: number[];
metadata: Record<string, any>;
}
export interface ConversationSession {
id: string;
startTime: number;
endTime?: number;
totalInteractions: number;
averageConfidence: number;
topics: string[];
workspaceRoot: string;
userAgent?: string;
}
export interface SearchQuery {
text?: string;
sessionId?: string;
timeRange?: {
start: number;
end: number;
};
topics?: string[];
voices?: string[];
minConfidence?: number;
limit?: number;
offset?: number;
}
export interface SearchResult {
interactions: StoredInteraction[];
total: number;
relevanceScores?: number[];
}
export interface ConversationAnalytics {
totalInteractions: number;
totalSessions: number;
averageConfidence: number;
topTopics: Array<{
topic: string;
count: number;
}>;
voiceUsage: Array<{
voice: string;
count: number;
}>;
dailyActivity: Array<{
date: string;
interactions: number;
}>;
averageLatency: number;
}
/**
* Persistent conversation storage with semantic search capabilities
* Provides SQL-based storage with embeddings for intelligent retrieval
*/
export declare class ConversationStore {
private db?;
private dbPath;
private initialized;
constructor(workspaceRoot: string);
/**
* Initialize database and create tables
*/
initialize(): Promise<void>;
/**
* Store interaction with optional semantic embedding
*/
storeInteraction(prompt: string, response: SynthesisResult, context: ProjectContext, sessionId: string, userFeedback?: 'positive' | 'negative' | 'neutral'): Promise<string>;
/**
* Search interactions with text and semantic similarity
*/
searchInteractions(query: SearchQuery): Promise<SearchResult>;
/**
* Get conversation session by ID
*/
getSession(sessionId: string): Promise<ConversationSession | null>;
/**
* Start a new conversation session
*/
startSession(workspaceRoot: string, userAgent?: string): Promise<string>;
/**
* End a conversation session
*/
endSession(sessionId: string): Promise<void>;
/**
* Get conversation analytics
*/
getAnalytics(timeRange?: {
start: number;
end: number;
}): Promise<ConversationAnalytics>;
/**
* Update user feedback for an interaction
*/
updateFeedback(interactionId: string, feedback: 'positive' | 'negative' | 'neutral'): Promise<void>;
/**
* Create database tables
*/
private createTables;
/**
* Create database indexes for performance
*/
private createIndexes;
/**
* Map database row to StoredInteraction
*/
private mapRowToInteraction;
/**
* Update session statistics
*/
private updateSessionStats;
/**
* Generate simple embedding for semantic search
*/
private generateEmbedding;
/**
* Calculate relevance scores for search results
*/
private calculateRelevanceScores;
/**
* Calculate cosine similarity between vectors
*/
private cosineSimilarity;
/**
* Calculate text similarity (fallback)
*/
private calculateTextSimilarity;
/**
* Extract topics from text
*/
private extractTopics;
/**
* Generate hash for context
*/
private hashContext;
/**
* Simple hash function
*/
private simpleHash;
/**
* Generate unique ID
*/
private generateId;
/**
* Ensure database is initialized
*/
private ensureInitialized;
/**
* Close database connection
*/
dispose(): Promise<void>;
}
//# sourceMappingURL=conversation-store.d.ts.map