solver-sdk 2.7.5 → 3.1.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/README.md +200 -368
- package/dist/cjs/api/chat-api/index.js +23 -49
- package/dist/cjs/api/chat-api/index.js.map +1 -1
- package/dist/cjs/api/chat-api/interfaces.js +1 -0
- package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
- package/dist/cjs/api/context-api.js +6 -1
- package/dist/cjs/api/context-api.js.map +1 -1
- package/dist/cjs/api/models-api.js +43 -60
- package/dist/cjs/api/models-api.js.map +1 -1
- package/dist/cjs/api/projects-api.js +63 -293
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/api/search-api.js +131 -8
- package/dist/cjs/api/search-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +68 -322
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/index.js +3 -19
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/logger.js +4 -4
- package/dist/cjs/utils/logger.js.map +1 -1
- package/dist/esm/api/chat-api/index.js +22 -48
- package/dist/esm/api/chat-api/index.js.map +1 -1
- package/dist/esm/api/chat-api/interfaces.js +1 -0
- package/dist/esm/api/chat-api/interfaces.js.map +1 -1
- package/dist/esm/api/context-api.js +6 -1
- package/dist/esm/api/context-api.js.map +1 -1
- package/dist/esm/api/models-api.js +43 -60
- package/dist/esm/api/models-api.js.map +1 -1
- package/dist/esm/api/projects-api.js +63 -293
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/api/search-api.js +131 -8
- package/dist/esm/api/search-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +68 -322
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/index.js +2 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/logger.js +3 -3
- package/dist/esm/utils/logger.js.map +1 -1
- package/dist/types/api/chat-api/index.d.ts +1 -13
- package/dist/types/api/chat-api/index.d.ts.map +1 -1
- package/dist/types/api/chat-api/interfaces.d.ts +6 -54
- package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
- package/dist/types/api/chat-api/models.d.ts +3 -26
- package/dist/types/api/chat-api/models.d.ts.map +1 -1
- package/dist/types/api/context-api.d.ts.map +1 -1
- package/dist/types/api/models-api.d.ts +31 -62
- package/dist/types/api/models-api.d.ts.map +1 -1
- package/dist/types/api/projects-api.d.ts +47 -126
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/api/search-api.d.ts +147 -6
- package/dist/types/api/search-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +36 -86
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/sdk-options.d.ts +18 -66
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
- package/dist/types/utils/logger.d.ts +3 -3
- package/dist/types/utils/logger.d.ts.map +1 -1
- package/docs/README.md +53 -37
- package/docs/VSCODE_INTEGRATION.md +208 -371
- package/docs/indexing/INDEXING.md +658 -335
- package/package.json +26 -23
- package/dist/cjs/api/agents-api.js +0 -94
- package/dist/cjs/api/agents-api.js.map +0 -1
- package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
- package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/cjs/api/dependencies-api.js +0 -286
- package/dist/cjs/api/dependencies-api.js.map +0 -1
- package/dist/cjs/constants/websocket-events.constants.js +0 -170
- package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/cjs/simple-indexing-client.js +0 -138
- package/dist/cjs/simple-indexing-client.js.map +0 -1
- package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
- package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/cjs/utils/connection-state-manager.js +0 -133
- package/dist/cjs/utils/connection-state-manager.js.map +0 -1
- package/dist/cjs/utils/indexing-websocket-client.js +0 -107
- package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
- package/dist/cjs/utils/session-manager.js +0 -114
- package/dist/cjs/utils/session-manager.js.map +0 -1
- package/dist/cjs/utils/simple-connection-monitor.js +0 -52
- package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
- package/dist/cjs/utils/websocket-client.js +0 -638
- package/dist/cjs/utils/websocket-client.js.map +0 -1
- package/dist/cjs/ws/base-ws-client.js +0 -280
- package/dist/cjs/ws/base-ws-client.js.map +0 -1
- package/dist/cjs/ws/dependencies-ws-client.js +0 -11
- package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
- package/dist/cjs/ws/file-editing-ws-client.js +0 -162
- package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
- package/dist/cjs/ws/filesystem-ws-client.js +0 -305
- package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
- package/dist/cjs/ws/indexing-ws-client.js +0 -275
- package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
- package/dist/cjs/ws/notifications-ws-client.js +0 -12
- package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
- package/dist/esm/api/agents-api.js +0 -90
- package/dist/esm/api/agents-api.js.map +0 -1
- package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
- package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/esm/api/dependencies-api.js +0 -282
- package/dist/esm/api/dependencies-api.js.map +0 -1
- package/dist/esm/constants/websocket-events.constants.js +0 -167
- package/dist/esm/constants/websocket-events.constants.js.map +0 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
- package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/esm/simple-indexing-client.js +0 -134
- package/dist/esm/simple-indexing-client.js.map +0 -1
- package/dist/esm/utils/code-solver-websocket-client.js +0 -492
- package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/esm/utils/connection-state-manager.js +0 -129
- package/dist/esm/utils/connection-state-manager.js.map +0 -1
- package/dist/esm/utils/indexing-websocket-client.js +0 -103
- package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
- package/dist/esm/utils/session-manager.js +0 -109
- package/dist/esm/utils/session-manager.js.map +0 -1
- package/dist/esm/utils/simple-connection-monitor.js +0 -48
- package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
- package/dist/esm/utils/websocket-client.js +0 -634
- package/dist/esm/utils/websocket-client.js.map +0 -1
- package/dist/esm/ws/base-ws-client.js +0 -276
- package/dist/esm/ws/base-ws-client.js.map +0 -1
- package/dist/esm/ws/dependencies-ws-client.js +0 -7
- package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
- package/dist/esm/ws/file-editing-ws-client.js +0 -158
- package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
- package/dist/esm/ws/filesystem-ws-client.js +0 -301
- package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
- package/dist/esm/ws/indexing-ws-client.js +0 -271
- package/dist/esm/ws/indexing-ws-client.js.map +0 -1
- package/dist/esm/ws/notifications-ws-client.js +0 -8
- package/dist/esm/ws/notifications-ws-client.js.map +0 -1
- package/dist/types/api/agents-api.d.ts +0 -141
- package/dist/types/api/agents-api.d.ts.map +0 -1
- package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
- package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
- package/dist/types/api/dependencies-api.d.ts +0 -109
- package/dist/types/api/dependencies-api.d.ts.map +0 -1
- package/dist/types/constants/websocket-events.constants.d.ts +0 -144
- package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
- package/dist/types/simple-indexing-client.d.ts +0 -66
- package/dist/types/simple-indexing-client.d.ts.map +0 -1
- package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/connection-state-manager.d.ts +0 -94
- package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
- package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
- package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/session-manager.d.ts +0 -98
- package/dist/types/utils/session-manager.d.ts.map +0 -1
- package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
- package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
- package/dist/types/utils/websocket-client.d.ts +0 -233
- package/dist/types/utils/websocket-client.d.ts.map +0 -1
- package/dist/types/ws/base-ws-client.d.ts +0 -119
- package/dist/types/ws/base-ws-client.d.ts.map +0 -1
- package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
- package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
- package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
- package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
- package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
- package/dist/types/ws/indexing-ws-client.d.ts +0 -94
- package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/notifications-ws-client.d.ts +0 -5
- package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
- package/docs/ARCHITECTURE.md +0 -268
- package/docs/QUICK_START.md +0 -126
- package/docs/WEBSOCKET.md +0 -472
package/docs/QUICK_START.md
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# 🚀 Quick Start: VS Code Extension
|
|
2
|
-
|
|
3
|
-
**5-минутный старт для разработчиков VS Code Extension**
|
|
4
|
-
|
|
5
|
-
## 📦 Установка
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install solver-sdk
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## ⚡ Минимальный код (работает сразу!)
|
|
12
|
-
|
|
13
|
-
```typescript
|
|
14
|
-
// 1. Импорты
|
|
15
|
-
import { CodeSolverSDK, VSCodeCommandEvent, CommandExecutionResult } from 'solver-sdk';
|
|
16
|
-
import * as vscode from 'vscode';
|
|
17
|
-
|
|
18
|
-
// 2. Инициализация SDK
|
|
19
|
-
const sdk = await CodeSolverSDK.create({
|
|
20
|
-
baseURL: 'http://localhost:3000',
|
|
21
|
-
apiKey: 'your-api-key'
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
// 3. Обработчик VS Code команд
|
|
25
|
-
async function handleVSCodeCommand(command: VSCodeCommandEvent): Promise<CommandExecutionResult> {
|
|
26
|
-
const startTime = Date.now();
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
// Выполняем команду через VS Code API
|
|
30
|
-
const result = await vscode.commands.executeCommand(command.command, ...command.args);
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
requestId: command.requestId,
|
|
34
|
-
success: true,
|
|
35
|
-
result,
|
|
36
|
-
executionTime: Date.now() - startTime,
|
|
37
|
-
timestamp: Date.now()
|
|
38
|
-
};
|
|
39
|
-
} catch (error: any) {
|
|
40
|
-
return {
|
|
41
|
-
requestId: command.requestId,
|
|
42
|
-
success: false,
|
|
43
|
-
error: error.message,
|
|
44
|
-
executionTime: Date.now() - startTime,
|
|
45
|
-
timestamp: Date.now()
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// 4. Использование
|
|
51
|
-
const stream = await sdk.chat.streamChat(
|
|
52
|
-
[{ role: 'user', content: 'Создай компонент React Button' }],
|
|
53
|
-
{
|
|
54
|
-
thinking: true, // Адаптивный budget: 15000→12000→10000...→5000
|
|
55
|
-
onVSCodeCommand: handleVSCodeCommand // Подключаем обработчик
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
// 5. Обработка событий
|
|
60
|
-
for await (const chunk of stream) {
|
|
61
|
-
if (chunk.type === 'command_executed') {
|
|
62
|
-
console.log(`✅ Команда выполнена за ${chunk.commandResult?.executionTime}ms`);
|
|
63
|
-
} else if (chunk.type === 'text') {
|
|
64
|
-
console.log(`💬 AI ответ: ${chunk.text}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## 🎯 Результат
|
|
70
|
-
|
|
71
|
-
- **45ms** выполнение команд VS Code (вместо 443ms!)
|
|
72
|
-
- **Нативная скорость** IDE
|
|
73
|
-
- **Real-time feedback** от AI
|
|
74
|
-
|
|
75
|
-
## 📚 Что дальше?
|
|
76
|
-
|
|
77
|
-
- **Поддерживаемые команды:** [Полный список](VSCODE_INTEGRATION.md#поддерживаемые-команды)
|
|
78
|
-
- **Продвинутые примеры:** [Детальное руководство](VSCODE_INTEGRATION.md)
|
|
79
|
-
- **Архитектура:** [HTTP vs WebSocket](ARCHITECTURE.md) (если интересно)
|
|
80
|
-
|
|
81
|
-
## 🆘 Нужна помощь?
|
|
82
|
-
|
|
83
|
-
**Самые частые вопросы:**
|
|
84
|
-
|
|
85
|
-
### Q: Как зарегистрировать команды в Extension?
|
|
86
|
-
```json
|
|
87
|
-
// package.json
|
|
88
|
-
{
|
|
89
|
-
"contributes": {
|
|
90
|
-
"commands": [
|
|
91
|
-
{ "command": "aiSolver.native.createFile", "title": "AI: Create File" },
|
|
92
|
-
{ "command": "aiSolver.native.editFile", "title": "AI: Edit File" }
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Q: Как обрабатывать ошибки команд?
|
|
99
|
-
```typescript
|
|
100
|
-
onVSCodeCommand: async (command) => {
|
|
101
|
-
try {
|
|
102
|
-
const result = await vscode.commands.executeCommand(command.command, ...command.args);
|
|
103
|
-
return { requestId: command.requestId, success: true, result, ... };
|
|
104
|
-
} catch (error) {
|
|
105
|
-
return { requestId: command.requestId, success: false, error: error.message, ... };
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### Q: Какие команды поддерживаются?
|
|
111
|
-
```typescript
|
|
112
|
-
import { VSCodeCommands } from 'solver-sdk';
|
|
113
|
-
|
|
114
|
-
// Создание файлов
|
|
115
|
-
VSCodeCommands.CREATE_FILE = 'aiSolver.native.createFile'
|
|
116
|
-
|
|
117
|
-
// Редактирование
|
|
118
|
-
VSCodeCommands.EDIT_FILE = 'aiSolver.native.editFile'
|
|
119
|
-
|
|
120
|
-
// Поиск
|
|
121
|
-
VSCodeCommands.FIND_FILES = 'vscode.workspace.findFiles'
|
|
122
|
-
|
|
123
|
-
// И еще 5 команд...
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**🎉 Готово! Ваш Extension работает со скоростью нативного VS Code!**
|
package/docs/WEBSOCKET.md
DELETED
|
@@ -1,472 +0,0 @@
|
|
|
1
|
-
# WebSocket API v2.7.0
|
|
2
|
-
|
|
3
|
-
Полная документация по работе с WebSocket соединениями в AI Solver SDK v2.7.0 с поддержкой VS Code интеграции.
|
|
4
|
-
|
|
5
|
-
## 🆕 Что нового в v2.7.0
|
|
6
|
-
|
|
7
|
-
- ✅ **VS Code интеграция**: HTTP Streaming для команд VS Code
|
|
8
|
-
- ✅ **5 WebSocket namespace'ов**: расширенная функциональность
|
|
9
|
-
- ✅ **Гибридная архитектура**: HTTP + WebSocket оптимально
|
|
10
|
-
- ✅ **Performance**: 45ms VS Code команды vs 443ms старая архитектура
|
|
11
|
-
|
|
12
|
-
## Инициализация с контролируемыми подключениями
|
|
13
|
-
|
|
14
|
-
```javascript
|
|
15
|
-
import { CodeSolverSDK } from 'solver-sdk';
|
|
16
|
-
|
|
17
|
-
// Рекомендуемый способ v2.7.0
|
|
18
|
-
const sdk = await CodeSolverSDK.create({
|
|
19
|
-
baseURL: 'http://localhost:3000',
|
|
20
|
-
apiKey: 'dev_sk_test_12345678',
|
|
21
|
-
websocket: {
|
|
22
|
-
autoConnect: false, // Контролируемые WebSocket подключения
|
|
23
|
-
reconnect: true, // Автоматическое переподключение
|
|
24
|
-
reconnectAttempts: 3 // Максимум попыток
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
// Диагностика перед подключением
|
|
29
|
-
const wsStatus = await sdk.diagnoseWebSocket();
|
|
30
|
-
console.log('WebSocket readiness:', wsStatus);
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 🏗️ Архитектурный выбор: HTTP vs WebSocket
|
|
34
|
-
|
|
35
|
-
### 📊 **HTTP Streaming** (НОВОЕ в v2.7.0):
|
|
36
|
-
```typescript
|
|
37
|
-
// Используется для VS Code команд и AI чатов
|
|
38
|
-
const stream = await sdk.chat.streamChat(messages, {
|
|
39
|
-
onVSCodeCommand: async (command) => {
|
|
40
|
-
// 45ms latency - 10x улучшение!
|
|
41
|
-
return await executeVSCodeCommand(command);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Когда использовать HTTP Streaming:**
|
|
47
|
-
- ✅ AI модели ответы (Claude, GPT)
|
|
48
|
-
- ✅ VS Code команды (создание файлов, редактирование)
|
|
49
|
-
- ✅ Thinking токены
|
|
50
|
-
- ✅ Быстрые операции (<30 сек)
|
|
51
|
-
|
|
52
|
-
### 🔌 **WebSocket** (для специальных задач):
|
|
53
|
-
**Когда использовать WebSocket:**
|
|
54
|
-
- ✅ Индексирование файлов (прогресс в реальном времени)
|
|
55
|
-
- ✅ Анализ проектов (длительные операции)
|
|
56
|
-
- ✅ Граф зависимостей
|
|
57
|
-
- ✅ Двусторонняя связь
|
|
58
|
-
|
|
59
|
-
## WebSocket Namespaces (5 штук)
|
|
60
|
-
|
|
61
|
-
SDK поддерживает 3 WebSocket namespace'а:
|
|
62
|
-
|
|
63
|
-
1. **Default** (`/`) - события индексации, зависимостей и уведомления
|
|
64
|
-
2. **Filesystem** (`/filesystem`) - удаленный доступ к файловой системе (VS Code remote)
|
|
65
|
-
3. **File-editing** (`/file-editing`) - AI предложения изменений файлов
|
|
66
|
-
|
|
67
|
-
> **Примечания:**
|
|
68
|
-
> - **Dependencies и indexing** используют основной namespace `/`
|
|
69
|
-
> - **Reasoning** временно отключен из-за сложных зависимостей
|
|
70
|
-
|
|
71
|
-
## Projects WebSocket
|
|
72
|
-
|
|
73
|
-
### Подключение
|
|
74
|
-
|
|
75
|
-
```javascript
|
|
76
|
-
// Подключение к основному namespace для событий проектов
|
|
77
|
-
await sdk.projects.connectWebSocket();
|
|
78
|
-
|
|
79
|
-
// Проверка статуса подключения
|
|
80
|
-
const isConnected = sdk.projects.isWebSocketConnected();
|
|
81
|
-
console.log('Projects WebSocket connected:', isConnected);
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### События индексации
|
|
85
|
-
|
|
86
|
-
#### `indexing_progress`
|
|
87
|
-
|
|
88
|
-
Прогресс индексации в реальном времени.
|
|
89
|
-
|
|
90
|
-
```javascript
|
|
91
|
-
sdk.projects.onIndexingProgress((data) => {
|
|
92
|
-
console.log(`Progress: ${data.percentage}%`);
|
|
93
|
-
console.log(`Files: ${data.processedFiles}/${data.totalFiles}`);
|
|
94
|
-
console.log(`Current: ${data.currentFile}`);
|
|
95
|
-
console.log(`Status: ${data.status}`);
|
|
96
|
-
console.log(`Speed: ${data.filesPerSecond} files/sec`);
|
|
97
|
-
});
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
#### `indexing_complete`
|
|
101
|
-
|
|
102
|
-
Завершение индексации.
|
|
103
|
-
|
|
104
|
-
```javascript
|
|
105
|
-
sdk.projects.onIndexingComplete((data) => {
|
|
106
|
-
console.log('Indexing completed:', data.projectId);
|
|
107
|
-
console.log('Total files:', data.totalFiles);
|
|
108
|
-
console.log('Duration:', data.duration);
|
|
109
|
-
console.log('Success:', data.success);
|
|
110
|
-
console.log('Errors:', data.errors);
|
|
111
|
-
});
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
#### `indexing_error`
|
|
115
|
-
|
|
116
|
-
Ошибки индексации.
|
|
117
|
-
|
|
118
|
-
```javascript
|
|
119
|
-
sdk.projects.onIndexingError((error) => {
|
|
120
|
-
console.error('Indexing error:', error.message);
|
|
121
|
-
console.error('Project:', error.projectId);
|
|
122
|
-
console.error('File:', error.fileName);
|
|
123
|
-
console.error('Code:', error.errorCode);
|
|
124
|
-
});
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Пример полного цикла индексации
|
|
128
|
-
|
|
129
|
-
```javascript
|
|
130
|
-
async function indexProjectWithProgress(projectId) {
|
|
131
|
-
// Подключение к WebSocket
|
|
132
|
-
await sdk.projects.connectWebSocket();
|
|
133
|
-
|
|
134
|
-
// Настройка обработчиков
|
|
135
|
-
sdk.projects.onIndexingProgress((data) => {
|
|
136
|
-
const progress = Math.round(data.percentage);
|
|
137
|
-
console.log(`[${progress}%] ${data.currentFile}`);
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
sdk.projects.onIndexingComplete((data) => {
|
|
141
|
-
console.log('✅ Indexing completed!');
|
|
142
|
-
console.log(`📊 ${data.totalFiles} files indexed in ${data.duration}ms`);
|
|
143
|
-
sdk.projects.disconnectWebSocket();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
sdk.projects.onIndexingError((error) => {
|
|
147
|
-
console.error('❌ Indexing failed:', error.message);
|
|
148
|
-
sdk.projects.disconnectWebSocket();
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
// Запуск индексации
|
|
152
|
-
await sdk.projects.startIndexing(projectId);
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Reasoning WebSocket
|
|
157
|
-
|
|
158
|
-
### Подключение
|
|
159
|
-
|
|
160
|
-
```javascript
|
|
161
|
-
// Подключение к reasoning namespace
|
|
162
|
-
await sdk.reasoning.connectWebSocket();
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### События reasoning
|
|
166
|
-
|
|
167
|
-
#### `reasoning_started`
|
|
168
|
-
|
|
169
|
-
Начало reasoning процесса.
|
|
170
|
-
|
|
171
|
-
```javascript
|
|
172
|
-
sdk.reasoning.onReasoningStarted((data) => {
|
|
173
|
-
console.log('🚀 Reasoning started:', data.id);
|
|
174
|
-
console.log('📝 Query:', data.query);
|
|
175
|
-
console.log('🎯 Project:', data.projectId);
|
|
176
|
-
});
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
#### `reasoning_progress`
|
|
180
|
-
|
|
181
|
-
Прогресс reasoning.
|
|
182
|
-
|
|
183
|
-
```javascript
|
|
184
|
-
sdk.reasoning.onReasoningProgress((data) => {
|
|
185
|
-
console.log('⚡ Progress:', data.progress);
|
|
186
|
-
console.log('📍 Step:', data.currentStep);
|
|
187
|
-
console.log('🔍 Action:', data.action);
|
|
188
|
-
});
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
#### `reasoning_completed`
|
|
192
|
-
|
|
193
|
-
Завершение reasoning.
|
|
194
|
-
|
|
195
|
-
```javascript
|
|
196
|
-
sdk.reasoning.onReasoningCompleted((data) => {
|
|
197
|
-
console.log('✅ Reasoning completed:', data.id);
|
|
198
|
-
console.log('📊 Results:', data.results);
|
|
199
|
-
console.log('⏱️ Duration:', data.duration);
|
|
200
|
-
});
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
#### `reasoning_error`
|
|
204
|
-
|
|
205
|
-
Ошибки reasoning.
|
|
206
|
-
|
|
207
|
-
```javascript
|
|
208
|
-
sdk.reasoning.onReasoningError((error) => {
|
|
209
|
-
console.error('❌ Reasoning error:', error.message);
|
|
210
|
-
console.error('🆔 Reasoning ID:', error.reasoningId);
|
|
211
|
-
});
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### Пример reasoning с WebSocket
|
|
215
|
-
|
|
216
|
-
```javascript
|
|
217
|
-
async function runReasoningWithEvents(projectId, query) {
|
|
218
|
-
// Подключение
|
|
219
|
-
await sdk.reasoning.connectWebSocket();
|
|
220
|
-
|
|
221
|
-
// Обработчики
|
|
222
|
-
sdk.reasoning.onReasoningStarted((data) => {
|
|
223
|
-
console.log('🚀 Started reasoning:', data.id);
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
sdk.reasoning.onReasoningProgress((data) => {
|
|
227
|
-
console.log(`⚡ ${data.progress}% - ${data.currentStep}`);
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
sdk.reasoning.onReasoningCompleted((data) => {
|
|
231
|
-
console.log('✅ Results:', data.results);
|
|
232
|
-
sdk.reasoning.disconnectWebSocket();
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
// Создание и запуск
|
|
236
|
-
const reasoning = await sdk.reasoning.create({
|
|
237
|
-
projectId: projectId,
|
|
238
|
-
query: query
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
await sdk.reasoning.start(reasoning.id);
|
|
242
|
-
}
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Chat WebSocket
|
|
246
|
-
|
|
247
|
-
### Подключение
|
|
248
|
-
|
|
249
|
-
```javascript
|
|
250
|
-
// Подключение к chat namespace
|
|
251
|
-
await sdk.chat.connectWebSocket();
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### События потокового чата
|
|
255
|
-
|
|
256
|
-
#### `text_delta`
|
|
257
|
-
|
|
258
|
-
Фрагменты текстового ответа.
|
|
259
|
-
|
|
260
|
-
```javascript
|
|
261
|
-
sdk.chat.onTextDelta((text) => {
|
|
262
|
-
process.stdout.write(text); // Вывод в реальном времени
|
|
263
|
-
});
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
#### `thinking_delta`
|
|
267
|
-
|
|
268
|
-
Фрагменты thinking блоков (Claude 4).
|
|
269
|
-
|
|
270
|
-
```javascript
|
|
271
|
-
sdk.chat.onThinkingDelta((thinking) => {
|
|
272
|
-
console.log('🧠 Thinking:', thinking);
|
|
273
|
-
});
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
#### `tool_use`
|
|
277
|
-
|
|
278
|
-
Использование инструментов AI.
|
|
279
|
-
|
|
280
|
-
```javascript
|
|
281
|
-
sdk.chat.onToolUse((tool) => {
|
|
282
|
-
console.log('🔧 Tool used:', tool.name);
|
|
283
|
-
console.log('📥 Input:', tool.input);
|
|
284
|
-
});
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
#### `message_complete`
|
|
288
|
-
|
|
289
|
-
Завершение сообщения.
|
|
290
|
-
|
|
291
|
-
```javascript
|
|
292
|
-
sdk.chat.onMessageComplete((message) => {
|
|
293
|
-
console.log('✅ Message completed');
|
|
294
|
-
console.log('📄 Full content:', message.content);
|
|
295
|
-
});
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
### Потоковый чат с thinking
|
|
299
|
-
|
|
300
|
-
```javascript
|
|
301
|
-
async function streamChatWithThinking(messages) {
|
|
302
|
-
// Подключение
|
|
303
|
-
await sdk.chat.connectWebSocket();
|
|
304
|
-
|
|
305
|
-
let fullResponse = '';
|
|
306
|
-
let thinkingContent = '';
|
|
307
|
-
|
|
308
|
-
// Обработчики
|
|
309
|
-
sdk.chat.onThinkingDelta((thinking) => {
|
|
310
|
-
thinkingContent += thinking;
|
|
311
|
-
console.log('🧠 Thinking fragment:', thinking);
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
sdk.chat.onTextDelta((text) => {
|
|
315
|
-
fullResponse += text;
|
|
316
|
-
process.stdout.write(text);
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
sdk.chat.onToolUse((tool) => {
|
|
320
|
-
console.log(`\n🔧 Using tool: ${tool.name}`);
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
sdk.chat.onMessageComplete((message) => {
|
|
324
|
-
console.log('\n✅ Response completed');
|
|
325
|
-
console.log('💭 Full thinking:', thinkingContent);
|
|
326
|
-
sdk.chat.disconnectWebSocket();
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
// Отправка с thinking
|
|
330
|
-
await sdk.chat.stream(messages, {
|
|
331
|
-
thinking: true,
|
|
332
|
-
model: 'claude-3-5-sonnet-20241022',
|
|
333
|
-
tool_choice: { type: 'auto' }
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
## Управление подключениями
|
|
339
|
-
|
|
340
|
-
### Подключение/отключение
|
|
341
|
-
|
|
342
|
-
```javascript
|
|
343
|
-
// Подключение к конкретным namespace
|
|
344
|
-
await sdk.projects.connectWebSocket();
|
|
345
|
-
await sdk.reasoning.connectWebSocket();
|
|
346
|
-
await sdk.chat.connectWebSocket();
|
|
347
|
-
|
|
348
|
-
// Отключение
|
|
349
|
-
await sdk.projects.disconnectWebSocket();
|
|
350
|
-
await sdk.reasoning.disconnectWebSocket();
|
|
351
|
-
await sdk.chat.disconnectWebSocket();
|
|
352
|
-
|
|
353
|
-
// Проверка статуса
|
|
354
|
-
console.log('Projects WS:', sdk.projects.isWebSocketConnected());
|
|
355
|
-
console.log('Reasoning WS:', sdk.reasoning.isWebSocketConnected());
|
|
356
|
-
console.log('Chat WS:', sdk.chat.isWebSocketConnected());
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Диагностика WebSocket
|
|
360
|
-
|
|
361
|
-
```javascript
|
|
362
|
-
// Полная диагностика WebSocket
|
|
363
|
-
const wsStatus = await sdk.diagnoseWebSocket();
|
|
364
|
-
console.log('WebSocket Diagnostics:', wsStatus);
|
|
365
|
-
|
|
366
|
-
/* Пример ответа:
|
|
367
|
-
{
|
|
368
|
-
projects: { connected: true, url: 'ws://localhost:3000/projects' },
|
|
369
|
-
reasoning: { connected: false, url: 'ws://localhost:3000/reasoning' },
|
|
370
|
-
chat: { connected: true, url: 'ws://localhost:3000/chat' }
|
|
371
|
-
}
|
|
372
|
-
*/
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
## Обработка ошибок WebSocket
|
|
376
|
-
|
|
377
|
-
```javascript
|
|
378
|
-
// Обработка ошибок подключения
|
|
379
|
-
try {
|
|
380
|
-
await sdk.projects.connectWebSocket();
|
|
381
|
-
} catch (error) {
|
|
382
|
-
console.error('WebSocket connection failed:', error.message);
|
|
383
|
-
// Fallback к HTTP API
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
// Обработка разрывов соединения
|
|
387
|
-
sdk.projects.on('disconnect', () => {
|
|
388
|
-
console.log('Projects WebSocket disconnected');
|
|
389
|
-
// Логика переподключения
|
|
390
|
-
});
|
|
391
|
-
|
|
392
|
-
sdk.reasoning.on('error', (error) => {
|
|
393
|
-
console.error('Reasoning WebSocket error:', error);
|
|
394
|
-
});
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
## WebSocket URLs
|
|
398
|
-
|
|
399
|
-
| Namespace | URL | Описание |
|
|
400
|
-
|-----------|-----|----------|
|
|
401
|
-
| Projects | `ws://localhost:3000/projects` | События проектов и индексации |
|
|
402
|
-
| Reasoning | `ws://localhost:3000/reasoning` | События AI reasoning |
|
|
403
|
-
| Chat | `ws://localhost:3000/chat` | Потоковый чат и thinking |
|
|
404
|
-
|
|
405
|
-
## Аутентификация
|
|
406
|
-
|
|
407
|
-
WebSocket соединения автоматически используют API ключ из настроек SDK:
|
|
408
|
-
|
|
409
|
-
```javascript
|
|
410
|
-
const sdk = CodeSolverSDK.create({
|
|
411
|
-
baseURL: 'http://localhost:3000',
|
|
412
|
-
apiKey: 'dev_sk_test_12345678', // Автоматически используется для WS
|
|
413
|
-
autoConnect: false
|
|
414
|
-
});
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
## Производительность
|
|
418
|
-
|
|
419
|
-
### Рекомендации
|
|
420
|
-
|
|
421
|
-
1. **Используйте autoConnect: false** для контроля подключений
|
|
422
|
-
2. **Подключайтесь только к нужным namespace** для экономии ресурсов
|
|
423
|
-
3. **Отключайтесь после завершения** операций
|
|
424
|
-
4. **Используйте диагностику** для мониторинга состояния
|
|
425
|
-
|
|
426
|
-
### Пример оптимизированного использования
|
|
427
|
-
|
|
428
|
-
```javascript
|
|
429
|
-
async function optimizedWorkflow(projectId, query) {
|
|
430
|
-
const sdk = CodeSolverSDK.create({
|
|
431
|
-
baseURL: 'http://localhost:3000',
|
|
432
|
-
apiKey: 'dev_sk_test_12345678',
|
|
433
|
-
autoConnect: false
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
try {
|
|
437
|
-
// 1. Индексация проекта
|
|
438
|
-
await sdk.projects.connectWebSocket();
|
|
439
|
-
await sdk.projects.startIndexing(projectId);
|
|
440
|
-
|
|
441
|
-
await new Promise(resolve => {
|
|
442
|
-
sdk.projects.onIndexingComplete(() => {
|
|
443
|
-
sdk.projects.disconnectWebSocket();
|
|
444
|
-
resolve();
|
|
445
|
-
});
|
|
446
|
-
});
|
|
447
|
-
|
|
448
|
-
// 2. Reasoning
|
|
449
|
-
await sdk.reasoning.connectWebSocket();
|
|
450
|
-
const reasoning = await sdk.reasoning.create({ projectId, query });
|
|
451
|
-
await sdk.reasoning.start(reasoning.id);
|
|
452
|
-
|
|
453
|
-
await new Promise(resolve => {
|
|
454
|
-
sdk.reasoning.onReasoningCompleted(() => {
|
|
455
|
-
sdk.reasoning.disconnectWebSocket();
|
|
456
|
-
resolve();
|
|
457
|
-
});
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
console.log('✅ Workflow completed');
|
|
461
|
-
|
|
462
|
-
} catch (error) {
|
|
463
|
-
console.error('❌ Workflow failed:', error);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
---
|
|
469
|
-
|
|
470
|
-
**Документация WebSocket API для SDK v2.5.0**
|
|
471
|
-
**Совместимость:** AI Solver Backend v1.0.0
|
|
472
|
-
**Обновлено:** 28 июня 2025
|