solver-sdk 1.0.1

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.
Files changed (167) hide show
  1. package/README.md +248 -0
  2. package/dist/cjs/api/agents-api.js +94 -0
  3. package/dist/cjs/api/agents-api.js.map +1 -0
  4. package/dist/cjs/api/code-modification-api.js +60 -0
  5. package/dist/cjs/api/code-modification-api.js.map +1 -0
  6. package/dist/cjs/api/context-api.js +58 -0
  7. package/dist/cjs/api/context-api.js.map +1 -0
  8. package/dist/cjs/api/projects-api.js +82 -0
  9. package/dist/cjs/api/projects-api.js.map +1 -0
  10. package/dist/cjs/api/reasoning-api.js +73 -0
  11. package/dist/cjs/api/reasoning-api.js.map +1 -0
  12. package/dist/cjs/api/search-api.js +54 -0
  13. package/dist/cjs/api/search-api.js.map +1 -0
  14. package/dist/cjs/code-solver-sdk.js +327 -0
  15. package/dist/cjs/code-solver-sdk.js.map +1 -0
  16. package/dist/cjs/index.js +118 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/interfaces/http-client.js +3 -0
  19. package/dist/cjs/interfaces/http-client.js.map +1 -0
  20. package/dist/cjs/interfaces/sdk-options.js +3 -0
  21. package/dist/cjs/interfaces/sdk-options.js.map +1 -0
  22. package/dist/cjs/models/types.js +17 -0
  23. package/dist/cjs/models/types.js.map +1 -0
  24. package/dist/cjs/utils/code-solver-websocket-client.js +267 -0
  25. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -0
  26. package/dist/cjs/utils/http-client.js +234 -0
  27. package/dist/cjs/utils/http-client.js.map +1 -0
  28. package/dist/cjs/utils/indexing-websocket-client.js +107 -0
  29. package/dist/cjs/utils/indexing-websocket-client.js.map +1 -0
  30. package/dist/cjs/utils/sse-client.js +233 -0
  31. package/dist/cjs/utils/sse-client.js.map +1 -0
  32. package/dist/cjs/utils/websocket-client.js +268 -0
  33. package/dist/cjs/utils/websocket-client.js.map +1 -0
  34. package/dist/esm/api/agents-api.js +90 -0
  35. package/dist/esm/api/agents-api.js.map +1 -0
  36. package/dist/esm/api/code-modification-api.js +56 -0
  37. package/dist/esm/api/code-modification-api.js.map +1 -0
  38. package/dist/esm/api/context-api.js +54 -0
  39. package/dist/esm/api/context-api.js.map +1 -0
  40. package/dist/esm/api/projects-api.js +78 -0
  41. package/dist/esm/api/projects-api.js.map +1 -0
  42. package/dist/esm/api/reasoning-api.js +69 -0
  43. package/dist/esm/api/reasoning-api.js.map +1 -0
  44. package/dist/esm/api/search-api.js +50 -0
  45. package/dist/esm/api/search-api.js.map +1 -0
  46. package/dist/esm/code-solver-sdk.js +323 -0
  47. package/dist/esm/code-solver-sdk.js.map +1 -0
  48. package/dist/esm/index.js +1882 -0
  49. package/dist/esm/index.js.map +1 -0
  50. package/dist/esm/interfaces/http-client.js +2 -0
  51. package/dist/esm/interfaces/http-client.js.map +1 -0
  52. package/dist/esm/interfaces/sdk-options.js +2 -0
  53. package/dist/esm/interfaces/sdk-options.js.map +1 -0
  54. package/dist/esm/models/types.js +14 -0
  55. package/dist/esm/models/types.js.map +1 -0
  56. package/dist/esm/types/api/agents-api.d.ts +141 -0
  57. package/dist/esm/types/api/agents-api.d.ts.map +1 -0
  58. package/dist/esm/types/api/code-modification-api.d.ts +104 -0
  59. package/dist/esm/types/api/code-modification-api.d.ts.map +1 -0
  60. package/dist/esm/types/api/context-api.d.ts +86 -0
  61. package/dist/esm/types/api/context-api.d.ts.map +1 -0
  62. package/dist/esm/types/api/projects-api.d.ts +89 -0
  63. package/dist/esm/types/api/projects-api.d.ts.map +1 -0
  64. package/dist/esm/types/api/reasoning-api.d.ts +130 -0
  65. package/dist/esm/types/api/reasoning-api.d.ts.map +1 -0
  66. package/dist/esm/types/api/search-api.d.ts +92 -0
  67. package/dist/esm/types/api/search-api.d.ts.map +1 -0
  68. package/dist/esm/types/code-solver-sdk.d.ts +145 -0
  69. package/dist/esm/types/code-solver-sdk.d.ts.map +1 -0
  70. package/dist/esm/types/index.d.ts +81 -0
  71. package/dist/esm/types/index.d.ts.map +1 -0
  72. package/dist/esm/types/interfaces/http-client.d.ts +110 -0
  73. package/dist/esm/types/interfaces/http-client.d.ts.map +1 -0
  74. package/dist/esm/types/interfaces/sdk-options.d.ts +34 -0
  75. package/dist/esm/types/interfaces/sdk-options.d.ts.map +1 -0
  76. package/dist/esm/types/models/types.d.ts +139 -0
  77. package/dist/esm/types/models/types.d.ts.map +1 -0
  78. package/dist/esm/types/utils/code-solver-websocket-client.d.ts +138 -0
  79. package/dist/esm/types/utils/code-solver-websocket-client.d.ts.map +1 -0
  80. package/dist/esm/types/utils/http-client.d.ts +85 -0
  81. package/dist/esm/types/utils/http-client.d.ts.map +1 -0
  82. package/dist/esm/types/utils/indexing-websocket-client.d.ts +123 -0
  83. package/dist/esm/types/utils/indexing-websocket-client.d.ts.map +1 -0
  84. package/dist/esm/types/utils/sse-client.d.ts +92 -0
  85. package/dist/esm/types/utils/sse-client.d.ts.map +1 -0
  86. package/dist/esm/types/utils/websocket-client.d.ts +118 -0
  87. package/dist/esm/types/utils/websocket-client.d.ts.map +1 -0
  88. package/dist/esm/utils/code-solver-websocket-client.js +263 -0
  89. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -0
  90. package/dist/esm/utils/http-client.js +227 -0
  91. package/dist/esm/utils/http-client.js.map +1 -0
  92. package/dist/esm/utils/indexing-websocket-client.js +103 -0
  93. package/dist/esm/utils/indexing-websocket-client.js.map +1 -0
  94. package/dist/esm/utils/sse-client.js +229 -0
  95. package/dist/esm/utils/sse-client.js.map +1 -0
  96. package/dist/esm/utils/websocket-client.js +264 -0
  97. package/dist/esm/utils/websocket-client.js.map +1 -0
  98. package/dist/index.d.ts +1599 -0
  99. package/dist/types/api/agents-api.d.ts +141 -0
  100. package/dist/types/api/agents-api.d.ts.map +1 -0
  101. package/dist/types/api/code-modification-api.d.ts +104 -0
  102. package/dist/types/api/code-modification-api.d.ts.map +1 -0
  103. package/dist/types/api/context-api.d.ts +86 -0
  104. package/dist/types/api/context-api.d.ts.map +1 -0
  105. package/dist/types/api/projects-api.d.ts +89 -0
  106. package/dist/types/api/projects-api.d.ts.map +1 -0
  107. package/dist/types/api/reasoning-api.d.ts +130 -0
  108. package/dist/types/api/reasoning-api.d.ts.map +1 -0
  109. package/dist/types/api/search-api.d.ts +92 -0
  110. package/dist/types/api/search-api.d.ts.map +1 -0
  111. package/dist/types/code-solver-sdk.d.ts +145 -0
  112. package/dist/types/code-solver-sdk.d.ts.map +1 -0
  113. package/dist/types/index.d.ts +81 -0
  114. package/dist/types/index.d.ts.map +1 -0
  115. package/dist/types/interfaces/http-client.d.ts +110 -0
  116. package/dist/types/interfaces/http-client.d.ts.map +1 -0
  117. package/dist/types/interfaces/sdk-options.d.ts +34 -0
  118. package/dist/types/interfaces/sdk-options.d.ts.map +1 -0
  119. package/dist/types/models/types.d.ts +139 -0
  120. package/dist/types/models/types.d.ts.map +1 -0
  121. package/dist/types/utils/code-solver-websocket-client.d.ts +138 -0
  122. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -0
  123. package/dist/types/utils/http-client.d.ts +85 -0
  124. package/dist/types/utils/http-client.d.ts.map +1 -0
  125. package/dist/types/utils/indexing-websocket-client.d.ts +123 -0
  126. package/dist/types/utils/indexing-websocket-client.d.ts.map +1 -0
  127. package/dist/types/utils/sse-client.d.ts +92 -0
  128. package/dist/types/utils/sse-client.d.ts.map +1 -0
  129. package/dist/types/utils/websocket-client.d.ts +118 -0
  130. package/dist/types/utils/websocket-client.d.ts.map +1 -0
  131. package/dist/umd/code-solver-sdk.js +1902 -0
  132. package/dist/umd/code-solver-sdk.js.map +1 -0
  133. package/dist/umd/code-solver-sdk.min.js +2 -0
  134. package/dist/umd/code-solver-sdk.min.js.map +1 -0
  135. package/dist/umd/types/api/agents-api.d.ts +141 -0
  136. package/dist/umd/types/api/agents-api.d.ts.map +1 -0
  137. package/dist/umd/types/api/code-modification-api.d.ts +104 -0
  138. package/dist/umd/types/api/code-modification-api.d.ts.map +1 -0
  139. package/dist/umd/types/api/context-api.d.ts +86 -0
  140. package/dist/umd/types/api/context-api.d.ts.map +1 -0
  141. package/dist/umd/types/api/projects-api.d.ts +89 -0
  142. package/dist/umd/types/api/projects-api.d.ts.map +1 -0
  143. package/dist/umd/types/api/reasoning-api.d.ts +130 -0
  144. package/dist/umd/types/api/reasoning-api.d.ts.map +1 -0
  145. package/dist/umd/types/api/search-api.d.ts +92 -0
  146. package/dist/umd/types/api/search-api.d.ts.map +1 -0
  147. package/dist/umd/types/code-solver-sdk.d.ts +145 -0
  148. package/dist/umd/types/code-solver-sdk.d.ts.map +1 -0
  149. package/dist/umd/types/index.d.ts +81 -0
  150. package/dist/umd/types/index.d.ts.map +1 -0
  151. package/dist/umd/types/interfaces/http-client.d.ts +110 -0
  152. package/dist/umd/types/interfaces/http-client.d.ts.map +1 -0
  153. package/dist/umd/types/interfaces/sdk-options.d.ts +34 -0
  154. package/dist/umd/types/interfaces/sdk-options.d.ts.map +1 -0
  155. package/dist/umd/types/models/types.d.ts +139 -0
  156. package/dist/umd/types/models/types.d.ts.map +1 -0
  157. package/dist/umd/types/utils/code-solver-websocket-client.d.ts +138 -0
  158. package/dist/umd/types/utils/code-solver-websocket-client.d.ts.map +1 -0
  159. package/dist/umd/types/utils/http-client.d.ts +85 -0
  160. package/dist/umd/types/utils/http-client.d.ts.map +1 -0
  161. package/dist/umd/types/utils/indexing-websocket-client.d.ts +123 -0
  162. package/dist/umd/types/utils/indexing-websocket-client.d.ts.map +1 -0
  163. package/dist/umd/types/utils/sse-client.d.ts +92 -0
  164. package/dist/umd/types/utils/sse-client.d.ts.map +1 -0
  165. package/dist/umd/types/utils/websocket-client.d.ts +118 -0
  166. package/dist/umd/types/utils/websocket-client.d.ts.map +1 -0
  167. package/package.json +98 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Опции для WebSocket клиента
