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