mcp-server-debug-thinking
Version:
Graph-based MCP server for systematic debugging using Problem-Solution Trees and Hypothesis-Experiment-Learning cycles
170 lines • 6.16 kB
TypeScript
import type { DebugGraph } from "../types/graph.js";
import { type CreateAction, type ConnectAction, type QueryAction } from "../types/graphActions.js";
export declare class GraphService {
private graph;
private storage;
private errorTypeIndex;
private readonly ERROR_TYPE_REGEX;
private nodesByType;
private edgesByNode;
private parentIndex;
constructor();
initialize(): Promise<void>;
/**
* CREATEアクション実装
* 新しいノードを作成し、親ノードが指定されていれば自動的に適切なエッジを生成
* 問題ノードの場合は類似問題も自動検索して返す
*/
create(action: CreateAction): Promise<{
content: Array<{
type: string;
text: string;
}>;
isError?: boolean;
}>;
/**
* CONNECTアクション実装
* 既存の2つのノード間に明示的な関係(エッジ)を作成
* 矛盾する関係(supports vs contradicts等)を自動検出
*/
connect(action: ConnectAction): Promise<{
content: Array<{
type: string;
text: string;
}>;
isError?: boolean;
}>;
/**
* QUERYアクション実装
* グラフ内のデータを様々な方法で検索・分析
* 実行時間を計測してパフォーマンス情報も返す
*/
query(action: QueryAction): Promise<{
content: Array<{
type: string;
text: string;
}>;
isError?: boolean;
}>;
/**
* ヘルパーメソッド
* 内部処理用のユーティリティ関数群
*/
/**
* ノードタイプに応じたデフォルトメタデータを自動設定
* - 問題ノード: status='open', isRoot=false
* - 仮説ノード: confidence=50(未設定時), testable=true
* - 学習ノード: confidence=70(未設定時)
*/
private enrichNodeMetadata;
/**
* エッジオブジェクトを作成
* strengthを自動的に0-1の範囲に正規化
* ユニークIDとタイムスタンプを自動付与
*/
private createEdge;
/**
* 関係の矛盾をチェック
* 'supports'と'contradicts'のような相反する関係が
* 同じノード間に存在しないよう検証
* @returns 矛盾するエッジの配列
*/
private checkForConflicts;
/**
* ノードタイプに応じた次のアクション提案を生成
* - 問題ノード: 関連する問題のIDリスト
* - 仮説ノード: 推奨される実験方法
*/
private generateSuggestions;
/**
* クエリ実装メソッド群
* 様々な検索・分析機能の実装
*/
/**
* 類似問題検索
* エラータイプ別インデックスを活用して高速に類似問題を検索
* 類似度計算はエラータイプ、キーフレーズ、単語ベースで実施
* 解決済み問題を優先的に返す
*/
private findSimilarProblems;
/**
* 特定の問題に対する解決策を検索
* 'solves'エッジを追跡して関連する解決策ノードを収集
* デバッグパス(問題→仮説→実験→観察→解決)も含める
* @param problemId 問題ノードのID
* @returns 解決策情報の配列(検証済みフラグとデバッグパス付き)
*/
private findSolutionsForProblem;
/**
* 問題から解決策までのデバッグパスを構築
* 親子関係を辿って経路を復元
*/
private buildDebugPath;
/**
* エラーメッセージからエラータイプを抽出
* 正規表現で'TypeError', 'ReferenceError'等を検出
* @returns エラータイプ名(小文字、スペース区切り)またはnull
*/
private extractErrorType;
/**
* 2つの問題テキストの類似度を計算(0-1の範囲)
* 計算要素:
* - エラータイプの類似度: 20%
* - 部分文字列マッチング: 20%
* - 編集距離による類似度: 15%
* - キーフレーズの部分一致: 15%
* - 単語ベースの類似度: 20%
* - 重要な識別子の一致: 10%
*/
private calculateSimilarity;
/**
* 最長共通部分文字列を見つける
* 動的計画法を使用して効率的に計算
*/
private findLongestCommonSubstring;
/**
* レーベンシュタイン距離(編集距離)を計算
* 一方の文字列を他方に変換するために必要な最小の編集操作数
* @returns 正規化された類似度スコア (0-1の範囲、1が完全一致)
*/
private calculateLevenshteinSimilarity;
/**
* 単語レベルでのレーベンシュタイン距離を計算
* エラーメッセージの構造的な類似性を評価
*/
private calculateWordLevelSimilarity;
/**
* セッション管理用パブリックメソッド
*/
/**
* グラフメタデータをストレージに保存
* シャットダウン時などに呼び出される
*/
saveGraph(): Promise<void>;
/**
* 最近のアクティビティを取得
* ノードを作成時刻の降順でソートして返す
*/
private getRecentActivity;
/**
* エラータイプ別インデックスの構築
* すべての問題ノードをスキャンしてエラータイプ別に分類
* エラータイプが不明な場合は'other'カテゴリに分類
*/
private buildErrorTypeIndex;
/**
* パフォーマンス最適化用インデックスを構築
* ノードタイプ別、エッジ関係、親子関係のインデックスを作成
*/
private buildPerformanceIndexes;
/**
* ノードが追加された時のインデックス更新
*/
private updateIndexesForNewNode;
/**
* エッジが追加された時のインデックス更新
*/
private updateIndexesForNewEdge;
getGraph(): DebugGraph;
}
//# sourceMappingURL=GraphService.d.ts.map