solver-sdk 2.8.0 → 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.
Files changed (197) hide show
  1. package/README.md +200 -368
  2. package/dist/cjs/api/chat-api/index.js +23 -49
  3. package/dist/cjs/api/chat-api/index.js.map +1 -1
  4. package/dist/cjs/api/chat-api/interfaces.js +1 -0
  5. package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
  6. package/dist/cjs/api/context-api.js +6 -1
  7. package/dist/cjs/api/context-api.js.map +1 -1
  8. package/dist/cjs/api/models-api.js +43 -60
  9. package/dist/cjs/api/models-api.js.map +1 -1
  10. package/dist/cjs/api/projects-api.js +63 -293
  11. package/dist/cjs/api/projects-api.js.map +1 -1
  12. package/dist/cjs/api/search-api.js +131 -8
  13. package/dist/cjs/api/search-api.js.map +1 -1
  14. package/dist/cjs/code-solver-sdk.js +68 -322
  15. package/dist/cjs/code-solver-sdk.js.map +1 -1
  16. package/dist/cjs/index.js +3 -19
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/utils/logger.js +4 -4
  19. package/dist/cjs/utils/logger.js.map +1 -1
  20. package/dist/esm/api/chat-api/index.js +22 -48
  21. package/dist/esm/api/chat-api/index.js.map +1 -1
  22. package/dist/esm/api/chat-api/interfaces.js +1 -0
  23. package/dist/esm/api/chat-api/interfaces.js.map +1 -1
  24. package/dist/esm/api/context-api.js +6 -1
  25. package/dist/esm/api/context-api.js.map +1 -1
  26. package/dist/esm/api/models-api.js +43 -60
  27. package/dist/esm/api/models-api.js.map +1 -1
  28. package/dist/esm/api/projects-api.js +63 -293
  29. package/dist/esm/api/projects-api.js.map +1 -1
  30. package/dist/esm/api/search-api.js +131 -8
  31. package/dist/esm/api/search-api.js.map +1 -1
  32. package/dist/esm/code-solver-sdk.js +68 -322
  33. package/dist/esm/code-solver-sdk.js.map +1 -1
  34. package/dist/esm/index.js +2 -18
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/utils/logger.js +3 -3
  37. package/dist/esm/utils/logger.js.map +1 -1
  38. package/dist/types/api/chat-api/index.d.ts +1 -13
  39. package/dist/types/api/chat-api/index.d.ts.map +1 -1
  40. package/dist/types/api/chat-api/interfaces.d.ts +6 -54
  41. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
  42. package/dist/types/api/chat-api/models.d.ts +3 -26
  43. package/dist/types/api/chat-api/models.d.ts.map +1 -1
  44. package/dist/types/api/context-api.d.ts.map +1 -1
  45. package/dist/types/api/models-api.d.ts +31 -62
  46. package/dist/types/api/models-api.d.ts.map +1 -1
  47. package/dist/types/api/projects-api.d.ts +47 -126
  48. package/dist/types/api/projects-api.d.ts.map +1 -1
  49. package/dist/types/api/search-api.d.ts +147 -6
  50. package/dist/types/api/search-api.d.ts.map +1 -1
  51. package/dist/types/code-solver-sdk.d.ts +36 -86
  52. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  53. package/dist/types/index.d.ts +1 -14
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/types/interfaces/sdk-options.d.ts +18 -66
  56. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  57. package/dist/types/utils/logger.d.ts +3 -3
  58. package/dist/types/utils/logger.d.ts.map +1 -1
  59. package/docs/README.md +53 -37
  60. package/docs/VSCODE_INTEGRATION.md +208 -371
  61. package/docs/indexing/INDEXING.md +658 -335
  62. package/package.json +26 -23
  63. package/dist/cjs/api/agents-api.js +0 -94
  64. package/dist/cjs/api/agents-api.js.map +0 -1
  65. package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
  66. package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
  67. package/dist/cjs/api/dependencies-api.js +0 -286
  68. package/dist/cjs/api/dependencies-api.js.map +0 -1
  69. package/dist/cjs/constants/websocket-events.constants.js +0 -170
  70. package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
  71. package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
  72. package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
  73. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
  74. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  75. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
  76. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
  77. package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
  78. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
  79. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
  80. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  81. package/dist/cjs/simple-indexing-client.js +0 -138
  82. package/dist/cjs/simple-indexing-client.js.map +0 -1
  83. package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
  84. package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
  85. package/dist/cjs/utils/connection-state-manager.js +0 -133
  86. package/dist/cjs/utils/connection-state-manager.js.map +0 -1
  87. package/dist/cjs/utils/indexing-websocket-client.js +0 -107
  88. package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
  89. package/dist/cjs/utils/session-manager.js +0 -114
  90. package/dist/cjs/utils/session-manager.js.map +0 -1
  91. package/dist/cjs/utils/simple-connection-monitor.js +0 -52
  92. package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
  93. package/dist/cjs/utils/websocket-client.js +0 -638
  94. package/dist/cjs/utils/websocket-client.js.map +0 -1
  95. package/dist/cjs/ws/base-ws-client.js +0 -280
  96. package/dist/cjs/ws/base-ws-client.js.map +0 -1
  97. package/dist/cjs/ws/dependencies-ws-client.js +0 -11
  98. package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
  99. package/dist/cjs/ws/file-editing-ws-client.js +0 -162
  100. package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
  101. package/dist/cjs/ws/filesystem-ws-client.js +0 -305
  102. package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
  103. package/dist/cjs/ws/indexing-ws-client.js +0 -275
  104. package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
  105. package/dist/cjs/ws/notifications-ws-client.js +0 -12
  106. package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
  107. package/dist/esm/api/agents-api.js +0 -90
  108. package/dist/esm/api/agents-api.js.map +0 -1
  109. package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
  110. package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
  111. package/dist/esm/api/dependencies-api.js +0 -282
  112. package/dist/esm/api/dependencies-api.js.map +0 -1
  113. package/dist/esm/constants/websocket-events.constants.js +0 -167
  114. package/dist/esm/constants/websocket-events.constants.js.map +0 -1
  115. package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
  116. package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
  117. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
  118. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  119. package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
  120. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
  121. package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
  122. package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
  123. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
  124. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  125. package/dist/esm/simple-indexing-client.js +0 -134
  126. package/dist/esm/simple-indexing-client.js.map +0 -1
  127. package/dist/esm/utils/code-solver-websocket-client.js +0 -492
  128. package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
  129. package/dist/esm/utils/connection-state-manager.js +0 -129
  130. package/dist/esm/utils/connection-state-manager.js.map +0 -1
  131. package/dist/esm/utils/indexing-websocket-client.js +0 -103
  132. package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
  133. package/dist/esm/utils/session-manager.js +0 -109
  134. package/dist/esm/utils/session-manager.js.map +0 -1
  135. package/dist/esm/utils/simple-connection-monitor.js +0 -48
  136. package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
  137. package/dist/esm/utils/websocket-client.js +0 -634
  138. package/dist/esm/utils/websocket-client.js.map +0 -1
  139. package/dist/esm/ws/base-ws-client.js +0 -276
  140. package/dist/esm/ws/base-ws-client.js.map +0 -1
  141. package/dist/esm/ws/dependencies-ws-client.js +0 -7
  142. package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
  143. package/dist/esm/ws/file-editing-ws-client.js +0 -158
  144. package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
  145. package/dist/esm/ws/filesystem-ws-client.js +0 -301
  146. package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
  147. package/dist/esm/ws/indexing-ws-client.js +0 -271
  148. package/dist/esm/ws/indexing-ws-client.js.map +0 -1
  149. package/dist/esm/ws/notifications-ws-client.js +0 -8
  150. package/dist/esm/ws/notifications-ws-client.js.map +0 -1
  151. package/dist/types/api/agents-api.d.ts +0 -141
  152. package/dist/types/api/agents-api.d.ts.map +0 -1
  153. package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
  154. package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
  155. package/dist/types/api/dependencies-api.d.ts +0 -109
  156. package/dist/types/api/dependencies-api.d.ts.map +0 -1
  157. package/dist/types/constants/websocket-events.constants.d.ts +0 -144
  158. package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
  159. package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
  160. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
  161. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
  162. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
  163. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
  164. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
  165. package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
  166. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
  167. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
  168. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
  169. package/dist/types/simple-indexing-client.d.ts +0 -66
  170. package/dist/types/simple-indexing-client.d.ts.map +0 -1
  171. package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
  172. package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
  173. package/dist/types/utils/connection-state-manager.d.ts +0 -94
  174. package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
  175. package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
  176. package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
  177. package/dist/types/utils/session-manager.d.ts +0 -98
  178. package/dist/types/utils/session-manager.d.ts.map +0 -1
  179. package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
  180. package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
  181. package/dist/types/utils/websocket-client.d.ts +0 -233
  182. package/dist/types/utils/websocket-client.d.ts.map +0 -1
  183. package/dist/types/ws/base-ws-client.d.ts +0 -119
  184. package/dist/types/ws/base-ws-client.d.ts.map +0 -1
  185. package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
  186. package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
  187. package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
  188. package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
  189. package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
  190. package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
  191. package/dist/types/ws/indexing-ws-client.d.ts +0 -94
  192. package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
  193. package/dist/types/ws/notifications-ws-client.d.ts +0 -5
  194. package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
  195. package/docs/ARCHITECTURE.md +0 -268
  196. package/docs/QUICK_START.md +0 -126
  197. package/docs/WEBSOCKET.md +0 -472
@@ -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