UNPKG

smart-thinking-mcp

Version:

Un serveur MCP avancé pour le raisonnement multi-dimensionnel, adaptatif et collaboratif

167 lines (166 loc) 5.95 kB
import { VerificationStatus } from './types'; import { EmbeddingService } from './embedding-service'; /** * Résultat d'une recherche de vérification */ export interface VerificationSearchResult { id: string; status: VerificationStatus; confidence: number; sources: string[]; timestamp: Date; similarity: number; text: string; } /** * Classe qui gère la mémoire des vérifications avec recherche vectorielle efficace * pour assurer leur persistance à travers les différentes étapes du raisonnement * AMÉLIORÉ: Meilleure gestion des similarités et persistance des vérifications */ export declare class VerificationMemory { private static instance; private embeddingService?; private verifications; private sessionIndex; private similarityCache; /** * Méthode statique pour implémenter le singleton * * @returns L'instance unique de VerificationMemory */ static getInstance(): VerificationMemory; /** * Constructeur privé pour empêcher l'instanciation directe */ private constructor(); /** * Définit le service d'embedding à utiliser pour la similarité sémantique * * @param embeddingService Service d'embedding à utiliser */ setEmbeddingService(embeddingService: EmbeddingService): void; /** * Ajoute une nouvelle vérification à la mémoire * AMÉLIORÉ: Meilleure détection des duplicatas avec cache de similarité * * @param text Texte de l'information vérifiée * @param status Statut de vérification * @param confidence Niveau de confiance * @param sources Sources utilisées pour la vérification * @param sessionId Identifiant de la session * @param ttl Durée de vie en millisecondes (optionnel) * @returns Identifiant de la vérification ajoutée */ addVerification(text: string, status: VerificationStatus, confidence: number, sources?: string[], sessionId?: string, ttl?: number): Promise<string>; /** * Recherche une vérification existante identique pour éviter les doublons * AMÉLIORÉ: Utilisation du cache de similarité pour des recherches plus rapides * * @param text Texte à rechercher * @param sessionId ID de session * @returns L'entrée existante si trouvée, null sinon */ private findExactDuplicate; /** * NOUVEAU: Obtient une similarité mise en cache * * @param key Clé du cache * @returns Similarité mise en cache ou undefined si non trouvée */ private getCachedSimilarity; /** * NOUVEAU: Définit une similarité dans le cache * * @param key Clé du cache * @param similarity Valeur de similarité à mettre en cache */ private setCachedSimilarity; /** * Recherche une vérification existante similaire à l'information fournie * AMÉLIORÉ: Recherche plus efficace avec seuils de similarité ajustés * * @param text Texte de l'information à rechercher * @param sessionId Identifiant de la session * @param similarityThreshold Seuil de similarité * @returns La vérification trouvée, ou null si aucune correspondance */ findVerification(text: string, sessionId?: string, similarityThreshold?: number): Promise<VerificationSearchResult | null>; /** * Méthode de secours pour la recherche basée sur le texte * AMÉLIORÉ: Recherche textuelle plus flexible * * @param text Texte à rechercher * @param sessionId ID de session * @returns Résultat de recherche ou null */ private fallbackToTextSearch; /** * NOUVEAU: Normalise un texte pour la recherche textuelle * * @param text Texte à normaliser * @returns Texte normalisé */ private normalizeText; /** * Récupère les entrées pour une session donnée * * @param sessionId ID de session * @returns Tableau des entrées pour cette session */ private getSessionEntriesArray; /** * Récupère toutes les vérifications pour une session donnée * avec pagination et filtrage * * @param sessionId Identifiant de la session * @param offset Position de départ (pour pagination) * @param limit Nombre maximum de résultats * @param statusFilter Filtre sur le statut (optionnel) * @returns Tableau des vérifications pour cette session */ getSessionVerifications(sessionId?: string, offset?: number, limit?: number, statusFilter?: VerificationStatus): { text: string; status: VerificationStatus; confidence: number; sources: string[]; timestamp: Date; id: string; }[]; /** * Recherche des vérifications par similarité vectorielle * * @param text Texte de référence * @param sessionId ID de session * @param limit Nombre maximum de résultats * @param minSimilarity Seuil minimal de similarité * @returns Liste de résultats triés par similarité */ searchSimilarVerifications(text: string, sessionId?: string, limit?: number, minSimilarity?: number): Promise<VerificationSearchResult[]>; /** * Nettoie les vérifications d'une session spécifique * * @param sessionId Identifiant de la session à nettoyer */ clearSession(sessionId: string): void; /** * Nettoie les entrées expirées */ private cleanExpiredEntries; /** * NOUVEAU: Nettoie le cache de similarité */ private cleanSimilarityCache; /** * Nettoie toutes les vérifications (utilisé pour les tests) */ clearAll(): void; /** * Obtient des statistiques sur la mémoire de vérification */ getStats(): { totalEntries: number; sessionCount: number; cacheSize: number; entriesByStatus: Record<VerificationStatus, number>; }; }