solver-sdk 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/projects-api.js +4 -6
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +13 -10
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/constants/websocket-events.constants.js +14 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +18 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/cjs/utils/connection-state-manager.js +133 -0
- package/dist/cjs/utils/connection-state-manager.js.map +1 -0
- package/dist/cjs/utils/logger.js +106 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/ping-pong-manager.js +306 -0
- package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
- package/dist/cjs/utils/session-manager.js +114 -0
- package/dist/cjs/utils/session-manager.js.map +1 -0
- package/dist/cjs/ws/base-ws-client.js +286 -0
- package/dist/cjs/ws/base-ws-client.js.map +1 -0
- package/dist/cjs/ws/dependencies-ws-client.js +11 -0
- package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
- package/dist/cjs/ws/diagnostics-service.js +170 -0
- package/dist/cjs/ws/diagnostics-service.js.map +1 -0
- package/dist/cjs/ws/indexing-ws-client.js +223 -0
- package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
- package/dist/cjs/ws/notifications-ws-client.js +12 -0
- package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
- package/dist/cjs/ws/reasoning-ws-client.js +330 -0
- package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
- package/dist/esm/api/projects-api.js +4 -6
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +6 -3
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/constants/websocket-events.constants.js +13 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +15 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/esm/utils/connection-state-manager.js +129 -0
- package/dist/esm/utils/connection-state-manager.js.map +1 -0
- package/dist/esm/utils/logger.js +101 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/ping-pong-manager.js +302 -0
- package/dist/esm/utils/ping-pong-manager.js.map +1 -0
- package/dist/esm/utils/session-manager.js +109 -0
- package/dist/esm/utils/session-manager.js.map +1 -0
- package/dist/esm/ws/base-ws-client.js +282 -0
- package/dist/esm/ws/base-ws-client.js.map +1 -0
- package/dist/esm/ws/dependencies-ws-client.js +7 -0
- package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
- package/dist/esm/ws/diagnostics-service.js +166 -0
- package/dist/esm/ws/diagnostics-service.js.map +1 -0
- package/dist/esm/ws/indexing-ws-client.js +219 -0
- package/dist/esm/ws/indexing-ws-client.js.map +1 -0
- package/dist/esm/ws/notifications-ws-client.js +8 -0
- package/dist/esm/ws/notifications-ws-client.js.map +1 -0
- package/dist/esm/ws/reasoning-ws-client.js +326 -0
- package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +2 -1
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/constants/websocket-events.constants.d.ts +12 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +14 -0
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
- package/dist/types/utils/connection-state-manager.d.ts +94 -0
- package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +62 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/ping-pong-manager.d.ts +118 -0
- package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
- package/dist/types/utils/session-manager.d.ts +98 -0
- package/dist/types/utils/session-manager.d.ts.map +1 -0
- package/dist/types/ws/base-ws-client.d.ts +119 -0
- package/dist/types/ws/base-ws-client.d.ts.map +1 -0
- package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
- package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
- package/dist/types/ws/diagnostics-service.d.ts +93 -0
- package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
- package/dist/types/ws/indexing-ws-client.d.ts +78 -0
- package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
- package/dist/types/ws/notifications-ws-client.d.ts +5 -0
- package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
- package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
- package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
- package/docs/AUTHENTICATION.md +31 -127
- package/docs/WEBSOCKET.md +51 -211
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
|
|
2
|
+
import { WebSocketClient } from '../utils/websocket-client.js';
|
|
3
|
+
import { SessionManager } from '../utils/session-manager.js';
|
|
4
|
+
import { PingPongManager } from '../utils/ping-pong-manager.js';
|
|
5
|
+
import { ConnectionStateManager } from '../utils/connection-state-manager.js';
|
|
6
|
+
import { ConnectionDiagnostics, PingPongStats } from '../interfaces/websocket/stats.interfaces.js';
|
|
7
|
+
import { Logger } from '../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Опции для сервиса диагностики
|
|
10
|
+
*/
|
|
11
|
+
export interface DiagnosticsServiceOptions {
|
|
12
|
+
/** Интервал проверки здоровья соединений в миллисекундах */
|
|
13
|
+
healthCheckInterval?: number;
|
|
14
|
+
/** Логгер для вывода сообщений */
|
|
15
|
+
logger?: Logger;
|
|
16
|
+
/** Менеджер сессий */
|
|
17
|
+
sessionManager?: SessionManager;
|
|
18
|
+
/** Менеджер ping/pong */
|
|
19
|
+
pingPongManager?: PingPongManager;
|
|
20
|
+
/** Менеджер состояния подключения */
|
|
21
|
+
connectionStateManager?: ConnectionStateManager;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Сервис для диагностики WebSocket соединений
|
|
25
|
+
*/
|
|
26
|
+
export declare class DiagnosticsService {
|
|
27
|
+
/** Интервал проверки здоровья соединений в миллисекундах */
|
|
28
|
+
private readonly healthCheckInterval;
|
|
29
|
+
/** Логгер для вывода сообщений */
|
|
30
|
+
private readonly logger;
|
|
31
|
+
/** Менеджер сессий */
|
|
32
|
+
private readonly sessionManager;
|
|
33
|
+
/** Менеджер ping/pong */
|
|
34
|
+
private readonly pingPongManager;
|
|
35
|
+
/** Менеджер состояния подключения */
|
|
36
|
+
private readonly connectionStateManager;
|
|
37
|
+
/** Таймер для проверки здоровья соединений */
|
|
38
|
+
private healthCheckTimer;
|
|
39
|
+
/** Клиенты WebSocket по namespace */
|
|
40
|
+
private readonly clients;
|
|
41
|
+
/**
|
|
42
|
+
* Создает новый сервис диагностики
|
|
43
|
+
* @param {DiagnosticsServiceOptions} options Опции сервиса
|
|
44
|
+
*/
|
|
45
|
+
constructor(options?: DiagnosticsServiceOptions);
|
|
46
|
+
/**
|
|
47
|
+
* Регистрирует WebSocket клиент для мониторинга
|
|
48
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
49
|
+
* @param {WebSocketClient} client WebSocket клиент
|
|
50
|
+
*/
|
|
51
|
+
registerClient(namespace: WebSocketNamespace, client: WebSocketClient): void;
|
|
52
|
+
/**
|
|
53
|
+
* Удаляет регистрацию WebSocket клиента
|
|
54
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
55
|
+
*/
|
|
56
|
+
unregisterClient(namespace: WebSocketNamespace): void;
|
|
57
|
+
/**
|
|
58
|
+
* Запускает периодическую проверку здоровья соединений
|
|
59
|
+
* @returns {boolean} true, если проверка успешно запущена
|
|
60
|
+
*/
|
|
61
|
+
startHealthCheck(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Останавливает периодическую проверку здоровья соединений
|
|
64
|
+
*/
|
|
65
|
+
stopHealthCheck(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Выполняет проверку здоровья соединений
|
|
68
|
+
*/
|
|
69
|
+
private performHealthCheck;
|
|
70
|
+
/**
|
|
71
|
+
* Выполняет диагностику соединения
|
|
72
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
73
|
+
* @returns {ConnectionDiagnostics} Диагностическая информация
|
|
74
|
+
*/
|
|
75
|
+
diagnoseConnection(namespace: WebSocketNamespace): ConnectionDiagnostics;
|
|
76
|
+
/**
|
|
77
|
+
* Выполняет диагностику всех соединений
|
|
78
|
+
* @returns {Record<string, ConnectionDiagnostics>} Диагностическая информация по всем соединениям
|
|
79
|
+
*/
|
|
80
|
+
diagnoseAllConnections(): Record<string, ConnectionDiagnostics>;
|
|
81
|
+
/**
|
|
82
|
+
* Получает статистику ping/pong для указанного пространства имен
|
|
83
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
84
|
+
* @returns {PingPongStats | null} Статистика ping/pong
|
|
85
|
+
*/
|
|
86
|
+
getPingStats(namespace: WebSocketNamespace): PingPongStats | null;
|
|
87
|
+
/**
|
|
88
|
+
* Возвращает функцию-обработчик для pong-ответов, которая рассчитывает RTT
|
|
89
|
+
* @returns {(data: any) => void} Функция-обработчик
|
|
90
|
+
*/
|
|
91
|
+
getPongHandler(): (data: any) => void;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=diagnostics-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-service.d.ts","sourceRoot":"","sources":["../../../src/ws/diagnostics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACnG,OAAO,EAAE,MAAM,EAAyB,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sBAAsB;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,yBAAyB;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,qCAAqC;IACrC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAElD,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAEhE,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;IAE/E;;;OAGG;gBACS,OAAO,GAAE,yBAA8B;IAQnD;;;;OAIG;IACI,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAOnF;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAK5D;;;OAGG;IACI,gBAAgB,IAAI,OAAO;IAalC;;OAEG;IACI,eAAe,IAAI,IAAI;IAQ9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,qBAAqB;IA+B/E;;;OAGG;IACI,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAWtE;;;;OAIG;IACI,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,aAAa,GAAG,IAAI;IAIxE;;;OAGG;IACI,cAAc,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;CAU7C"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { BaseWebSocketClient, BaseWebSocketClientOptions } from './base-ws-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Опции WebSocket клиента для индексации
|
|
4
|
+
*/
|
|
5
|
+
export interface IndexingWebSocketClientOptions extends BaseWebSocketClientOptions {
|
|
6
|
+
/** ID проекта */
|
|
7
|
+
projectId?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* WebSocket клиент для пространства имен индексации
|
|
11
|
+
*/
|
|
12
|
+
export declare class IndexingWebSocketClient extends BaseWebSocketClient {
|
|
13
|
+
/** ID активного проекта */
|
|
14
|
+
private activeProjectId;
|
|
15
|
+
/**
|
|
16
|
+
* Создает новый WebSocket клиент для индексации
|
|
17
|
+
* @param {string} baseURL Базовый URL API
|
|
18
|
+
* @param {IndexingWebSocketClientOptions} options Опции клиента
|
|
19
|
+
*/
|
|
20
|
+
constructor(baseURL: string, options?: IndexingWebSocketClientOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Подключается к серверу WebSocket
|
|
23
|
+
* @param {boolean} autoJoin Автоматически присоединиться к проекту
|
|
24
|
+
* @returns {Promise<boolean>} Успешность подключения
|
|
25
|
+
*/
|
|
26
|
+
connectToIndexing(autoJoin?: boolean): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Присоединяется к проекту
|
|
29
|
+
* @param {string} projectId ID проекта
|
|
30
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
31
|
+
*/
|
|
32
|
+
joinProject(projectId: string): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Запускает процесс индексации проекта
|
|
35
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
36
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
37
|
+
*/
|
|
38
|
+
startIndexing(projectId?: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Останавливает процесс индексации проекта
|
|
41
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
42
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
43
|
+
*/
|
|
44
|
+
stopIndexing(projectId?: string): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Получает статус индексации проекта
|
|
47
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
48
|
+
* @returns {Promise<any>} Статус индексации проекта
|
|
49
|
+
*/
|
|
50
|
+
getIndexingStatus(projectId?: string): Promise<any>;
|
|
51
|
+
/**
|
|
52
|
+
* Устанавливает обработчик для события завершения индексации
|
|
53
|
+
* @param {Function} handler Обработчик события
|
|
54
|
+
*/
|
|
55
|
+
onIndexingComplete(handler: (data: any) => void): void;
|
|
56
|
+
/**
|
|
57
|
+
* Устанавливает обработчик для события индексации файла
|
|
58
|
+
* @param {Function} handler Обработчик события
|
|
59
|
+
*/
|
|
60
|
+
onFileIndexed(handler: (data: any) => void): void;
|
|
61
|
+
/**
|
|
62
|
+
* Устанавливает обработчик для события ошибки индексации
|
|
63
|
+
* @param {Function} handler Обработчик события
|
|
64
|
+
*/
|
|
65
|
+
onIndexingError(handler: (data: any) => void): void;
|
|
66
|
+
/**
|
|
67
|
+
* Получает текущий ID активного проекта
|
|
68
|
+
* @returns {string | null} ID активного проекта или null
|
|
69
|
+
*/
|
|
70
|
+
getActiveProjectId(): string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Устанавливает ID активного проекта
|
|
73
|
+
* @param {string} projectId ID проекта
|
|
74
|
+
* @returns {boolean} Успешность установки
|
|
75
|
+
*/
|
|
76
|
+
setActiveProjectId(projectId: string): boolean;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=indexing-ws-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexing-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/indexing-ws-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGtF;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,mBAAmB;IAC9D,2BAA2B;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAE9C;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,8BAAmC;IAOzE;;;;OAIG;IACU,iBAAiB,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAiD1E;;;;OAIG;IACU,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B7D;;;;OAIG;IACU,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BhE;;;;OAIG;IACU,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B/D;;;;OAIG;IACU,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBhE;;;OAGG;IACI,kBAAkB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI7D;;;OAGG;IACI,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD;;;OAGG;IACI,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACI,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAI1C;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAWtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/notifications-ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,qBAAa,qBAAsB,SAAQ,mBAAmB;gBAChD,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK;CAI1C"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { BaseWebSocketClient, BaseWebSocketClientOptions } from './base-ws-client.js';
|
|
2
|
+
import { AnthropicStreamCallbacks } from '../interfaces/websocket/callbacks.interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Опции WebSocket клиента для рассуждений
|
|
5
|
+
*/
|
|
6
|
+
export interface ReasoningWebSocketClientOptions extends BaseWebSocketClientOptions {
|
|
7
|
+
/** ID рассуждения */
|
|
8
|
+
reasoningId?: string;
|
|
9
|
+
/** Обработчики для событий Anthropic Stream */
|
|
10
|
+
callbacks?: AnthropicStreamCallbacks;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* WebSocket клиент для пространства имен рассуждений
|
|
14
|
+
*/
|
|
15
|
+
export declare class ReasoningWebSocketClient extends BaseWebSocketClient {
|
|
16
|
+
/** ID активного рассуждения */
|
|
17
|
+
private activeReasoningId;
|
|
18
|
+
/** Обработчики для событий Anthropic Stream */
|
|
19
|
+
private callbacks;
|
|
20
|
+
/** Обработчики событий мышления */
|
|
21
|
+
private thinkingEventHandlers;
|
|
22
|
+
/**
|
|
23
|
+
* Создает новый WebSocket клиент для рассуждений
|
|
24
|
+
* @param {string} baseURL Базовый URL API
|
|
25
|
+
* @param {ReasoningWebSocketClientOptions} options Опции клиента
|
|
26
|
+
*/
|
|
27
|
+
constructor(baseURL: string, options?: ReasoningWebSocketClientOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Подключается к серверу WebSocket
|
|
30
|
+
* @param {boolean} autoJoin Автоматически присоединиться к рассуждению
|
|
31
|
+
* @returns {Promise<boolean>} Успешность подключения
|
|
32
|
+
*/
|
|
33
|
+
connectToReasoning(autoJoin?: boolean): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Присоединяется к сессии рассуждения
|
|
36
|
+
* @param {string} reasoningId ID сессии рассуждения
|
|
37
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
38
|
+
*/
|
|
39
|
+
joinReasoning(reasoningId: string): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Запускает рассуждение
|
|
42
|
+
* @param {string} reasoningId ID сессии рассуждения
|
|
43
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
44
|
+
*/
|
|
45
|
+
startReasoning(reasoningId?: string): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Создает новое рассуждение на сервере
|
|
48
|
+
* @returns {Promise<string>} ID нового рассуждения
|
|
49
|
+
*/
|
|
50
|
+
createNewReasoning(): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Подключается к сессии thinking с расширенными возможностями
|
|
53
|
+
* @param {string} [reasoningId="system"] Идентификатор рассуждения
|
|
54
|
+
* @param {(data: any) => void} [thinkingHandler] Обработчик событий мышления
|
|
55
|
+
* @returns {Promise<string>} Идентификатор сессии рассуждения
|
|
56
|
+
*/
|
|
57
|
+
connectToThinkingSession(reasoningId?: string, thinkingHandler?: (data: any) => void): Promise<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Настраивает обработчики событий для стрима от Anthropic
|
|
60
|
+
*/
|
|
61
|
+
setupAnthropicStreamHandlers(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Подписывается на события мышления
|
|
64
|
+
* @param {string} reasoningId Идентификатор рассуждения
|
|
65
|
+
* @param {Function} handler Обработчик событий мышления
|
|
66
|
+
* @returns {void}
|
|
67
|
+
*/
|
|
68
|
+
subscribeToThinking(reasoningId: string, handler: (data: any) => void): void;
|
|
69
|
+
/**
|
|
70
|
+
* Отписывается от событий мышления
|
|
71
|
+
* @param {string} reasoningId Идентификатор рассуждения
|
|
72
|
+
* @returns {void}
|
|
73
|
+
*/
|
|
74
|
+
unsubscribeFromThinking(reasoningId: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Получает текущий ID активного рассуждения
|
|
77
|
+
* @returns {string | null} ID активного рассуждения или null
|
|
78
|
+
*/
|
|
79
|
+
getActiveReasoningId(): string | null;
|
|
80
|
+
/**
|
|
81
|
+
* Устанавливает ID активного рассуждения
|
|
82
|
+
* @param {string} reasoningId ID рассуждения
|
|
83
|
+
* @returns {boolean} Успешность установки
|
|
84
|
+
*/
|
|
85
|
+
setActiveReasoningId(reasoningId: string): boolean;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=reasoning-ws-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/reasoning-ws-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAG3F;;GAEG;AACH,MAAM,WAAW,+BAAgC,SAAQ,0BAA0B;IACjF,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,+BAA+B;IAC/B,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,+CAA+C;IAC/C,OAAO,CAAC,SAAS,CAA2B;IAE5C,mCAAmC;IACnC,OAAO,CAAC,qBAAqB,CAA+C;IAE5E;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,+BAAoC;IAU1E;;;;OAIG;IACU,kBAAkB,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IA+C3E;;;;OAIG;IACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BjE;;;;OAIG;IACU,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BnE;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBlD;;;;;OAKG;IACU,wBAAwB,CACnC,WAAW,GAAE,MAAiB,EAC9B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC;IA6DlB;;OAEG;IACI,4BAA4B,IAAI,IAAI;IAqE3C;;;;;OAKG;IACI,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAanF;;;;OAIG;IACI,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAgBzD;;;OAGG;IACI,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CAW1D"}
|
package/docs/AUTHENTICATION.md
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
# Аутентификация в Solver SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Этот документ описывает методы аутентификации в Solver SDK.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Аутентификация HTTP API
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- [WebSocket аутентификация](#websocket-аутентификация)
|
|
9
|
-
- [Тестовая аутентификация](#тестовая-аутентификация)
|
|
10
|
-
- [Обработка ошибок аутентификации](#обработка-ошибок-аутентификации)
|
|
7
|
+
SDK поддерживает два основных метода аутентификации:
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
SDK поддерживает два основных метода аутентификации для HTTP запросов:
|
|
15
|
-
|
|
16
|
-
### 1. API ключ
|
|
9
|
+
### API ключ
|
|
17
10
|
|
|
18
11
|
```javascript
|
|
19
12
|
const sdk = new CodeSolverSDK({
|
|
@@ -22,158 +15,69 @@ const sdk = new CodeSolverSDK({
|
|
|
22
15
|
});
|
|
23
16
|
```
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
### 2. Пользовательские заголовки
|
|
18
|
+
### Пользовательские заголовки
|
|
28
19
|
|
|
29
20
|
```javascript
|
|
30
21
|
const sdk = new CodeSolverSDK({
|
|
31
22
|
baseURL: 'https://api.example.com',
|
|
32
23
|
headers: {
|
|
33
|
-
'Authorization': 'Bearer your-jwt-token'
|
|
34
|
-
'X-Custom-Header': 'Custom-Value'
|
|
24
|
+
'Authorization': 'Bearer your-jwt-token'
|
|
35
25
|
}
|
|
36
26
|
});
|
|
37
27
|
```
|
|
38
28
|
|
|
39
|
-
## WebSocket
|
|
29
|
+
## Аутентификация WebSocket
|
|
40
30
|
|
|
41
|
-
|
|
31
|
+
SDK автоматически использует API-ключ для аутентификации WebSocket соединений. Отдельных действий не требуется.
|
|
42
32
|
|
|
43
|
-
|
|
33
|
+
Для некоторых методов можно указать дополнительный токен авторизации:
|
|
44
34
|
|
|
45
35
|
```javascript
|
|
46
|
-
//
|
|
47
|
-
const sdk = new CodeSolverSDK({
|
|
48
|
-
baseURL: 'https://api.example.com',
|
|
49
|
-
apiKey: 'your-api-key'
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// 2. Опции для streamChatWithThinking
|
|
36
|
+
// Для потоковой передачи чата с мышлением
|
|
53
37
|
const options = {
|
|
54
38
|
model: 'claude-3-7-sonnet-20240229',
|
|
55
39
|
thinking: true,
|
|
56
|
-
authToken: 'your-auth-token' //
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// 3. Отправка запроса
|
|
60
|
-
const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent);
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Параметр `authToken` используется для аутентификации WebSocket соединений и передается в событии `authenticate`.
|
|
64
|
-
|
|
65
|
-
### Низкоуровневая WebSocket аутентификация
|
|
66
|
-
|
|
67
|
-
Если вы работаете напрямую с WebSocket клиентом, вы можете настроить аутентификацию следующим образом:
|
|
68
|
-
|
|
69
|
-
```javascript
|
|
70
|
-
// Получаем WebSocket клиент
|
|
71
|
-
const wsClient = sdk.getWebSocketClient();
|
|
72
|
-
|
|
73
|
-
// Настраиваем опции подключения с аутентификацией
|
|
74
|
-
const connectionOptions = {
|
|
75
|
-
namespace: 'reasoning',
|
|
76
|
-
authToken: 'your-auth-token',
|
|
77
|
-
query: {
|
|
78
|
-
reasoningId: 'reasoning-123'
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// Подключаемся к WebSocket серверу
|
|
83
|
-
await wsClient.connect(connectionOptions);
|
|
84
|
-
|
|
85
|
-
// Проверяем статус аутентификации
|
|
86
|
-
const isAuthenticated = wsClient.isAuthenticated();
|
|
87
|
-
console.log('Аутентификация WebSocket:', isAuthenticated);
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Тестовая аутентификация
|
|
91
|
-
|
|
92
|
-
Для тестовых сред SDK поддерживает упрощенную аутентификацию:
|
|
93
|
-
|
|
94
|
-
```javascript
|
|
95
|
-
const options = {
|
|
96
|
-
// Другие параметры...
|
|
97
|
-
authToken: 'test-token'
|
|
40
|
+
authToken: 'your-auth-token' // Опциональный параметр
|
|
98
41
|
};
|
|
99
42
|
|
|
43
|
+
// Запрос с аутентификацией
|
|
100
44
|
const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent);
|
|
101
45
|
```
|
|
102
46
|
|
|
103
|
-
> **Важно**: Начиная с версии 1.7.4, устаревший параметр `testToken` удален в пользу унифицированного параметра `authToken`.
|
|
104
|
-
|
|
105
47
|
## Обработка ошибок аутентификации
|
|
106
48
|
|
|
107
|
-
SDK предоставляет механизм обработки ошибок аутентификации:
|
|
108
|
-
|
|
109
49
|
```javascript
|
|
110
50
|
// Обработчик событий WebSocket
|
|
111
51
|
const handleEvent = (eventType, data) => {
|
|
112
52
|
if (eventType === 'authentication_error') {
|
|
113
53
|
console.error('Ошибка аутентификации:', data.message);
|
|
114
54
|
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
// Запросить новый токен
|
|
119
|
-
break;
|
|
120
|
-
case 'INVALID_TOKEN':
|
|
121
|
-
// Перенаправить на страницу входа
|
|
122
|
-
break;
|
|
123
|
-
default:
|
|
124
|
-
// Общая обработка ошибок
|
|
125
|
-
break;
|
|
55
|
+
// Реакция на ошибку аутентификации
|
|
56
|
+
if (data.code === 'TOKEN_EXPIRED') {
|
|
57
|
+
// Получение нового токена
|
|
126
58
|
}
|
|
127
59
|
}
|
|
128
60
|
};
|
|
129
61
|
```
|
|
130
62
|
|
|
131
|
-
|
|
63
|
+
## Пример использования
|
|
132
64
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
| `FORBIDDEN` | Доступ запрещен |
|
|
65
|
+
```javascript
|
|
66
|
+
// Создание экземпляра SDK
|
|
67
|
+
const sdk = new CodeSolverSDK({
|
|
68
|
+
baseURL: 'https://api.example.com',
|
|
69
|
+
apiKey: 'your-api-key'
|
|
70
|
+
});
|
|
140
71
|
|
|
141
|
-
|
|
72
|
+
// Создание рассуждения
|
|
73
|
+
const reasoning = await sdk.reasoning.createReasoning({
|
|
74
|
+
projectId: 'project-id',
|
|
75
|
+
query: 'Объясни этот проект'
|
|
76
|
+
});
|
|
142
77
|
|
|
143
|
-
|
|
78
|
+
// Подключение к WebSocket (аутентификация выполняется автоматически)
|
|
79
|
+
await sdk.reasoning.connectWebSocket(reasoning.id);
|
|
144
80
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
async function exampleWithAuthentication() {
|
|
149
|
-
// 1. Создаем экземпляр SDK
|
|
150
|
-
const sdk = new CodeSolverSDK({
|
|
151
|
-
baseURL: 'https://api.example.com',
|
|
152
|
-
apiKey: 'your-api-key'
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
// 2. Создаем рассуждение
|
|
156
|
-
const reasoning = await sdk.reasoning.createReasoning({
|
|
157
|
-
projectId: 'project-id',
|
|
158
|
-
query: 'Объясни этот проект'
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// 3. Подключаемся через WebSocket с аутентификацией
|
|
162
|
-
await sdk.reasoning.connectWebSocket({
|
|
163
|
-
reasoningId: reasoning.id,
|
|
164
|
-
authToken: 'your-auth-token'
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
// 4. Настраиваем обработчики событий
|
|
168
|
-
sdk.reasoning.on('authentication_error', (data) => {
|
|
169
|
-
console.error('Ошибка аутентификации:', data);
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
sdk.reasoning.on('authenticated', (data) => {
|
|
173
|
-
console.log('Успешная аутентификация:', data);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
// 5. Отправляем запрос
|
|
177
|
-
await sdk.reasoning.startReasoning(reasoning.id);
|
|
178
|
-
}
|
|
81
|
+
// Запуск процесса
|
|
82
|
+
await sdk.reasoning.startReasoning(reasoning.id);
|
|
179
83
|
```
|