solver-sdk 1.8.1 → 1.9.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 +13 -10
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/constants/websocket-events.constants.js +14 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +18 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
- 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/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 +6 -3
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/constants/websocket-events.constants.js +13 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +15 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
- 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/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 +2 -1
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/constants/websocket-events.constants.d.ts +12 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +14 -0
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
- 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/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/docs/WEBSOCKET.md
CHANGED
|
@@ -1,64 +1,46 @@
|
|
|
1
|
-
# Работа с WebSocket
|
|
1
|
+
# Работа с WebSocket в Solver SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Эта документация описывает, как использовать WebSocket соединения через Solver SDK для работы в реальном времени.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Инициализация SDK
|
|
6
6
|
|
|
7
7
|
```javascript
|
|
8
8
|
const { CodeSolverSDK } = require('solver-sdk');
|
|
9
9
|
|
|
10
|
+
// Создаем экземпляр SDK с настройками
|
|
10
11
|
const sdk = new CodeSolverSDK({
|
|
11
12
|
baseURL: 'https://api.example.com',
|
|
12
|
-
apiKey: 'your-api-key'
|
|
13
|
-
websocket: {
|
|
14
|
-
reconnect: true,
|
|
15
|
-
reconnectAttempts: 5,
|
|
16
|
-
reconnectDelay: 3000,
|
|
17
|
-
rejectUnauthorized: true // false для самоподписанных сертификатов
|
|
18
|
-
}
|
|
13
|
+
apiKey: 'your-api-key'
|
|
19
14
|
});
|
|
20
|
-
|
|
21
|
-
// Получение WebSocket клиента
|
|
22
|
-
const wsClient = sdk.getWebSocketClient();
|
|
23
|
-
|
|
24
|
-
// Подключение к namespace рассуждений
|
|
25
|
-
await wsClient.connectToReasoning();
|
|
26
|
-
|
|
27
|
-
// Подключение к namespace индексации
|
|
28
|
-
await wsClient.connectToIndexing();
|
|
29
|
-
|
|
30
|
-
// Проверка статуса подключения
|
|
31
|
-
const isConnected = wsClient.isConnected(WebSocketNamespace.REASONING);
|
|
32
|
-
|
|
33
|
-
// Отключение от определенного namespace
|
|
34
|
-
await wsClient.disconnect(WebSocketNamespace.REASONING);
|
|
35
|
-
|
|
36
|
-
// Отключение от всех namespace
|
|
37
|
-
await wsClient.disconnectAll();
|
|
38
15
|
```
|
|
39
16
|
|
|
40
|
-
##
|
|
17
|
+
## Работа с рассуждениями (Reasoning)
|
|
18
|
+
|
|
19
|
+
### Создание рассуждения и получение результатов в реальном времени
|
|
41
20
|
|
|
42
21
|
```javascript
|
|
43
|
-
//
|
|
44
|
-
await sdk.
|
|
22
|
+
// Создание рассуждения
|
|
23
|
+
const reasoning = await sdk.reasoning.createReasoning({
|
|
24
|
+
projectId: 'project-id',
|
|
25
|
+
query: 'Объясни этот проект'
|
|
26
|
+
});
|
|
45
27
|
|
|
46
|
-
//
|
|
47
|
-
sdk.
|
|
48
|
-
|
|
49
|
-
|
|
28
|
+
// Подключение к WebSocket
|
|
29
|
+
await sdk.reasoning.connectWebSocket(reasoning.id);
|
|
30
|
+
|
|
31
|
+
// Подписка на события
|
|
32
|
+
sdk.reasoning.on('thinking', (data) => {
|
|
33
|
+
console.log('Мышление:', data.content);
|
|
50
34
|
});
|
|
51
35
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
console.log('Индексация завершена!', data.success ? 'Успешно' : 'С ошибками');
|
|
55
|
-
|
|
36
|
+
sdk.reasoning.on('complete', (data) => {
|
|
37
|
+
console.log('Результат:', data.content);
|
|
56
38
|
// Отключение после завершения
|
|
57
|
-
sdk.
|
|
39
|
+
sdk.reasoning.disconnectWebSocket();
|
|
58
40
|
});
|
|
59
41
|
|
|
60
|
-
//
|
|
61
|
-
await sdk.
|
|
42
|
+
// Запуск рассуждения
|
|
43
|
+
await sdk.reasoning.startReasoning(reasoning.id);
|
|
62
44
|
```
|
|
63
45
|
|
|
64
46
|
## Потоковый чат с мышлением AI
|
|
@@ -69,7 +51,7 @@ const handleEvent = (eventType, data) => {
|
|
|
69
51
|
if (eventType === 'thinking_delta' && data.thinking) {
|
|
70
52
|
console.log('Мышление:', data.thinking);
|
|
71
53
|
} else if (eventType === 'text_delta' && data.text) {
|
|
72
|
-
process.stdout.write(data.text);
|
|
54
|
+
process.stdout.write(data.text);
|
|
73
55
|
} else if (eventType === 'message_stop') {
|
|
74
56
|
console.log('\nОтвет завершен');
|
|
75
57
|
}
|
|
@@ -86,106 +68,36 @@ const options = {
|
|
|
86
68
|
temperature: 0.7
|
|
87
69
|
};
|
|
88
70
|
|
|
71
|
+
// Отправка с потоковым получением ответа
|
|
89
72
|
const response = await sdk.chat.streamChatWithThinking(
|
|
90
73
|
messages,
|
|
91
74
|
options,
|
|
92
75
|
handleEvent
|
|
93
76
|
);
|
|
94
|
-
|
|
95
|
-
console.log(`Socket ID: ${response.socketId}`);
|
|
96
77
|
```
|
|
97
78
|
|
|
98
|
-
##
|
|
79
|
+
## Мониторинг индексации проектов
|
|
99
80
|
|
|
100
81
|
```javascript
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
projectId: 'project-id',
|
|
104
|
-
query: 'Объясни этот проект'
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// Подключение к WebSocket для рассуждений
|
|
108
|
-
await sdk.reasoning.connectWebSocket(reasoning.id);
|
|
109
|
-
|
|
110
|
-
// Подписка на события
|
|
111
|
-
sdk.reasoning.on('thinking', (data) => {
|
|
112
|
-
console.log('Мышление:', data.content);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
sdk.reasoning.on('complete', (data) => {
|
|
116
|
-
console.log('Результат:', data.content);
|
|
117
|
-
// Отключение после завершения
|
|
118
|
-
sdk.reasoning.disconnectWebSocket();
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Запуск рассуждения
|
|
122
|
-
await sdk.reasoning.startReasoning(reasoning.id);
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Настройка параметров WebSocket
|
|
82
|
+
// Подключение к WebSocket для проектов
|
|
83
|
+
await sdk.projects.connectWebSocket();
|
|
126
84
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
apiKey: 'your-api-key',
|
|
132
|
-
websocket: {
|
|
133
|
-
reconnect: true, // Автоматическое переподключение
|
|
134
|
-
reconnectAttempts: 5, // Максимальное количество попыток
|
|
135
|
-
reconnectDelay: 3000, // Задержка между попытками (мс)
|
|
136
|
-
rejectUnauthorized: true, // Проверка SSL-сертификатов
|
|
137
|
-
reconnectStrategy: 'exponential', // Стратегия задержки между попытками
|
|
138
|
-
enableAutoPing: true, // Автоматический ping/pong
|
|
139
|
-
pingInterval: 25000, // Интервал ping в мс
|
|
140
|
-
enableSessionPersistence: true // Сохранение сессии
|
|
141
|
-
}
|
|
85
|
+
// Отслеживание прогресса индексации
|
|
86
|
+
sdk.projects.on('indexing_progress', (data) => {
|
|
87
|
+
console.log(`Прогресс индексации: ${data.progress}%`);
|
|
88
|
+
console.log(`Обработано файлов: ${data.processedFiles} из ${data.totalFiles}`);
|
|
142
89
|
});
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Обработка ошибок в WebSocket
|
|
146
90
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
91
|
+
// Завершение индексации
|
|
92
|
+
sdk.projects.on('indexing_complete', (data) => {
|
|
93
|
+
console.log('Индексация завершена!', data.success ? 'Успешно' : 'С ошибками');
|
|
150
94
|
|
|
151
|
-
//
|
|
152
|
-
sdk.projects.
|
|
153
|
-
console.error('Ошибка WebSocket:', error.message);
|
|
154
|
-
if (error.type === 'connection_error') {
|
|
155
|
-
console.error('Проблема с подключением');
|
|
156
|
-
} else if (error.type === 'authentication_error') {
|
|
157
|
-
console.error('Ошибка аутентификации');
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
} catch (error) {
|
|
161
|
-
console.error('Ошибка при подключении:', error.message);
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Модули с поддержкой WebSocket
|
|
166
|
-
|
|
167
|
-
### Чат и рассуждения
|
|
168
|
-
|
|
169
|
-
```javascript
|
|
170
|
-
// Подключение WebSocket для чата
|
|
171
|
-
await sdk.chat.connectWebSocket();
|
|
172
|
-
|
|
173
|
-
// Подписка на события
|
|
174
|
-
sdk.chat.on('message_start', (data) => {
|
|
175
|
-
console.log('Начало сообщения:', data);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
sdk.chat.on('content_block_delta', (data) => {
|
|
179
|
-
if (data.delta?.type === 'thinking_delta') {
|
|
180
|
-
console.log('Фрагмент мышления:', data.delta.thinking);
|
|
181
|
-
}
|
|
95
|
+
// Отключение после завершения
|
|
96
|
+
sdk.projects.disconnectWebSocket();
|
|
182
97
|
});
|
|
183
|
-
|
|
184
|
-
// Отключение
|
|
185
|
-
await sdk.chat.disconnectWebSocket();
|
|
186
98
|
```
|
|
187
99
|
|
|
188
|
-
|
|
100
|
+
## Работа с зависимостями
|
|
189
101
|
|
|
190
102
|
```javascript
|
|
191
103
|
// Подключение к пространству имен зависимостей
|
|
@@ -200,68 +112,6 @@ sdk.dependencies.on('dependency_update', (data) => {
|
|
|
200
112
|
await sdk.dependencies.disconnectWebSocket();
|
|
201
113
|
```
|
|
202
114
|
|
|
203
|
-
### Проекты и индексация
|
|
204
|
-
|
|
205
|
-
```javascript
|
|
206
|
-
// Подключение к пространству имен проектов
|
|
207
|
-
await sdk.projects.connectWebSocket();
|
|
208
|
-
|
|
209
|
-
// Подписка на события индексации
|
|
210
|
-
sdk.projects.on('indexing_progress', (data) => {
|
|
211
|
-
console.log('Прогресс индексации:', data.progress);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
// Отключение
|
|
215
|
-
await sdk.projects.disconnectWebSocket();
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## Поддерживаемые события
|
|
219
|
-
|
|
220
|
-
Основные события, на которые можно подписаться:
|
|
221
|
-
|
|
222
|
-
| Событие | Описание | Примечание |
|
|
223
|
-
|---------|----------|------------|
|
|
224
|
-
| `message_start` | Начало сообщения | { id, model, type } |
|
|
225
|
-
| `content_block_start` | Начало блока контента | { content_block: { type }, index } |
|
|
226
|
-
| `content_block_delta` | Дельта блока контента | См. документацию для типов дельт |
|
|
227
|
-
| `content_block_stop` | Конец блока контента | { content_block: { type }, index } |
|
|
228
|
-
| `message_stop` | Конец сообщения | { id, type, stop_reason } |
|
|
229
|
-
| `error` | Ошибка | { message, code, ... } |
|
|
230
|
-
|
|
231
|
-
## Потоковая передача мышления
|
|
232
|
-
|
|
233
|
-
Самый простой способ получать мышление — использовать метод `streamChatWithThinking`:
|
|
234
|
-
|
|
235
|
-
```javascript
|
|
236
|
-
// Обработчик событий
|
|
237
|
-
const handleEvent = (eventType, data) => {
|
|
238
|
-
if (eventType === 'content_block_delta' && data.delta?.type === 'thinking_delta') {
|
|
239
|
-
console.log('Мышление:', data.delta.thinking);
|
|
240
|
-
} else if (eventType === 'content_block_delta' && data.delta?.type === 'text_delta') {
|
|
241
|
-
console.log('Ответ:', data.delta.text);
|
|
242
|
-
} else if (eventType === 'message_stop') {
|
|
243
|
-
console.log('Завершение ответа');
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
// Отправка запроса с потоковым мышлением
|
|
248
|
-
const messages = [
|
|
249
|
-
{ role: 'user', content: 'Объясни квантовую механику' }
|
|
250
|
-
];
|
|
251
|
-
|
|
252
|
-
const options = {
|
|
253
|
-
model: 'claude-3-7-sonnet-20240229',
|
|
254
|
-
thinking: true,
|
|
255
|
-
temperature: 0.7
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
const response = await sdk.chat.streamChatWithThinking(
|
|
259
|
-
messages,
|
|
260
|
-
options,
|
|
261
|
-
handleEvent
|
|
262
|
-
);
|
|
263
|
-
```
|
|
264
|
-
|
|
265
115
|
## Обработка ошибок
|
|
266
116
|
|
|
267
117
|
```javascript
|
|
@@ -272,28 +122,18 @@ try {
|
|
|
272
122
|
handleEvent
|
|
273
123
|
);
|
|
274
124
|
} catch (error) {
|
|
275
|
-
|
|
276
|
-
console.error('Ошибка подключения:', error.message);
|
|
277
|
-
} else {
|
|
278
|
-
console.error('Произошла ошибка:', error.message);
|
|
279
|
-
}
|
|
125
|
+
console.error('Произошла ошибка:', error.message);
|
|
280
126
|
}
|
|
281
127
|
```
|
|
282
128
|
|
|
283
|
-
##
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
```
|
|
297
|
-
## Дополнительная информация
|
|
298
|
-
|
|
299
|
-
Для детального описания всех возможностей WebSocket, смотрите [руководство по мышлению](./features/THINKING.md) и примеры в директории [examples/websocket](../examples/websocket).
|
|
129
|
+
## Основные события
|
|
130
|
+
|
|
131
|
+
| Событие | Описание |
|
|
132
|
+
|---------|----------|
|
|
133
|
+
| `message_start` | Начало сообщения |
|
|
134
|
+
| `thinking_delta` | Обновление мышления AI |
|
|
135
|
+
| `text_delta` | Часть текстового ответа |
|
|
136
|
+
| `message_stop` | Конец сообщения |
|
|
137
|
+
| `indexing_progress` | Прогресс индексации |
|
|
138
|
+
| `indexing_complete` | Завершение индексации |
|
|
139
|
+
| `error` | Уведомление об ошибке |
|