UNPKG

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
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