taskflow-ai
Version:
TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具
138 lines (137 loc) • 3.18 kB
TypeScript
/**
* 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;
}