solver-sdk
Version:
SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system
73 lines • 3.34 kB
JavaScript
/**
* 🛑 Миксин для добавления методов отмены в ChatApi
*/
export class ChatCancelMethods {
constructor(httpClient) {
this.httpClient = httpClient;
}
/**
* 🛑 Отменяет активный чат-запрос
* @param requestId ID запроса для отмены
* @param reason Причина отмены (опционально)
* @returns Результат отмены
*/
async cancelRequest(requestId, reason = 'user_cancel') {
if (!requestId) {
throw new Error('RequestId обязателен для отмены');
}
try {
const response = await this.httpClient.delete(`/api/v1/chat/cancel/${requestId}`, { reason });
return response;
}
catch (error) {
throw new Error(`Ошибка отмены запроса ${requestId}: ${error instanceof Error ? error.message : String(error)}`);
}
}
/**
* 📊 Получает статистику активных потоков
* @returns Статистика активных чат-потоков
*/
async getStreamsStats() {
try {
const response = await this.httpClient.post('/api/v1/chat/streams/stats');
return response;
}
catch (error) {
throw new Error(`Ошибка получения статистики потоков: ${error instanceof Error ? error.message : String(error)}`);
}
}
/**
* 🧹 Очищает зависшие потоки
* @param timeoutMs Таймаут для определения зависших потоков (по умолчанию 5 минут)
* @returns Результат очистки
*/
async cleanupStaleStreams(timeoutMs = 300000) {
try {
const response = await this.httpClient.post('/api/v1/chat/streams/cleanup', {
timeoutMs
});
return response;
}
catch (error) {
throw new Error(`Ошибка очистки зависших потоков: ${error instanceof Error ? error.message : String(error)}`);
}
}
/**
* 👤 Отменяет все активные потоки текущего пользователя
* @param reason Причина отмены
* @returns Количество отмененных потоков
*/
async cancelUserStreams(reason = 'user_action') {
try {
// Получаем статистику чтобы найти активные потоки пользователя
const stats = await this.getStreamsStats();
// TODO: Нужно реализовать endpoint для отмены всех потоков пользователя
// или получить список requestId для текущего пользователя
throw new Error('Метод cancelUserStreams требует дополнительного API endpoint');
}
catch (error) {
throw new Error(`Ошибка отмены потоков пользователя: ${error instanceof Error ? error.message : String(error)}`);
}
}
}
//# sourceMappingURL=cancel-methods.js.map