solver-sdk 1.8.1 → 2.0.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.
Files changed (131) hide show
  1. package/dist/cjs/api/projects-api.js +4 -6
  2. package/dist/cjs/api/projects-api.js.map +1 -1
  3. package/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
  4. package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
  5. package/dist/cjs/constants/websocket-events.constants.js +37 -1
  6. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  7. package/dist/cjs/constants/websocket-namespaces.constants.js +20 -0
  8. package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
  9. package/dist/cjs/index.js +24 -49
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
  12. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  13. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
  14. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
  15. package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
  16. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
  17. package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
  18. package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
  19. package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
  20. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
  21. package/dist/cjs/utils/connection-state-manager.js +133 -0
  22. package/dist/cjs/utils/connection-state-manager.js.map +1 -0
  23. package/dist/cjs/utils/logger.js +106 -0
  24. package/dist/cjs/utils/logger.js.map +1 -0
  25. package/dist/cjs/utils/ping-pong-manager.js +306 -0
  26. package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
  27. package/dist/cjs/utils/session-manager.js +114 -0
  28. package/dist/cjs/utils/session-manager.js.map +1 -0
  29. package/dist/cjs/ws/base-ws-client.js +286 -0
  30. package/dist/cjs/ws/base-ws-client.js.map +1 -0
  31. package/dist/cjs/ws/dependencies-ws-client.js +11 -0
  32. package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
  33. package/dist/cjs/ws/diagnostics-service.js +170 -0
  34. package/dist/cjs/ws/diagnostics-service.js.map +1 -0
  35. package/dist/cjs/ws/filesystem-ws-client.js +315 -0
  36. package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
  37. package/dist/cjs/ws/indexing-ws-client.js +223 -0
  38. package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
  39. package/dist/cjs/ws/notifications-ws-client.js +12 -0
  40. package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
  41. package/dist/cjs/ws/reasoning-ws-client.js +330 -0
  42. package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
  43. package/dist/esm/api/projects-api.js +4 -6
  44. package/dist/esm/api/projects-api.js.map +1 -1
  45. package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
  46. package/dist/esm/code-solver-sdk-v2.js.map +1 -0
  47. package/dist/esm/constants/websocket-events.constants.js +36 -0
  48. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  49. package/dist/esm/constants/websocket-namespaces.constants.js +17 -0
  50. package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
  51. package/dist/esm/index.js +22 -97
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
  54. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  55. package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
  56. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
  57. package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
  58. package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
  59. package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
  60. package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
  61. package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
  62. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
  63. package/dist/esm/utils/connection-state-manager.js +129 -0
  64. package/dist/esm/utils/connection-state-manager.js.map +1 -0
  65. package/dist/esm/utils/logger.js +101 -0
  66. package/dist/esm/utils/logger.js.map +1 -0
  67. package/dist/esm/utils/ping-pong-manager.js +302 -0
  68. package/dist/esm/utils/ping-pong-manager.js.map +1 -0
  69. package/dist/esm/utils/session-manager.js +109 -0
  70. package/dist/esm/utils/session-manager.js.map +1 -0
  71. package/dist/esm/ws/base-ws-client.js +282 -0
  72. package/dist/esm/ws/base-ws-client.js.map +1 -0
  73. package/dist/esm/ws/dependencies-ws-client.js +7 -0
  74. package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
  75. package/dist/esm/ws/diagnostics-service.js +166 -0
  76. package/dist/esm/ws/diagnostics-service.js.map +1 -0
  77. package/dist/esm/ws/filesystem-ws-client.js +311 -0
  78. package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
  79. package/dist/esm/ws/indexing-ws-client.js +219 -0
  80. package/dist/esm/ws/indexing-ws-client.js.map +1 -0
  81. package/dist/esm/ws/notifications-ws-client.js +8 -0
  82. package/dist/esm/ws/notifications-ws-client.js.map +1 -0
  83. package/dist/esm/ws/reasoning-ws-client.js +326 -0
  84. package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
  85. package/dist/types/api/projects-api.d.ts.map +1 -1
  86. package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +82 -85
  87. package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
  88. package/dist/types/constants/websocket-events.constants.d.ts +33 -0
  89. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  90. package/dist/types/constants/websocket-namespaces.constants.d.ts +16 -0
  91. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
  92. package/dist/types/index.d.ts +20 -90
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
  95. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
  96. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
  97. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
  98. package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
  99. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
  100. package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
  101. package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
  102. package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
  103. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
  104. package/dist/types/utils/connection-state-manager.d.ts +94 -0
  105. package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
  106. package/dist/types/utils/logger.d.ts +62 -0
  107. package/dist/types/utils/logger.d.ts.map +1 -0
  108. package/dist/types/utils/ping-pong-manager.d.ts +118 -0
  109. package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
  110. package/dist/types/utils/session-manager.d.ts +98 -0
  111. package/dist/types/utils/session-manager.d.ts.map +1 -0
  112. package/dist/types/ws/base-ws-client.d.ts +119 -0
  113. package/dist/types/ws/base-ws-client.d.ts.map +1 -0
  114. package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
  115. package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
  116. package/dist/types/ws/diagnostics-service.d.ts +93 -0
  117. package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
  118. package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
  119. package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
  120. package/dist/types/ws/indexing-ws-client.d.ts +78 -0
  121. package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
  122. package/dist/types/ws/notifications-ws-client.d.ts +5 -0
  123. package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
  124. package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
  125. package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
  126. package/docs/AUTHENTICATION.md +31 -127
  127. package/docs/WEBSOCKET.md +51 -211
  128. package/package.json +1 -1
  129. package/dist/cjs/code-solver-sdk.js.map +0 -1
  130. package/dist/esm/code-solver-sdk.js.map +0 -1
  131. package/dist/types/code-solver-sdk.d.ts.map +0 -1
