UNPKG

taskflow-ai

Version:

TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具

138 lines (137 loc) 3.18 kB
/** * MCP 服务错误处理器 * 提供统一的错误处理、日志记录和用户反馈机制 */ import { Logger } from '../infra/logger'; /** * MCP 错误类型枚举 */ export declare enum MCPErrorType { CONNECTION_FAILED = "CONNECTION_FAILED", PROTOCOL_ERROR = "PROTOCOL_ERROR", TIMEOUT = "TIMEOUT", CONFIG_INVALID = "CONFIG_INVALID", CONFIG_MISSING = "CONFIG_MISSING", ENV_VAR_MISSING = "ENV_VAR_MISSING", API_KEY_INVALID = "API_KEY_INVALID", API_RATE_LIMIT = "API_RATE_LIMIT", API_QUOTA_EXCEEDED = "API_QUOTA_EXCEEDED", API_SERVICE_UNAVAILABLE = "API_SERVICE_UNAVAILABLE", INVALID_REQUEST = "INVALID_REQUEST", RESOURCE_NOT_FOUND = "RESOURCE_NOT_FOUND", PERMISSION_DENIED = "PERMISSION_DENIED", INTERNAL_ERROR = "INTERNAL_ERROR", MEMORY_ERROR = "MEMORY_ERROR", DISK_SPACE_ERROR = "DISK_SPACE_ERROR" } /** * MCP 错误严重级别 */ export declare enum MCPErrorSeverity { LOW = "low", MEDIUM = "medium", HIGH = "high", CRITICAL = "critical" } /** * MCP 错误接口 */ export interface MCPError { type: MCPErrorType; severity: MCPErrorSeverity; message: string; details?: unknown; timestamp: Date; requestId?: string; userId?: string; context?: Record<string, unknown>; stack?: string; } /** * 错误恢复策略 */ export interface ErrorRecoveryStrategy { canRecover: boolean; retryable: boolean; maxRetries?: number; retryDelay?: number; fallbackAction?: () => Promise<unknown>; userAction?: string; } /** * 用户友好的错误消息 */ export interface UserFriendlyError { title: string; message: string; suggestion: string; actionRequired: boolean; helpUrl?: string; } /** * MCP 错误处理器类 */ export declare class MCPErrorHandler { private logger; private errorCounts; private lastErrors; private maxErrorHistory; constructor(logger: Logger); /** * 处理错误 */ handleError(error: Error | MCPError, context?: Record<string, unknown>): MCPError; /** * 获取错误恢复策略 */ getRecoveryStrategy(error: MCPError): ErrorRecoveryStrategy; /** * 生成用户友好的错误消息 */ generateUserFriendlyError(error: MCPError): UserFriendlyError; /** * 获取错误统计信息 */ getErrorStats(): { totalErrors: number; errorsByType: Record<MCPErrorType, number>; recentErrors: MCPError[]; errorRate: number; }; /** * 清除错误历史 */ clearErrorHistory(): void; /** * 检查是否为 MCP 错误 */ private isMCPError; /** * 转换为 MCP 错误 */ private convertToMCPError; /** * 记录错误 */ private recordError; /** * 记录错误日志 */ private logError; /** * 更新错误统计 */ private updateErrorStats; /** * 获取日志级别 */ private getLogLevel; /** * 计算错误率 */ private calculateErrorRate; /** * 切换到备用模型 */ private switchToFallbackModel; }