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
|
@@ -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 = '
|
|
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
|
-
*
|
|
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
|
|
41
|
-
this.
|
|
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
|
-
* @
|
|
124
|
+
* Получает WebSocket URL
|
|
125
|
+
* @private
|
|
117
126
|
*/
|
|
118
|
-
|
|
119
|
-
|
|
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.
|
|
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.
|
|
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
|
-
*
|
|
283
|
+
* API для работы с зависимостями
|
|
183
284
|
*/
|
|
184
285
|
get dependencies() {
|
|
185
286
|
return this._dependencies;
|
|
186
287
|
}
|
|
187
288
|
/**
|
|
188
|
-
*
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
|
|
209
|
-
|
|
294
|
+
setupAnthropicEventHandlers(reasoningClient, callbacks) {
|
|
295
|
+
// Устанавливаем все обработчики для клиента рассуждений
|
|
296
|
+
reasoningClient.setupAnthropicStreamHandlers();
|
|
297
|
+
// Устанавливаем внешние обработчики
|
|
298
|
+
if (callbacks) {
|
|
299
|
+
reasoningClient.callbacks = callbacks;
|
|
300
|
+
}
|
|
210
301
|
}
|
|
211
302
|
/**
|
|
212
|
-
*
|
|
213
|
-
*
|
|
303
|
+
* Выполняет запрос к API для генерации рассуждения с использованием Anthropic API
|
|
304
|
+
* с поддержкой потоковой передачи данных через WebSocket
|
|
305
|
+
*
|
|
306
|
+
* @param {ExtendedReasoningOptions} options Опции для рассуждения
|
|
307
|
+
* @param {AnthropicStreamCallbacks} callbacks Коллбэки для обработки событий
|
|
308
|
+
* @returns {Promise<void>} Promise без результата
|
|
214
309
|
*/
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
this.
|
|
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
|
-
*
|
|
229
|
-
* @
|
|
364
|
+
* Проверяет, подключен ли SDK к WebSocket серверу
|
|
365
|
+
* @returns {boolean} Статус подключения
|
|
230
366
|
*/
|
|
231
|
-
|
|
232
|
-
|
|
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
|
-
*
|
|
248
|
-
* @
|
|
390
|
+
* Устанавливает глобальный обработчик ошибок
|
|
391
|
+
* @param {(error: Error) => void} handler Обработчик ошибок
|
|
249
392
|
*/
|
|
250
|
-
static
|
|
251
|
-
|
|
393
|
+
static setErrorHandler(handler) {
|
|
394
|
+
CodeSolverSDK.errorHandler = handler;
|
|
252
395
|
}
|
|
253
396
|
/**
|
|
254
|
-
*
|
|
255
|
-
* @returns {string} Версия SDK
|
|
397
|
+
* Очищает все ресурсы
|
|
256
398
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
399
|
+
dispose() {
|
|
400
|
+
this.disconnectAll();
|
|
259
401
|
}
|
|
260
402
|
/**
|
|
261
|
-
* Устанавливает новый API ключ
|
|
403
|
+
* Устанавливает новый API ключ
|
|
262
404
|
* @param {string} apiKey Новый API ключ
|
|
263
405
|
*/
|
|
264
406
|
setApiKey(apiKey) {
|
|
265
|
-
|
|
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
|
-
...
|
|
274
|
-
|
|
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
|
-
// Обновляем
|
|
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.
|
|
292
|
-
|
|
293
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
|
|
438
|
+
if (this._fileSystemClient) {
|
|
439
|
+
this._fileSystemClient.disconnect();
|
|
440
|
+
this._fileSystemClient = null;
|
|
324
441
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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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"}
|