@@ -4,13 +4,19 @@ import { SearchApi } from './api/search-api.js';
4
4
  import { ContextApi } from './api/context-api.js';
5
5
  import { ReasoningApi } from './api/reasoning-api.js';
6
6
  import { CodeModificationApi } from './api/code-modification-api.js';
7
- import { CodeSolverWebSocketClient, WebSocketNamespace } from './utils/code-solver-websocket-client.js';
8
7
  import { AgentsApi } from './api/agents-api.js';
9
8
  import { ChatApi } from './api/chat-api/index.js';
10
9
  import { ModelsApi } from './api/models-api.js';
11
10
  import { DependenciesApi } from './api/dependencies-api.js';
11
+ // Импорт пространств имен WebSocket
12
+ import { WebSocketNamespace } from './constants/websocket-namespaces.constants.js';
12
13
  // Версия SDK
13
- const SDK_VERSION = '1.8.1';
14
+ const SDK_VERSION = '2.0.0';
15
+ // Импорт WebSocket клиентов
16
+ import { IndexingWebSocketClient } from './ws/indexing-ws-client.js';
17
+ import { ReasoningWebSocketClient } from './ws/reasoning-ws-client.js';
18
+ import { FileSystemWsClient } from './ws/filesystem-ws-client.js';
19
+ import { DependenciesWsClient } from './ws/dependencies-ws-client.js';
14
20
  /**
15
21
  * Определение типа среды выполнения
16
22
  * @returns 'browser' | 'node' | 'unknown'
@@ -26,7 +32,7 @@ function getEnvironment() {
26
32
  }
27
33
  /**
28
34
  * Основной класс SDK для работы с Code Solver API
29
- * Поддерживает работу как в браузере, так и в Node.js
35
+ * В версии 2.0 с современной архитектурой и без обратной совместимости
30
36
  */
