smart-thinking-mcp
Version:
Un serveur MCP avancé pour le raisonnement multi-dimensionnel, adaptatif et collaboratif
302 lines (301 loc) • 11.5 kB
TypeScript
import { ThoughtNode, ThoughtType, Connection, ConnectionType, ThoughtMetrics, NextStepSuggestion, Hyperlink, ConnectionAttributes } from './types';
import { EmbeddingService } from './embedding-service';
import { QualityEvaluator } from './quality-evaluator';
/**
* Classe qui gère le graphe de pensées et ses opérations
*/
export declare class ThoughtGraph {
private nodes;
private hyperlinks;
private sessionId;
private embeddingService?;
private qualityEvaluator?;
private eventEmitter;
constructor(sessionId?: string, embeddingService?: EmbeddingService, qualityEvaluator?: QualityEvaluator);
/**
* Configure les écouteurs d'événements pour la vérification continue
*/
private setupEventListeners;
/**
* Vérifie les calculs dans une pensée et les annote si nécessaire
*
* @param thoughtId L'identifiant de la pensée à vérifier
* @param content Le contenu de la pensée
*/
private checkForCalculationsAndVerify;
/**
* Permet d'enregistrer un écouteur d'événement externe
*
* @param event Le nom de l'événement
* @param listener La fonction de rappel à exécuter
*/
on(event: string, listener: (...args: any[]) => void): void;
/**
* Génère un identifiant unique
*/
private generateUniqueId;
/**
* Ajoute une nouvelle pensée au graphe
*
* @param content Le contenu de la pensée
* @param type Le type de pensée
* @param connections Les connexions à d'autres pensées
* @returns L'identifiant de la pensée ajoutée
*/
addThought(content: string, type?: ThoughtType, connections?: Connection[]): string;
/**
* Met à jour les métriques pour une pensée spécifique (maintenant asynchrone)
* @param thoughtId L'ID de la pensée
*/
updateMetricsForThought(thoughtId: string): Promise<void>;
/**
* Établit des connexions bidirectionnelles entre les pensées
*
* @param sourceId L'identifiant de la pensée source
* @param connections Les connexions à établir
*/
private establishConnections;
/**
* Détermine le type de connexion réciproque
*
* @param type Le type de connexion original
* @returns Le type de connexion réciproque
*/
private getReciprocalConnectionType;
/**
* Récupère une pensée par son identifiant
*
* @param id L'identifiant de la pensée
* @returns La pensée ou undefined si non trouvée
*/
getThought(id: string): ThoughtNode | undefined;
/**
* Met à jour les métriques d'une pensée
*
* @param id L'identifiant de la pensée
* @param metrics Les nouvelles métriques
* @returns true si la mise à jour a réussi, false sinon
*/
updateThoughtMetrics(id: string, metrics: Partial<ThoughtMetrics>): boolean;
/**
* Récupère toutes les pensées
*
* @param sessionId L'identifiant de session facultatif pour filtrer les pensées
* @returns Un tableau de toutes les pensées (filtrées par session si sessionId est fourni)
*/
getAllThoughts(sessionId?: string): ThoughtNode[];
/**
* Récupère les pensées les plus récentes
*
* @param limit Le nombre maximum de pensées à récupérer
* @param sessionId L'identifiant de session facultatif pour filtrer les pensées
* @returns Un tableau des pensées les plus récentes (filtrées par session)
*/
getRecentThoughts(limit?: number, sessionId?: string): ThoughtNode[];
/**
* Récupère les pensées connectées à une pensée spécifique
*
* @param thoughtId L'identifiant de la pensée
* @returns Un tableau des pensées connectées
*/
getConnectedThoughts(thoughtId: string): ThoughtNode[];
/**
* Récupère les pensées les plus pertinentes pour un contexte donné
*
* @param context Le contexte pour lequel chercher des pensées pertinentes
* @param limit Le nombre maximum de pensées à récupérer
* @param sessionId L'identifiant de session facultatif pour filtrer les pensées
* @returns Un tableau des pensées les plus pertinentes (filtrées par session)
*/
getRelevantThoughts(context: string, limit?: number, sessionId?: string): Promise<ThoughtNode[]>;
/**
* Implémentation de secours basée sur les mots-clés
*
* @param context Le contexte pour lequel chercher des pensées pertinentes
* @param limit Le nombre maximum de pensées à récupérer
* @returns Un tableau des pensées les plus pertinentes
*/
private getRelevantThoughtsWithKeywords;
/**
* Crée un hyperlien entre plusieurs pensées
*
* @param nodeIds Les identifiants des pensées à connecter
* @param type Le type de connexion
* @param label Une étiquette descriptive facultative
* @param attributes Attributs sémantiques facultatifs
* @param strength La force de la connexion (0 à 1)
* @returns L'identifiant de l'hyperlien créé
*/
createHyperlink(nodeIds: string[], type: ConnectionType, label?: string, attributes?: ConnectionAttributes, strength?: number): string;
/**
* Récupère un hyperlien par son identifiant
*
* @param id L'identifiant de l'hyperlien
* @returns L'hyperlien ou undefined si non trouvé
*/
getHyperlink(id: string): Hyperlink | undefined;
/**
* Récupère tous les hyperliens
*
* @param sessionId L'identifiant de session facultatif pour filtrer les hyperliens
* @returns Un tableau de tous les hyperliens (filtrés par session)
*/
getAllHyperlinks(sessionId?: string): Hyperlink[];
/**
* Récupère les hyperliens impliquant une pensée spécifique
*
* @param thoughtId L'identifiant de la pensée
* @param sessionId L'identifiant de session facultatif pour filtrer les hyperliens
* @returns Un tableau des hyperliens impliquant cette pensée (filtrés par session)
*/
getHyperlinksForThought(thoughtId: string, sessionId?: string): Hyperlink[];
/**
* Infère des relations entre pensées basées sur l'analyse de contenu et de contexte
*
* @param confidenceThreshold Seuil de confiance minimum pour les relations inférées (0 à 1)
* @returns Le nombre de nouvelles relations inférées
*/
inferRelations(confidenceThreshold?: number): Promise<number>;
/**
* Infère des relations basées sur la similarité sémantique
*
* @param thoughts Les pensées à analyser
* @param confidenceThreshold Seuil de confiance minimum
* @returns Le nombre de nouvelles relations inférées
*/
private inferRelationsBySimilarity;
/**
* Infère des relations basées sur la transitivité
*
* @param confidenceThreshold Seuil de confiance minimum
* @returns Le nombre de nouvelles relations inférées
*/
private inferRelationsByTransitivity;
/**
* Infère des relations basées sur des patterns dans le graphe
*
* @param confidenceThreshold Seuil de confiance minimum
* @returns Le nombre de nouvelles relations inférées
*/
private inferRelationsByPatterns;
/**
* Détecte des clusters (groupes) de pensées fortement connectées
*
* @returns Un tableau de clusters détectés
*/
private detectClusters;
/**
* Explore une communauté connectée à partir d'un nœud de départ
*
* @param startNodeId ID du nœud de départ
* @param visited Ensemble des nœuds déjà visités
* @returns Un cluster de nœuds connectés
*/
private exploreCommunity;
/**
* Infère le type de connexion approprié entre deux pensées
*
* @param sourceThought La pensée source
* @param targetThought La pensée cible
* @returns Le type de connexion inféré
*/
private inferConnectionType;
/**
* Ajoute une connexion inférée entre deux pensées
*
* @param sourceId ID de la pensée source
* @param targetId ID de la pensée cible
* @param type Type de connexion
* @param confidence Niveau de confiance dans l'inférence
* @returns true si l'ajout a réussi, false sinon
*/
private addInferredConnection;
/**
* Détermine si une connexion réciproque doit être créée
*
* @param type Le type de connexion
* @returns true si une connexion réciproque doit être créée
*/
private shouldCreateReciprocalConnection;
/**
* Convertit un niveau de confiance en niveau de certitude
*
* @param confidence Le niveau de confiance (0 à 1)
* @returns Le niveau de certitude correspondant
*/
private mapConfidenceToCertainty;
/**
* Enrichit une pensée existante avec des attributs sémantiques pour ses connexions
*
* @param thoughtId L'ID de la pensée à enrichir
* @returns Le nombre de connexions enrichies
*/
enrichThoughtConnections(thoughtId: string): number;
/**
* Infère des attributs sémantiques pour une connexion
*
* @param sourceThought La pensée source
* @param targetThought La pensée cible
* @param type Le type de connexion
* @returns Les attributs sémantiques inférés
*/
private inferConnectionAttributes;
/**
* Suggère les prochaines étapes de raisonnement, potentiellement en utilisant le LLM.
*
* @param limit Le nombre maximum de suggestions
* @param sessionId L'identifiant de session facultatif pour filtrer le contexte
* @returns Une promesse résolvant vers un tableau de suggestions pour les prochaines étapes
*/
suggestNextSteps(limit?: number, sessionId?: string): Promise<NextStepSuggestion[]>;
/**
* Méthode heuristique originale pour suggérer les prochaines étapes (filtrée par session).
*/
private suggestNextStepsHeuristic;
/**
* Vérifie si un texte contient l'un des termes donnés
*
* @param text Le texte à vérifier
* @param terms Les termes à rechercher
* @returns true si le texte contient au moins un des termes, false sinon
*/
private containsAny;
/**
* Met à jour le contenu d'une pensée existante
*
* @param id L'identifiant de la pensée à mettre à jour
* @param newContent Le nouveau contenu de la pensée
* @returns true si la mise à jour a réussi, false sinon
*/
updateThoughtContent(id: string, newContent: string): boolean;
/**
* Efface toutes les pensées du graphe
*/
clear(): void;
/**
* Exporte le graphe de pensées sous forme de JSON
*
* @returns Une représentation JSON du graphe
*/
exportToJson(): string;
/**
* Exporte le graphe enrichi (nœuds et hyperliens) sous forme de JSON
*
* @returns Une représentation JSON du graphe enrichi
*/
exportEnrichedGraph(): string;
/**
* Importe un graphe de pensées depuis un JSON
*
* @param json Le JSON à importer
* @returns true si l'importation a réussi, false sinon
*/
importFromJson(json: string): boolean;
/**
* Importe un graphe enrichi depuis un JSON
*
* @param json Le JSON à importer
* @returns true si l'importation a réussi, false sinon
*/
importEnrichedGraph(json: string): boolean;
}