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.
- package/dist/cjs/api/projects-api.js +4 -6
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
- package/dist/cjs/constants/websocket-events.constants.js +37 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +20 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/cjs/index.js +24 -49
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/cjs/utils/connection-state-manager.js +133 -0
- package/dist/cjs/utils/connection-state-manager.js.map +1 -0
- package/dist/cjs/utils/logger.js +106 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/ping-pong-manager.js +306 -0
- package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
- package/dist/cjs/utils/session-manager.js +114 -0
- package/dist/cjs/utils/session-manager.js.map +1 -0
- package/dist/cjs/ws/base-ws-client.js +286 -0
- package/dist/cjs/ws/base-ws-client.js.map +1 -0
- package/dist/cjs/ws/dependencies-ws-client.js +11 -0
- package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
- package/dist/cjs/ws/diagnostics-service.js +170 -0
- package/dist/cjs/ws/diagnostics-service.js.map +1 -0
- package/dist/cjs/ws/filesystem-ws-client.js +315 -0
- package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
- package/dist/cjs/ws/indexing-ws-client.js +223 -0
- package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
- package/dist/cjs/ws/notifications-ws-client.js +12 -0
- package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
- package/dist/cjs/ws/reasoning-ws-client.js +330 -0
- package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
- package/dist/esm/api/projects-api.js +4 -6
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/esm/code-solver-sdk-v2.js.map +1 -0
- package/dist/esm/constants/websocket-events.constants.js +36 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +17 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/esm/index.js +22 -97
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/esm/utils/connection-state-manager.js +129 -0
- package/dist/esm/utils/connection-state-manager.js.map +1 -0
- package/dist/esm/utils/logger.js +101 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/ping-pong-manager.js +302 -0
- package/dist/esm/utils/ping-pong-manager.js.map +1 -0
- package/dist/esm/utils/session-manager.js +109 -0
- package/dist/esm/utils/session-manager.js.map +1 -0
- package/dist/esm/ws/base-ws-client.js +282 -0
- package/dist/esm/ws/base-ws-client.js.map +1 -0
- package/dist/esm/ws/dependencies-ws-client.js +7 -0
- package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
- package/dist/esm/ws/diagnostics-service.js +166 -0
- package/dist/esm/ws/diagnostics-service.js.map +1 -0
- package/dist/esm/ws/filesystem-ws-client.js +311 -0
- package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
- package/dist/esm/ws/indexing-ws-client.js +219 -0
- package/dist/esm/ws/indexing-ws-client.js.map +1 -0
- package/dist/esm/ws/notifications-ws-client.js +8 -0
- package/dist/esm/ws/notifications-ws-client.js.map +1 -0
- package/dist/esm/ws/reasoning-ws-client.js +326 -0
- package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +82 -85
- package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
- package/dist/types/constants/websocket-events.constants.d.ts +33 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +16 -0
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +20 -90
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
- package/dist/types/utils/connection-state-manager.d.ts +94 -0
- package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +62 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/ping-pong-manager.d.ts +118 -0
- package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
- package/dist/types/utils/session-manager.d.ts +98 -0
- package/dist/types/utils/session-manager.d.ts.map +1 -0
- package/dist/types/ws/base-ws-client.d.ts +119 -0
- package/dist/types/ws/base-ws-client.d.ts.map +1 -0
- package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
- package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
- package/dist/types/ws/diagnostics-service.d.ts +93 -0
- package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
- package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
- package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
- package/dist/types/ws/indexing-ws-client.d.ts +78 -0
- package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
- package/dist/types/ws/notifications-ws-client.d.ts +5 -0
- package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
- package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
- package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
- package/docs/AUTHENTICATION.md +31 -127
- package/docs/WEBSOCKET.md +51 -211
- package/package.json +1 -1
- package/dist/cjs/code-solver-sdk.js.map +0 -1
- package/dist/esm/code-solver-sdk.js.map +0 -1
- 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 = '
|
|
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
|
-
*
|
|
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
|
|
38
|
-
this.
|
|
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
|
-
* @
|
|
121
|
+
* Получает WebSocket URL
|
|
122
|
+
* @private
|
|
114
123
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
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.
|
|
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.
|
|
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
|
-
*
|
|
280
|
+
* API для работы с зависимостями
|
|
180
281
|
*/
|
|
181
282
|
get dependencies() {
|
|
182
283
|
return this._dependencies;
|
|
183
284
|
}
|
|
184
285
|
/**
|
|
185
|
-
*
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
206
|
-
|
|
291
|
+
setupAnthropicEventHandlers(reasoningClient, callbacks) {
|
|
292
|
+
// Устанавливаем все обработчики для клиента рассуждений
|
|
293
|
+
reasoningClient.setupAnthropicStreamHandlers();
|
|
294
|
+
// Устанавливаем внешние обработчики
|
|
295
|
+
if (callbacks) {
|
|
296
|
+
reasoningClient.callbacks = callbacks;
|
|
297
|
+
}
|
|
207
298
|
}
|
|
208
299
|
/**
|
|
209
|
-
*
|
|
210
|
-
*
|
|
300
|
+
* Выполняет запрос к API для генерации рассуждения с использованием Anthropic API
|
|
301
|
+
* с поддержкой потоковой передачи данных через WebSocket
|
|
302
|
+
*
|
|
303
|
+
* @param {ExtendedReasoningOptions} options Опции для рассуждения
|
|
304
|
+
* @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
|
|
305
|
+
* @returns {Promise<void>} Promise без результата
|
|
211
306
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
this.
|
|
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
|
-
*
|
|
226
|
-
* @
|
|
361
|
+
* Проверяет, подключен ли SDK к WebSocket серверу
|
|
362
|
+
* @returns {boolean} Статус подключения
|
|
227
363
|
*/
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
*
|
|
245
|
-
* @
|
|
387
|
+
* Устанавливает глобальный обработчик ошибок
|
|
388
|
+
* @param {(error: Error) => void} handler Обработчик ошибок
|
|
246
389
|
*/
|
|
247
|
-
static
|
|
248
|
-
|
|
390
|
+
static setErrorHandler(handler) {
|
|
391
|
+
CodeSolverSDK.errorHandler = handler;
|
|
249
392
|
}
|
|
250
393
|
/**
|
|
251
|
-
*
|
|
252
|
-
* @returns {string} Версия SDK
|
|
394
|
+
* Очищает все ресурсы
|
|
253
395
|
*/
|
|
254
|
-
|
|
255
|
-
|
|
396
|
+
dispose() {
|
|
397
|
+
this.disconnectAll();
|
|
256
398
|
}
|
|
257
399
|
/**
|
|
258
|
-
* Устанавливает новый API ключ
|
|
400
|
+
* Устанавливает новый API ключ
|
|
259
401
|
* @param {string} apiKey Новый API ключ
|
|
260
402
|
*/
|
|
261
403
|
setApiKey(apiKey) {
|
|
262
|
-
|
|
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
|
-
...
|
|
271
|
-
|
|
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
|
-
// Обновляем
|
|
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.
|
|
289
|
-
|
|
290
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
319
|
-
|
|
320
|
-
|
|
435
|
+
if (this._fileSystemClient) {
|
|
436
|
+
this._fileSystemClient.disconnect();
|
|
437
|
+
this._fileSystemClient = null;
|
|
321
438
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
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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"}
|