31
37
  export class CodeSolverSDK {
32
38
  /**
@@ -34,8 +40,11 @@ export class CodeSolverSDK {
34
40
  * @param {CodeSolverSDKOptions} options Опции SDK
35
41
  */
36
42
  constructor(options) {
37
- /** WebSocket клиент для работы с реалтайм API */
38
- this.wsClient = null;
43
+ /** WebSocket клиенты для разных пространств имен */
44
+ this._indexingClient = null;
45
+ this._reasoningClient = null;
46
+ this._fileSystemClient = null;
47
+ this._dependenciesClient = null;
39
48
  /** Logger для внутреннего использования */
40
49
  this.logger = {
41
50
  log: (message) => {
@@ -109,13 +118,35 @@ export class CodeSolverSDK {
109
118
  }
110
119
  }
111
120
  /**
112
- * Получает WebSocket клиент
113
- * @returns {CodeSolverWebSocketClient} WebSocket клиент
121
+ * Получает WebSocket URL
122
+ * @private
114
123
  */
115
- getWebSocketClient() {
116
- if (!this.wsClient) {
124
+ get wsURL() {
125
+ let url = this._options.baseURL || '';
126
+ // Заменяем протокол HTTP на WS
127
+ if (url.startsWith('http://')) {
128
+ url = url.replace('http://', 'ws://');
129
+ }
130
+ else if (url.startsWith('https://')) {
131
+ url = url.replace('https://', 'wss://');
132
+ }
133
+ return url;
134
+ }
135
+ /**
136
+ * Получает конфигурацию WebSocket
137
+ * @private
138
+ */
139
+ get wsConfig() {
140
+ return this._options.websocket || {};
141
+ }
142
+ /**
143
+ * Получает клиент для индексации
144
+ * @returns {IndexingWebSocketClient} Клиент для индексации
145
+ */
146
+ getIndexingClient() {
147
+ if (!this._indexingClient) {
117
148
  const wsURL = this.wsURL;
118
- this.wsClient = new CodeSolverWebSocketClient(wsURL, {
149
+ this._indexingClient = new IndexingWebSocketClient(wsURL, {
119
150
  apiKey: this._options.apiKey,
120
151
  headers: this._options.headers,
121
152
  autoReconnect: this.wsConfig.reconnect !== false,
@@ -124,7 +155,77 @@ export class CodeSolverSDK {
124
155
  rejectUnauthorized: this.wsConfig.rejectUnauthorized
125
156
  });
126
157
  }
127
- return this.wsClient;
158
+ return this._indexingClient;
159
+ }
160
+ /**
161
+ * Получает клиент для рассуждений
162
+ * @returns {ReasoningWebSocketClient} Клиент для рассуждений
163
+ */
164
+ getReasoningClient() {
165
+ if (!this._reasoningClient) {
166
+ const wsURL = this.wsURL;
167
+ this._reasoningClient = new ReasoningWebSocketClient(wsURL, {
168
+ apiKey: this._options.apiKey,
169
+ headers: this._options.headers,
170
+ autoReconnect: this.wsConfig.reconnect !== false,
171
+ maxRetries: this.wsConfig.reconnectAttempts || 5,
172
+ retryDelay: this.wsConfig.reconnectDelay || 1000,
173
+ rejectUnauthorized: this.wsConfig.rejectUnauthorized,
174
+ callbacks: {} // Инициализируем пустой объект callbacks
175
+ });
176
+ }
177
+ return this._reasoningClient;
178
+ }
179
+ /**
180
+ * Получает клиент для работы с файловой системой
181
+ * @param {Partial<FileSystemWsClientOptions>} options Опции клиента файловой системы
182
+ * @returns {FileSystemWsClient} Клиент для работы с файловой системой
183
+ */
184
+ getFileSystemClient(options = {}) {
185
+ if (!this._fileSystemClient) {
186
+ const wsURL = this.wsURL;
187
+ this._fileSystemClient = new FileSystemWsClient(wsURL, {
188
+ onReadFile: options.onReadFile,
189
+ onListFiles: options.onListFiles,
190
+ onWatchStart: options.onWatchStart
191
+ });
192
+ }
193
+ return this._fileSystemClient;
194
+ }
195
+ /**
196
+ * Получает клиент для работы с зависимостями
197
+ * @returns {DependenciesWsClient} Клиент для работы с зависимостями
198
+ */
199
+ getDependenciesClient() {
200
+ if (!this._dependenciesClient) {
201
+ const wsURL = this.wsURL;
202
+ this._dependenciesClient = new DependenciesWsClient(WebSocketNamespace.DEPENDENCIES, wsURL, {
203
+ apiKey: this._options.apiKey,
204
+ headers: this._options.headers,
205
+ autoReconnect: this.wsConfig.reconnect !== false,
206
+ maxRetries: this.wsConfig.reconnectAttempts || 5,
207
+ retryDelay: this.wsConfig.reconnectDelay || 1000,
208
+ rejectUnauthorized: this.wsConfig.rejectUnauthorized
209
+ });
210
+ }
211
+ return this._dependenciesClient;
212
+ }
213
+ /**
214
+ * Закрывает все WebSocket соединения
215
+ */
216
+ disconnectAll() {
217
+ if (this._indexingClient) {
218
+ this._indexingClient.disconnect();
219
+ }
220
+ if (this._reasoningClient) {
221
+ this._reasoningClient.disconnect();
222
+ }
223
+ if (this._fileSystemClient) {
224
+ this._fileSystemClient.disconnect();
225
+ }
226
+ if (this._dependenciesClient) {
227
+ this._dependenciesClient.disconnect();
228
+ }
128
229
  }
129
230
  /**
130
231
  * API для работы с агентами
@@ -176,323 +277,171 @@ export class CodeSolverSDK {
176
277
  return this._models;
177
278
  }
178
279
  /**
179
- * Доступ к API зависимостей
280
+ * API для работы с зависимостями
180
281
  */
181
282
  get dependencies() {
182
283
  return this._dependencies;
183
284
  }
184
285
  /**
185
- * Получает опции SDK
186
- */
187
- get options() {
188
- return this._options;
189
- }
190
- /**
191
- * Получает конфигурацию WebSocket
192
- */
193
- get wsConfig() {
194
- return this._options.websocket || {};
195
- }
196
- /**
197
- * Получает URL для WebSocket соединений
198
- */
199
- get wsURL() {
200
- return this._options.wsURL || this._options.baseURL.replace(/^http/, 'ws');
201
- }
202
- /**
203
- * Получает HTTP-клиент
286
+ * Настраивает обработчики событий Anthropic API
287
+ * @param {ReasoningWebSocketClient} reasoningClient WebSocket клиент для рассуждений
288
+ * @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
289
+ * @private
204
290
  */
205
- get client() {
206
- return this.httpClient;
291
+ setupAnthropicEventHandlers(reasoningClient, callbacks) {
292
+ // Устанавливаем все обработчики для клиента рассуждений
293
+ reasoningClient.setupAnthropicStreamHandlers();
294
+ // Устанавливаем внешние обработчики
295
+ if (callbacks) {
296
+ reasoningClient.callbacks = callbacks;
297
+ }
207
298
  }
208
299
  /**
209
- * Получает текущую среду выполнения
210
- * @returns {string} Среда выполнения ('browser', 'node', 'unknown')
300
+ * Выполняет запрос к API для генерации рассуждения с использованием Anthropic API
301
+ * с поддержкой потоковой передачи данных через WebSocket
302
+ *
303
+ * @param {ExtendedReasoningOptions} options Опции для рассуждения
304
+ * @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
305
+ * @returns {Promise<void>} Promise без результата
211
306
  */
212
- getEnvironment() {
213
- return this.environment;
307
+ async executeReasoning(options, callbacks) {
308
+ try {
309
+ // Проверяем, что все необходимые параметры указаны
310
+ if (!options.projectId) {
311
+ throw new Error('Не указан projectId для выполнения рассуждения');
312
+ }
313
+ // Подключаемся к WebSocket серверу если еще не подключены
314
+ const reasoningClient = this.getReasoningClient();
315
+ if (!reasoningClient.isConnected()) {
316
+ await reasoningClient.connectToReasoning();
317
+ }
318
+ // Подписываемся на события
319
+ this.setupAnthropicEventHandlers(reasoningClient, callbacks);
320
+ // Отправляем запрос на выполнение рассуждения
321
+ await reasoningClient.emitWithAck('create_reasoning', {
322
+ projectId: options.projectId,
323
+ request: {
324
+ prompt: options.query,
325
+ options: {
326
+ streamMode: true,
327
+ planningMode: Boolean(options.thinking),
328
+ modelName: options.model || 'claude-3-sonnet'
329
+ }
330
+ }
331
+ });
332
+ }
333
+ catch (error) {
334
+ this.logger.error(`Ошибка при отправке запроса на рассуждение: ${error instanceof Error ? error.message : String(error)}`);
335
+ callbacks.onError?.({
336
+ code: 'SDK_ERROR',
337
+ message: `Ошибка при отправке запроса: ${error instanceof Error ? error.message : String(error)}`
338
+ });
339
+ throw error;
340
+ }
214
341
  }
215
342
  /**
216
- * Закрывает все соединения и освобождает ресурсы
343
+ * Подключается к WebSocket серверу
344
+ * @returns {Promise<boolean>} Promise с результатом подключения
217
345
  */
218
- dispose() {
219
- if (this.wsClient) {
220
- this.wsClient.disconnectAll();
221
- this.wsClient = null;
346
+ async connect() {
347
+ try {
348
+ // Подключаемся к различным пространствам имен
349
+ await this.getIndexingClient().connect();
350
+ await this.getReasoningClient().connect();
351
+ await this.getFileSystemClient().connect();
352
+ await this.getDependenciesClient().connect();
353
+ return true;
354
+ }
355
+ catch (error) {
356
+ CodeSolverSDK.handleError(error);
357
+ return false;
222
358
  }
223
359
  }
224
360
  /**
225
- * Устанавливает глобальный обработчик ошибок SDK
226
- * @param {(error: Error) => void} handler Функция-обработчик ошибок
361
+ * Проверяет, подключен ли SDK к WebSocket серверу
362
+ * @returns {boolean} Статус подключения
227
363
  */
228
- static setErrorHandler(handler) {
229
- CodeSolverSDK.errorHandler = handler;
364
+ isConnected() {
365
+ if (!this._indexingClient && !this._reasoningClient && !this._fileSystemClient && !this._dependenciesClient) {
366
+ return false;
367
+ }
368
+ const indexingConnected = this._indexingClient?.isConnected() || false;
369
+ const reasoningConnected = this._reasoningClient?.isConnected() || false;
370
+ const fileSystemConnected = this._fileSystemClient?.isConnected() || false;
371
+ const dependenciesConnected = this._dependenciesClient?.isConnected() || false;
372
+ return indexingConnected || reasoningConnected || fileSystemConnected || dependenciesConnected;
230
373
  }
231
374
  /**
232
- * Обрабатывает ошибку через глобальный обработчик, если он установлен
233
- * @param {Error} error Ошибка для обработки
375
+ * Обрабатывает ошибку
376
+ * @param {Error} error Объект ошибки
234
377
  */
235
378
  static handleError(error) {
236
379
  if (CodeSolverSDK.errorHandler) {
237
380
  CodeSolverSDK.errorHandler(error);
238
381
  }
239
382
  else {
240
- console.error('[CodeSolverSDK]', error);
383
+ console.error('[CodeSolverSDK] Необработанная ошибка:', error);
241
384
  }
242
385
  }
243
386
  /**
244
- * Возвращает текущую версию SDK
245
- * @returns {string} Версия SDK
387
+ * Устанавливает глобальный обработчик ошибок
388
+ * @param {(error: Error) => void} handler Обработчик ошибок
246
389
  */
247
- static getVersion() {
248
- return SDK_VERSION;
390
+ static setErrorHandler(handler) {
391
+ CodeSolverSDK.errorHandler = handler;
249
392
  }
250
393
  /**
251
- * Возвращает текущую версию SDK
252
- * @returns {string} Версия SDK
394
+ * Очищает все ресурсы
253
395
  */
254
- getVersion() {
255
- return CodeSolverSDK.getVersion();
396
+ dispose() {
397
+ this.disconnectAll();
256
398
  }
257
399
  /**
258
- * Устанавливает новый API ключ для SDK
400
+ * Устанавливает новый API ключ
259
401
  * @param {string} apiKey Новый API ключ
260
402
  */
261
403
  setApiKey(apiKey) {
262
- if (!apiKey) {
263
- throw new Error('API ключ не может быть пустым');
264
- }
265
- // Обновляем опции
404
+ // Обновляем API ключ в опциях
266
405
  this._options.apiKey = apiKey;
267
406
  // Пересоздаем HTTP клиент с новым API ключом
268
407
  const newHttpClient = new HttpClient(this._options.baseURL, {
269
408
  headers: {
270
- ...this._options.headers,
271
- 'Authorization': `Bearer ${apiKey}`
409
+ ...(apiKey ? { 'Authorization': `Bearer ${apiKey}` } : {}),
410
+ ...(this._options.headers || {})
272
411
  },
273
412
  timeout: this._options.timeout,
274
413
  httpsAgent: this.environment === 'node' ? this._options.httpsAgent : undefined
275
414
  });
276
- // Обновляем ссылки на клиент и API
415
+ // Обновляем API клиенты с новым HTTP клиентом
277
416
  this.httpClient = newHttpClient;
278
- this._agents = new AgentsApi(newHttpClient);
279
- this._context = new ContextApi(newHttpClient, this._projects);
280
417
  this._projects = new ProjectsApi(newHttpClient);
281
418
  this._search = new SearchApi(newHttpClient);
282
419
  this._reasoning = new ReasoningApi(newHttpClient, this._projects);
420
+ this._context = new ContextApi(newHttpClient, this._projects);
283
421
  this._codeModification = new CodeModificationApi(newHttpClient);
422
+ this._agents = new AgentsApi(newHttpClient);
284
423
  this._chat = new ChatApi(newHttpClient);
285
424
  this._models = new ModelsApi(newHttpClient);
286
425
  this._dependencies = new DependenciesApi(newHttpClient);
287
- // Если есть WebSocket клиент, пересоздаем его
288
- if (this.wsClient) {
289
- const isConnected = this.wsClient.isConnectedToReasoning() || this.wsClient.isConnectedToIndexing();
290
- this.wsClient.disconnectAll();
291
- this.wsClient = new CodeSolverWebSocketClient(this._options.baseURL, {
292
- apiKey,
293
- headers: this._options.headers
294
- });
295
- // Если был подключен, восстанавливаем соединение
296
- if (isConnected) {
297
- this.connect().catch(() => { });
298
- }
426
+ // Если есть WebSocket клиенты, пересоздаем их
427
+ if (this._indexingClient) {
428
+ this._indexingClient.disconnect();
429
+ this._indexingClient = null;
299
430
  }
300
- }
301
- /**
302
- * Подключается к WebSocket серверу
303
- * @returns {Promise<boolean>} Promise с результатом подключения
304
- */
305
- async connect() {
306
- try {
307
- const wsClient = this.getWebSocketClient();
308
- // Проверяем доступность сервера перед подключением
309
- const serverAvailable = await this.checkHealth().catch(() => false);
310
- if (!serverAvailable) {
311
- this.logger.warn('Сервер недоступен, WebSocket подключение может быть нестабильным');
312
- }
313
- // Подключаемся к обоим пространствам имен
314
- await wsClient.connectToReasoning();
315
- await wsClient.connectToIndexing();
316
- return true;
431
+ if (this._reasoningClient) {
432
+ this._reasoningClient.disconnect();
433
+ this._reasoningClient = null;
317
434
  }
318
- catch (error) {
319
- CodeSolverSDK.handleError(error);
320
- return false;
435
+ if (this._fileSystemClient) {
436
+ this._fileSystemClient.disconnect();
437
+ this._fileSystemClient = null;
321
438
  }
322
- }
323
- /**
324
- * Отключается от WebSocket сервера
325
- * @returns {Promise<void>} Promise без результата
326
- */
327
- async disconnect() {
328
- if (this.wsClient) {
329
- await this.wsClient.disconnectAll();
439
+ if (this._dependenciesClient) {
440
+ this._dependenciesClient.disconnect();
441
+ this._dependenciesClient = null;
330
442
  }
331
443
  }
332
- /**
333
- * Проверяет, подключен ли SDK к WebSocket серверу
334
- * @returns {boolean} Статус подключения
335
- */
336
- isConnected() {
337
- if (!this.wsClient)
338
- return false;
339
- return this.wsClient.isConnectedToReasoning() || this.wsClient.isConnectedToIndexing();
340
- }
341
- /**
342
- * Проверяет доступность API (алиас для checkHealth)
343
- * @returns {Promise<boolean>} Promise с результатом проверки
344
- */
345
- async isHealthy() {
346
- return this.checkHealth();
347
- }
348
- /**
349
- * Проверяет доступность всех сервисов API
350
- * @returns {Promise<{[key: string]: boolean}>} Статус каждого сервиса
351
- */
352
- async checkServices() {
353
- try {
354
- const results = {
355
- api: false,
356
- websocket: false,
357
- database: false,
358
- search: false
359
- };
360
- try {
361
- // Проверка API
362
- results.api = await this.checkHealth();
363
- // Проверка других компонентов через запрос статуса
364
- const response = await this.httpClient.get('/api/v1/status');
365
- if (response && typeof response === 'object') {
366
- results.database = Boolean(response.database?.connected);
367
- results.search = Boolean(response.search?.connected);
368
- // Проверка WebSocket соединения
369
- if (this.wsClient) {
370
- results.websocket = this.wsClient.isConnectedToReasoning() ||
371
- this.wsClient.isConnectedToIndexing();
372
- }
373
- else {
374
- try {
375
- const wsClient = this.getWebSocketClient();
376
- await wsClient.connectToReasoning();
377
- results.websocket = true;
378
- await wsClient.disconnect(WebSocketNamespace.REASONING);
379
- }
380
- catch (e) {
381
- results.websocket = false;
382
- }
383
- }
384
- }
385
- }
386
- catch (error) {
387
- // Игнорируем ошибки при проверке
388
- }
389
- return results;
390
- }
391
- catch (error) {
392
- return {
393
- api: false,
394
- websocket: false,
395
- database: false,
396
- search: false
397
- };
398
- }
399
- }
400
- /**
401
- * Закрывает соединение с сервером (алиас для dispose)
402
- */
403
- close() {
404
- this.dispose();
405
- return Promise.resolve();
406
- }
407
- /**
408
- * Выполняет запрос к API для генерации рассуждения с использованием Anthropic API
409
- * с поддержкой потоковой передачи данных через WebSocket
410
- *
411
- * @param {ReasoningOptions} options Опции для рассуждения
412
- * @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
413
- * @returns {Promise<void>} Promise без результата
414
- */
415
- async executeReasoning(options, callbacks) {
416
- try {
417
- // Подключаемся к WebSocket серверу если еще не подключены
418
- if (!this.isConnected()) {
419
- await this.connect();
420
- }
421
- // Получаем WebSocket клиент
422
- const wsClient = this.getWebSocketClient();
423
- // Подписываемся на события
424
- this.setupAnthropicEventHandlers(wsClient, callbacks);
425
- // Отправляем запрос на выполнение рассуждения
426
- wsClient.sendToReasoning('execute_reasoning', {
427
- projectId: options.projectId,
428
- prompt: options.query,
429
- level: options.level || 'STANDARD',
430
- type: options.type || 'THINKING',
431
- currentFile: options.currentFilePath,
432
- selection: options.selection,
433
- options: {
434
- modelProvider: options.options?.modelProvider || 'anthropic',
435
- modelName: options.options?.modelName || 'claude-3-sonnet-20240229',
436
- streamResponse: true,
437
- ...(options.options || {})
438
- }
439
- });
440
- this.logger.debug(`Запрос на выполнение рассуждения отправлен: ${JSON.stringify({
441
- projectId: options.projectId,
442
- prompt: options.query.substring(0, 50) + '...',
443
- level: options.level
444
- })}`);
445
- }
446
- catch (error) {
447
- this.logger.error(`Ошибка при отправке запроса на рассуждение: ${error instanceof Error ? error.message : String(error)}`);
448
- callbacks.onError?.({
449
- code: 'SDK_ERROR',
450
- message: `Ошибка при отправке запроса: ${error instanceof Error ? error.message : String(error)}`
451
- });
452
- throw error;
453
- }
454
- }
455
- /**
456
- * Настраивает обработчики событий Anthropic API
457
- * @param {CodeSolverWebSocketClient} wsClient WebSocket клиент
458
- * @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
459
- * @private
460
- */
461
- setupAnthropicEventHandlers(wsClient, callbacks) {
462
- // Регистрируем обработчики для всех типов событий
463
- wsClient.on('message_start', (data) => {
464
- callbacks.onMessageStart?.(data);
465
- callbacks.onAny?.('message_start', data);
466
- }, WebSocketNamespace.REASONING);
467
- wsClient.on('content_block_start', (data) => {
468
- callbacks.onContentStart?.(data);
469
- callbacks.onAny?.('content_block_start', data);
470
- }, WebSocketNamespace.REASONING);
471
- wsClient.on('content_block_delta', (data) => {
472
- callbacks.onContentDelta?.(data);
473
- callbacks.onAny?.('content_block_delta', data);
474
- }, WebSocketNamespace.REASONING);
475
- wsClient.on('content_block_stop', (data) => {
476
- callbacks.onContentStop?.(data);
477
- callbacks.onAny?.('content_block_stop', data);
478
- // Проверяем, является ли блок блоком мышления
479
- if (data.content_block?.type === 'thinking') {
480
- callbacks.onThinkingStop?.(data);
481
- }
482
- }, WebSocketNamespace.REASONING);
483
- wsClient.on('message_delta', (data) => {
484
- callbacks.onAny?.('message_delta', data);
485
- }, WebSocketNamespace.REASONING);
486
- wsClient.on('message_stop', (data) => {
487
- callbacks.onMessageStop?.(data);
488
- callbacks.onAny?.('message_stop', data);
489
- }, WebSocketNamespace.REASONING);
490
- wsClient.on('error', (data) => {
491
- callbacks.onError?.(data);
492
- callbacks.onAny?.('error', data);
493
- }, WebSocketNamespace.REASONING);
494
- }
495
444
  }
496
445
  /** Глобальный обработчик ошибок */
497
446
  CodeSolverSDK.errorHandler = null;
498
- //# sourceMappingURL=code-solver-sdk.js.map
447
+ //# sourceMappingURL=code-solver-sdk-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-solver-sdk-v2.js","sourceRoot":"","sources":["../../src/code-solver-sdk-v2.ts"],"names":[],"mappings":"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"}