/**
 * Базовый класс ошибок MCP с контекстом операции
 */
export class McpError extends Error {
    code;
    details;
    constructor(code, message, details) {
        super(message);
        this.code = code;
        this.name = 'McpError';
        this.details = details;
    }
    toJSON() {
        return {
            code: this.code,
            message: this.message,
            details: this.details
        };
    }
}
/**
 * Ошибка подтверждения операции
 */
export class ConfirmationRequiredError extends McpError {
    constructor(operation, resource, description) {
        super('CONFIRMATION_REQUIRED', `Требуется подтверждение для операции "${operation}" с ресурсом "${resource}"`, {
            operation,
            cause: { description }
        });
    }
}
/**
 * Ошибка валидации параметров
 */
export class ValidationError extends McpError {
    constructor(field, message) {
        super('VALIDATION_ERROR', `Ошибка валидации поля "${field}": ${message}`, {
            cause: { field }
        });
    }
}
/**
 * Ошибка аутентификации
 */
export class AuthError extends McpError {
    constructor(message) {
        super('AUTH_ERROR', `Ошибка аутентификации: ${message}`);
    }
}
/**
 * Ошибка API
 */
export class ApiConnectionError extends McpError {
    constructor(resourceType, cause) {
        super('API_CONNECTION_ERROR', `Не удалось подключиться к SimpleOne API для операции с "${resourceType}"`, {
            operation: 'api_call',
            resourceType,
            cause
        });
    }
}
/**
 * Создаёт McpError из неизвестной ошибки
 */
export function toMcpError(error, context) {
    if (error instanceof McpError) {
        return error;
    }
    if (error instanceof Error) {
        return new McpError('UNKNOWN_ERROR', error.message, { ...context, cause: error });
    }
    return new McpError('UNKNOWN_ERROR', 'Произошла неизвестная ошибка', context);
}
//# sourceMappingURL=errors.js.map