3
+ */
4
+ export interface WebSocketClientOptions {
5
+ /**
6
+ * HTTP заголовки для WebSocket соединения
7
+ */
8
+ headers?: Record<string, string>;
9
+ /**
10
+ * Таймаут подключения в миллисекундах
11
+ */
12
+ connectionTimeout?: number;
13
+ /**
14
+ * Протоколы WebSocket
15
+ */
16
+ protocols?: string | string[];
17
+ /**
18
+ * Максимальное количество попыток переподключения
19
+ */
20
+ maxRetries?: number;
21
+ /**
22
+ * Задержка перед попыткой переподключения в миллисекундах
23
+ */
24
+ retryDelay?: number;
25
+ /**
26
+ * Максимальная задержка перед попыткой переподключения
27
+ */
28
+ maxRetryDelay?: number;
29
+ /**
30
+ * Автоматически переподключаться при потере соединения
31
+ */
32
+ autoReconnect?: boolean;
33
+ }
34
+ /**
35
+ * Интерфейс для обработчика события WebSocket
36
+ */
37
+ export interface WebSocketEventHandler {
38
+ (event: any): void;
39
+ }
40
+ /**
41
+ * Базовый класс для WebSocket клиентов
42
+ */
43
+ export declare class WebSocketClient {
44
+ /** URL для подключения */
45
+ protected readonly url: string;
46
+ /** Опции клиента */
47
+ protected readonly options: WebSocketClientOptions;
48
+ /** Экземпляр WebSocket */
49
+ protected webSocket: WebSocket | null;
50
+ /** Счетчик попыток переподключения */
51
+ protected retryCount: number;
52
+ /** Флаг, указывающий, что соединение было закрыто намеренно */
53
+ protected intentionallyClosed: boolean;
54
+ /** Таймер переподключения */
55
+ protected reconnectTimer: any;
56
+ /** Таймер таймаута соединения */
57
+ protected connectionTimeoutTimer: any;
58
+ /** Обработчики событий */
59
+ protected eventHandlers: Record<string, WebSocketEventHandler[]>;
60
+ /** Очередь сообщений для отправки после подключения */
61
+ protected messageQueue: Array<string | ArrayBufferLike | Blob | ArrayBufferView>;
62
+ /** Состояние соединения */
63
+ protected connected: boolean;
64
+ /** Среда выполнения */
65
+ protected readonly isBrowser: boolean;
66
+ /**
67
+ * Создает новый WebSocket клиент
68
+ * @param {string} url URL для подключения
69
+ * @param {WebSocketClientOptions} [options] Опции клиента
70
+ */
71
+ constructor(url: string, options?: WebSocketClientOptions);
72
+ /**
73
+ * Подключается к WebSocket серверу
74
+ * @returns {Promise<void>}
75
+ */
76
+ connect(): Promise<void>;
77
+ /**
78
+ * Переподключается к WebSocket серверу
79
+ * @private
80
+ */
81
+ private reconnect;
82
+ /**
83
+ * Закрывает WebSocket соединение
84
+ * @param {number} [code=1000] Код закрытия
85
+ * @param {string} [reason] Причина закрытия
86
+ */
87
+ close(code?: number, reason?: string): void;
88
+ /**
89
+ * Отправляет сообщение через WebSocket
90
+ * @param {string | object} message Сообщение для отправки
91
+ * @returns {boolean} Успешно ли отправлено сообщение
92
+ */
93
+ send(message: string | object): boolean;
94
+ /**
95
+ * Проверяет, установлено ли соединение
96
+ * @returns {boolean} Установлено ли соединение
97
+ */
98
+ isConnected(): boolean;
99
+ /**
100
+ * Добавляет обработчик события
101
+ * @param {string} eventType Тип события
102
+ * @param {WebSocketEventHandler} handler Обработчик события
103
+ */
104
+ on(eventType: string, handler: WebSocketEventHandler): void;
105
+ /**
106
+ * Удаляет обработчик события
107
+ * @param {string} eventType Тип события
108
+ * @param {WebSocketEventHandler} [handler] Обработчик события (если не указан, удаляются все обработчики)
109
+ */
110
+ off(eventType: string, handler?: WebSocketEventHandler): void;
111
+ /**
112
+ * Вызывает обработчики для указанного события
113
+ * @param {string} eventType Тип события
114
+ * @param {any} data Данные события
115
+ */
116
+ protected dispatchEvent(eventType: string, data: any): void;
117
+ }
118
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../../src/utils/websocket-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,0BAA0B;IAC1B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAE/B,oBAAoB;IACpB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAEnD,0BAA0B;IAC1B,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE7C,sCAAsC;IACtC,SAAS,CAAC,UAAU,SAAK;IAEzB,+DAA+D;IAC/D,SAAS,CAAC,mBAAmB,UAAS;IAEtC,6BAA6B;IAC7B,SAAS,CAAC,cAAc,EAAE,GAAG,CAAQ;IAErC,iCAAiC;IACjC,SAAS,CAAC,sBAAsB,EAAE,GAAG,CAAQ;IAE7C,0BAA0B;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAM;IAEtE,uDAAuD;IACvD,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,eAAe,CAAC,CAAM;IAEtF,2BAA2B;IAC3B,SAAS,CAAC,SAAS,UAAS;IAE5B,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAEtC;;;;OAIG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAgB7D;;;OAGG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4G/B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAuBjB;;;;OAIG;IACI,KAAK,CAAC,IAAI,GAAE,MAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBxD;;;;OAIG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAmB9C;;;OAGG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;OAIG;IACI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAQlE;;;;OAIG;IACI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAmBpE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;CAa5D"}
@@ -0,0 +1,263 @@
1
+ import { WebSocketClient } from './websocket-client.js';
2
+ /**
3
+ * Пространства имен для WebSocket
4
+ */
5
+ export var WebSocketNamespace;
6
+ (function (WebSocketNamespace) {
7
+ /** Пространство имен для рассуждений */
8
+ WebSocketNamespace["REASONING"] = "reasoning";
9
+ /** Пространство имен для индексации */
10
+ WebSocketNamespace["INDEXING"] = "indexing";
11
+ /** Пространство имен для уведомлений */
12
+ WebSocketNamespace["NOTIFICATIONS"] = "notifications";
13
+ })(WebSocketNamespace || (WebSocketNamespace = {}));
14
+ /**
15
+ * WebSocket клиент для работы с Code Solver API
16
+ */
17
+ export class CodeSolverWebSocketClient {
18
+ /**
19
+ * Создает новый WebSocket клиент для Code Solver API
20
+ * @param {string} baseURL Базовый URL API
21
+ * @param {CodeSolverWebSocketOptions} [options] Опции клиента
22
+ */
23
+ constructor(baseURL, options = {}) {
24
+ /** WebSocket клиенты для разных пространств имен */
25
+ this.clients = new Map();
26
+ /** Активная сессия рассуждения */
27
+ this.activeReasoningId = null;
28
+ /** Активная сессия индексации */
29
+ this.activeProjectId = null;
30
+ this.baseURL = baseURL.replace(/^http/, 'ws');
31
+ this.options = {
32
+ ...options,
33
+ headers: {
34
+ ...(options.headers || {}),
35
+ ...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
36
+ }
37
+ };
38
+ }
39
+ /**
40
+ * Подключается к пространству имен WebSocket
41
+ * @param {WebSocketNamespace} namespace Пространство имен
42
+ * @param {Record<string, any>} [params] Параметры подключения
43
+ * @returns {Promise<WebSocketClient>} WebSocket клиент
44
+ */
45
+ async connect(namespace, params = {}) {
46
+ // Если клиент уже существует, возвращаем его
47
+ if (this.clients.has(namespace)) {
48
+ const client = this.clients.get(namespace);
49
+ // Если клиент уже подключен, возвращаем его
50
+ if (client.isConnected()) {
51
+ return client;
52
+ }
53
+ }
54
+ // Формируем URL для подключения
55
+ const url = new URL(`${this.baseURL}/${namespace}`);
56
+ // Добавляем параметры к URL
57
+ Object.entries(params).forEach(([key, value]) => {
58
+ url.searchParams.append(key, String(value));
59
+ });
60
+ // Создаем новый WebSocket клиент
61
+ const client = new WebSocketClient(url.toString(), this.options);
62
+ // Подключаемся к серверу
63
+ await client.connect();
64
+ // Сохраняем клиент
65
+ this.clients.set(namespace, client);
66
+ return client;
67
+ }
68
+ /**
69
+ * Подключается к сессии рассуждения
70
+ * @param {string} [reasoningId] Идентификатор рассуждения
71
+ * @returns {Promise<void>}
72
+ */
73
+ async connectToReasoning(reasoningId) {
74
+ // Если reasoningId не указан, используем активный
75
+ const id = reasoningId || this.activeReasoningId;
76
+ if (!id) {
77
+ throw new Error('Необходимо указать идентификатор рассуждения');
78
+ }
79
+ // Сохраняем активный идентификатор рассуждения
80
+ this.activeReasoningId = id;
81
+ // Подключаемся к пространству имен
82
+ await this.connect(WebSocketNamespace.REASONING, { reasoningId: id });
83
+ }
84
+ /**
85
+ * Подключается к сессии индексации проекта
86
+ * @param {string} [projectId] Идентификатор проекта
87
+ * @returns {Promise<void>}
88
+ */
89
+ async connectToIndexing(projectId) {
90
+ // Если projectId не указан, используем активный
91
+ const id = projectId || this.activeProjectId;
92
+ if (!id) {
93
+ throw new Error('Необходимо указать идентификатор проекта');
94
+ }
95
+ // Сохраняем активный идентификатор проекта
96
+ this.activeProjectId = id;
97
+ // Подключаемся к пространству имен
98
+ await this.connect(WebSocketNamespace.INDEXING, { projectId: id });
99
+ }
100
+ /**
101
+ * Подключается к уведомлениям
102
+ * @returns {Promise<void>}
103
+ */
104
+ async connectToNotifications() {
105
+ // Подключаемся к пространству имен
106
+ await this.connect(WebSocketNamespace.NOTIFICATIONS);
107
+ }
108
+ /**
109
+ * Отключается от пространства имен
110
+ * @param {WebSocketNamespace} namespace Пространство имен
111
+ */
112
+ disconnect(namespace) {
113
+ const client = this.clients.get(namespace);
114
+ if (client) {
115
+ client.close();
116
+ this.clients.delete(namespace);
117
+ }
118
+ // Сбрасываем активные сессии
119
+ if (namespace === WebSocketNamespace.REASONING) {
120
+ this.activeReasoningId = null;
121
+ }
122
+ else if (namespace === WebSocketNamespace.INDEXING) {
123
+ this.activeProjectId = null;
124
+ }
125
+ }
126
+ /**
127
+ * Отключается от всех пространств имен
128
+ */
129
+ disconnectAll() {
130
+ for (const [namespace, client] of this.clients.entries()) {
131
+ client.close();
132
+ this.clients.delete(namespace);
133
+ }
134
+ // Сбрасываем активные сессии
135
+ this.activeReasoningId = null;
136
+ this.activeProjectId = null;
137
+ }
138
+ /**
139
+ * Добавляет обработчик события для пространства имен
140
+ * @param {string} eventType Тип события
141
+ * @param {Function} handler Обработчик события
142
+ * @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, добавляется ко всем активным)
143
+ */
144
+ on(eventType, handler, namespace) {
145
+ if (namespace) {
146
+ // Если указано пространство имен, добавляем обработчик только к нему
147
+ const client = this.clients.get(namespace);
148
+ if (!client) {
149
+ throw new Error(`Не подключен к пространству имен ${namespace}`);
150
+ }
151
+ client.on(eventType, handler);
152
+ }
153
+ else {
154
+ // Если пространство имен не указано, добавляем обработчик ко всем активным пространствам
155
+ for (const client of this.clients.values()) {
156
+ client.on(eventType, handler);
157
+ }
158
+ }
159
+ }
160
+ /**
161
+ * Удаляет обработчик события для пространства имен
162
+ * @param {string} eventType Тип события
163
+ * @param {Function} [handler] Обработчик события (если не указан, удаляются все обработчики)
164
+ * @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, удаляется из всех активных)
165
+ */
166
+ off(eventType, handler, namespace) {
167
+ if (namespace) {
168
+ // Если указано пространство имен, удаляем обработчик только из него
169
+ const client = this.clients.get(namespace);
170
+ if (!client) {
171
+ return;
172
+ }
173
+ client.off(eventType, handler);
174
+ }
175
+ else {
176
+ // Если пространство имен не указано, удаляем обработчик из всех активных пространств
177
+ for (const client of this.clients.values()) {
178
+ client.off(eventType, handler);
179
+ }
180
+ }
181
+ }
182
+ /**
183
+ * Отправляет сообщение в пространство имен
184
+ * @param {WebSocketNamespace} namespace Пространство имен
185
+ * @param {string} eventType Тип события
186
+ * @param {any} [data] Данные сообщения
187
+ * @returns {boolean} Успешно ли отправлено сообщение
188
+ */
189
+ send(namespace, eventType, data) {
190
+ const client = this.clients.get(namespace);
191
+ if (!client) {
192
+ throw new Error(`Не подключен к пространству имен ${namespace}`);
193
+ }
194
+ return client.send({
195
+ event: eventType,
196
+ data
197
+ });
198
+ }
199
+ /**
200
+ * Отправляет сообщение в активную сессию рассуждения
201
+ * @param {string} eventType Тип события
202
+ * @param {any} [data] Данные сообщения
203
+ * @returns {boolean} Успешно ли отправлено сообщение
204
+ */
205
+ sendToReasoning(eventType, data) {
206
+ if (!this.activeReasoningId) {
207
+ throw new Error('Не подключен к сессии рассуждения');
208
+ }
209
+ return this.send(WebSocketNamespace.REASONING, eventType, data);
210
+ }
211
+ /**
212
+ * Отправляет сообщение в активную сессию индексации
213
+ * @param {string} eventType Тип события
214
+ * @param {any} [data] Данные сообщения
215
+ * @returns {boolean} Успешно ли отправлено сообщение
216
+ */
217
+ sendToIndexing(eventType, data) {
218
+ if (!this.activeProjectId) {
219
+ throw new Error('Не подключен к сессии индексации');
220
+ }
221
+ return this.send(WebSocketNamespace.INDEXING, eventType, data);
222
+ }
223
+ /**
224
+ * Отправляет сообщение в уведомления
225
+ * @param {string} eventType Тип события
226
+ * @param {any} [data] Данные сообщения
227
+ * @returns {boolean} Успешно ли отправлено сообщение
228
+ */
229
+ sendToNotifications(eventType, data) {
230
+ return this.send(WebSocketNamespace.NOTIFICATIONS, eventType, data);
231
+ }
232
+ /**
233
+ * Проверяет, подключен ли клиент к указанному пространству имен
234
+ * @param {WebSocketNamespace} namespace Пространство имен
235
+ * @returns {boolean} Статус подключения
236
+ */
237
+ isConnected(namespace) {
238
+ const client = this.clients.get(namespace);
239
+ return client ? client.isConnected() : false;
240
+ }
241
+ /**
242
+ * Проверяет, подключен ли клиент к пространству имен рассуждений
243
+ * @returns {boolean} Статус подключения
244
+ */
245
+ isConnectedToReasoning() {
246
+ return this.isConnected(WebSocketNamespace.REASONING);
247
+ }
248
+ /**
249
+ * Проверяет, подключен ли клиент к пространству имен индексации
250
+ * @returns {boolean} Статус подключения
251
+ */
252
+ isConnectedToIndexing() {
253
+ return this.isConnected(WebSocketNamespace.INDEXING);
254
+ }
255
+ /**
256
+ * Проверяет, подключен ли клиент к пространству имен уведомлений
257
+ * @returns {boolean} Статус подключения
258
+ */
259
+ isConnectedToNotifications() {
260
+ return this.isConnected(WebSocketNamespace.NOTIFICATIONS);
261
+ }
262
+ }
263
+ //# sourceMappingURL=code-solver-websocket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-solver-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/code-solver-websocket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import axios from 'axios';
2
+ /**
3
+ * Определение типа среды выполнения
4
+ * @returns 'browser' | 'node'
5
+ */
6
+ function getEnvironment() {
7
+ return (typeof window !== 'undefined' && typeof window.document !== 'undefined')
8
+ ? 'browser'
9
+ : 'node';
10
+ }
11
+ /**
12
+ * HTTP клиент для выполнения запросов к API
13
+ *
14
+ * Предоставляет методы для работы с REST API, включая обработку ошибок,
15
+ * повторные попытки и таймауты.
16
+ */
17
+ export class HttpClient {
18
+ /**
19
+ * Создает новый HTTP клиент
20
+ * @param {string} baseURL Базовый URL для запросов
21
+ * @param {HttpClientOptions} [options] Опции для HTTP клиента
22
+ */
23
+ constructor(baseURL, options = {}) {
24
+ this.baseURL = baseURL;
25
+ this.options = {
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ 'Accept': 'application/json',
29
+ ...(options.headers || {})
30
+ },
31
+ timeout: options.timeout || 30000,
32
+ retry: options.retry || {
33
+ maxRetries: 3,
34
+ retryDelay: 1000,
35
+ maxRetryDelay: 10000,
36
+ retryStatusCodes: [408, 429, 500, 502, 503, 504]
37
+ },
38
+ httpsAgent: options.httpsAgent
39
+ };
40
+ this.environment = getEnvironment();
41
+ // Создаем Axios инстанс с базовыми настройками
42
+ this.axiosInstance = axios.create({
43
+ baseURL: this.baseURL,
44
+ timeout: this.options.timeout,
45
+ headers: this.options.headers,
46
+ ...(this.environment === 'node' && this.options.httpsAgent ? { httpsAgent: this.options.httpsAgent } : {})
47
+ });
48
+ // Добавляем интерцептор для обработки ошибок и повторных попыток
49
+ this.setupInterceptors();
50
+ }
51
+ /**
52
+ * Настраивает интерцепторы Axios
53
+ */
54
+ setupInterceptors() {
55
+ // Интерцептор для ответов
56
+ this.axiosInstance.interceptors.response.use((response) => response.data, async (error) => {
57
+ const { config, response } = error;
58
+ // Если нет конфига запроса или это уже повторный запрос, или skipRetry установлен, возвращаем ошибку
59
+ if (!config || config._retryCount || config.skipRetry) {
60
+ return Promise.reject(error);
61
+ }
62
+ config._retryCount = config._retryCount || 0;
63
+ const retryConfig = this.options.retry;
64
+ // Проверяем, нужно ли делать повторную попытку для данного статуса
65
+ const shouldRetry = response &&
66
+ retryConfig.retryStatusCodes?.includes(response.status) &&
67
+ config._retryCount < (retryConfig.maxRetries || 3);
68
+ if (shouldRetry) {
69
+ config._retryCount += 1;
70
+ // Вычисляем время задержки перед повторной попыткой
71
+ const delay = Math.min((retryConfig.retryDelay || 1000) * Math.pow(2, config._retryCount - 1), retryConfig.maxRetryDelay || 10000);
72
+ // Ждем перед повторной попыткой
73
+ await new Promise(resolve => setTimeout(resolve, delay));
74
+ // Делаем повторную попытку
75
+ return this.axiosInstance(config);
76
+ }
77
+ // Если не нужно делать повторную попытку, возвращаем ошибку
78
+ return Promise.reject(error);
79
+ });
80
+ }
81
+ /**
82
+ * Выполняет HTTP запрос
83
+ * @param {RequestOptions} options Опции запроса
84
+ * @returns {Promise<T>} Ответ от API
85
+ */
86
+ async request(options) {
87
+ const axiosConfig = {
88
+ url: options.url,
89
+ method: options.method,
90
+ data: options.data,
91
+ params: options.params,
92
+ headers: {
93
+ ...this.options.headers,
94
+ ...(options.headers || {})
95
+ },
96
+ timeout: options.timeout || this.options.timeout
97
+ };
98
+ // Если указано не делать повторные попытки, добавляем специальный флаг
99
+ if (options.noRetry) {
100
+ axiosConfig.skipRetry = true;
101
+ }
102
+ try {
103
+ return await this.axiosInstance.request(axiosConfig);
104
+ }
105
+ catch (error) {
106
+ throw this.handleError(error);
107
+ }
108
+ }
109
+ /**
110
+ * Выполняет GET запрос
111
+ * @param {string} url URL для запроса
112
+ * @param {Record<string, any>} [params] Query параметры
113
+ * @param {Record<string, string>} [headers] HTTP заголовки
114
+ * @returns {Promise<T>} Ответ от API
115
+ */
116
+ async get(url, params, headers) {
117
+ return this.request({
118
+ url,
119
+ method: 'GET',
120
+ params,
121
+ headers
122
+ });
123
+ }
124
+ /**
125
+ * Выполняет POST запрос
126
+ * @param {string} url URL для запроса
127
+ * @param {any} [data] Данные для отправки
128
+ * @param {Record<string, string>} [headers] HTTP заголовки
129
+ * @returns {Promise<T>} Ответ от API
130
+ */
131
+ async post(url, data, headers) {
132
+ return this.request({
133
+ url,
134
+ method: 'POST',
135
+ data,
136
+ headers
137
+ });
138
+ }
139
+ /**
140
+ * Выполняет PUT запрос
141
+ * @param {string} url URL для запроса
142
+ * @param {any} [data] Данные для отправки
143
+ * @param {Record<string, string>} [headers] HTTP заголовки
144
+ * @returns {Promise<T>} Ответ от API
145
+ */
146
+ async put(url, data, headers) {
147
+ return this.request({
148
+ url,
149
+ method: 'PUT',
150
+ data,
151
+ headers
152
+ });
153
+ }
154
+ /**
155
+ * Выполняет DELETE запрос
156
+ * @param {string} url URL для запроса
157
+ * @param {Record<string, any>} [params] Query параметры
158
+ * @param {Record<string, string>} [headers] HTTP заголовки
159
+ * @returns {Promise<T>} Ответ от API
160
+ */
161
+ async delete(url, params, headers) {
162
+ return this.request({
163
+ url,
164
+ method: 'DELETE',
165
+ params,
166
+ headers
167
+ });
168
+ }
169
+ /**
170
+ * Выполняет PATCH запрос
171
+ * @param {string} url URL для запроса
172
+ * @param {any} [data] Данные для отправки
173
+ * @param {Record<string, string>} [headers] HTTP заголовки
174
+ * @returns {Promise<T>} Ответ от API
175
+ */
176
+ async patch(url, data, headers) {
177
+ return this.request({
178
+ url,
179
+ method: 'PATCH',
180
+ data,
181
+ headers
182
+ });
183
+ }
184
+ /**
185
+ * Обрабатывает ошибки от Axios
186
+ * @param {any} error Ошибка от Axios
187
+ * @returns {Error} Обработанная ошибка
188
+ */
189
+ handleError(error) {
190
+ let enhancedError;
191
+ if (error.response) {
192
+ // Ошибка от сервера с кодом ответа
193
+ const { status, data } = error.response;
194
+ const message = data?.message || data?.error || `HTTP ошибка ${status}`;
195
+ enhancedError = new Error(message);
196
+ enhancedError.status = status;
197
+ enhancedError.data = data;
198
+ enhancedError.isApiError = true;
199
+ }
200
+ else if (error.request) {
201
+ // Запрос был сделан, но ответ не получен
202
+ enhancedError = new Error('Нет ответа от сервера. Проверьте подключение к интернету.');
203
+ enhancedError.request = error.request;
204
+ enhancedError.isNetworkError = true;
205
+ }
206
+ else {
207
+ // Произошла ошибка при настройке запроса
208
+ enhancedError = new Error(error.message || 'Произошла неизвестная ошибка');
209
+ enhancedError.isUnknownError = true;
210
+ }
211
+ // Сохраняем оригинальную ошибку для отладки
212
+ enhancedError.originalError = error;
213
+ // Пытаемся обработать ошибку через глобальный обработчик
214
+ try {
215
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
216
+ const { CodeSolverSDK } = require('../code-solver-sdk.js');
217
+ if (typeof CodeSolverSDK.handleError === 'function') {
218
+ CodeSolverSDK.handleError(enhancedError);
219
+ }
220
+ }
221
+ catch (e) {
222
+ // Игнорируем ошибки при импорте или вызове обработчика
223
+ }
224
+ return enhancedError;
225
+ }
226
+ }
227
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}