solver-sdk 2.8.0 → 3.1.1

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 +327 -360
  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 +67 -295
  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 +67 -295
  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 +50 -127
  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
package/README.md CHANGED
@@ -1,86 +1,20 @@
1
- # Solver SDK v2.7.0 🚀
1
+ # Code Solver SDK v3.0
2
2
 
3
- **Production-ready** SDK для интеграции с Code Solver Backend API с поддержкой **VS Code Extension**.
3
+ > **🚀 Версия 3.0 - полный переход на HTTP API**
4
+ > Убрана поддержка WebSocket, все взаимодействие происходит через REST API
4
5
 
5
- **🎉 Версия 2.7.0:** **VS Code интеграция с 10x ускорением!** HTTP Streaming для команд VS Code, гибридная архитектура, 45ms vs 443ms старая архитектура.
6
-
7
- <p align="center">
8
- <a href="https://www.npmjs.com/package/solver-sdk"><img src="https://img.shields.io/npm/v/solver-sdk.svg" alt="NPM Version" /></a>
9
- <a href="https://www.npmjs.com/package/solver-sdk"><img src="https://img.shields.io/npm/dm/solver-sdk.svg" alt="NPM Downloads" /></a>
10
- <a href="https://github.com/code-solver/browser-sdk/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/solver-sdk.svg" alt="License" /></a>
11
- </p>
12
-
13
- ## ⚡ Что нового в v2.7.0
14
-
15
- - 🚀 **VS Code интеграция:** Нативное выполнение команд через HTTP Streaming
16
- - ⚡ **10x ускорение:** 45ms vs 443ms старая архитектура команд VS Code
17
- - 🏗️ **Гибридная архитектура:** HTTP Streaming + WebSocket для оптимальной производительности
18
- - 🎯 **Новые типы:** `VSCodeCommandEvent`, `CommandExecutionResult`, `VSCodeCommands`
19
- - 🔄 **Двусторонняя связь:** Backend ←→ SDK ←→ Extension
20
- - 📊 **Real-time feedback:** Мгновенные результаты выполнения команд
21
- - 🛡️ **Backwards compatible:** Все существующие методы работают без изменений
22
-
23
- ## 📋 Для разработчиков
24
-
25
- ### 🎯 **VS Code Extension разработчики**
26
- - 📄 **[5-минутный старт](docs/QUICK_START.md)** - минимальный код для работы
27
- - 📚 **[Полное руководство](docs/VSCODE_INTEGRATION.md)** - детальные примеры и best practices
28
-
29
- ### 🔧 **Backend интеграция**
30
- - 🏗️ **[Архитектура](docs/ARCHITECTURE.md)** - HTTP vs WebSocket решения
31
- - 🔌 **[WebSocket API](docs/WEBSOCKET.md)** - события и namespace'ы
32
- - 🔑 **[Аутентификация](docs/AUTHENTICATION.md)** - настройка API ключей
33
-
34
- ### 📖 **Остальная документация**
35
- - [Основные возможности](#основные-возможности)
36
- - [Установка](#установка)
37
- - [Быстрый старт](#быстрый-старт)
38
- - [API компоненты](#api)
39
- - [Примеры использования](#примеры)
6
+ JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, поиска, работы с чатом и анализа зависимостей.
40
7
 
41
8
  ## 🎯 Основные возможности
42
9
 
43
- - **🚀 Production готовность (v2.5.0)**:
44
- - "Fail Fast" подход без fallback'ов
45
- - Честные ошибки без маскировки проблем
46
- - Полный контроль WebSocket подключений
47
- - API диагностика с детальными отчетами
48
-
49
- - **🎮 Гибкая инициализация (v2.5.0)**:
50
- - `CodeSolverSDK.create()` - с валидацией API
51
- - `new CodeSolverSDK()` - быстрая инициализация
52
- - `autoConnect: false` - ручное управление WebSocket
53
- - Алиасы методов для удобства (`create()`, `start()`, `stop()`)
54
-
55
- - **🔌 Контролируемые WebSocket**:
56
- - Ручное подключение только когда нужно
57
- - Автоматический ping/pong механизм
58
- - Интеллектуальное переподключение
59
- - Мониторинг здоровья соединения
60
-
61
- - **🧠 Потоковое мышление AI**:
62
- - `streamChat()` с поддержкой Anthropic Claude thinking и VS Code команд
63
- - Полная поддержка `ContentBlock[]` и `signature` блоков
64
- - Сохранение криптографических подписей
65
- - Обработка `signature_delta` событий
66
-
67
- - **🎯 VS Code Extension интеграция (v2.7.0)**:
68
- - Нативное выполнение команд через HTTP Streaming
69
- - 10x ускорение (45ms vs 443ms старая архитектура)
70
- - Поддержка всех VS Code команд (создание файлов, редактирование, поиск)
71
- - Real-time feedback и error handling
72
-
73
- - **🔍 Семантический поиск**:
74
- - Инкрементальная индексация файлов
75
- - Семантический поиск по коду
76
- - Работа с зависимостями проектов
77
-
78
- - **🌐 Кросс-платформенность**:
79
- - ESM, CommonJS, браузер, Node.js
80
- - Полная TypeScript типизация
81
- - Региональные Anthropic endpoints
82
-
83
- ## Установка
10
+ - **💬 Chat API** - взаимодействие с AI моделями (Claude, GPT)
11
+ - **🔍 Code Search** - семантический поиск по коду
12
+ - **📊 Project Indexing** - индексация и анализ проектов
13
+ - **🕸️ Dependencies** - анализ зависимостей кода
14
+ - **📝 Context API** - получение контекста для AI
15
+ - **🛠️ Code Modification** - модификация кода через AI
16
+
17
+ ## 📦 Установка
84
18
 
85
19
  ```bash
86
20
  npm install solver-sdk
@@ -88,368 +22,401 @@ npm install solver-sdk
88
22
 
89
23
  ## 🚀 Быстрый старт
90
24
 
91
- ### 🎯 **VS Code Extension интеграция** (основной use case)
92
-
93
25
  ```javascript
94
- // 📄 Полный код в docs/QUICK_START.md
95
26
  import { CodeSolverSDK } from 'solver-sdk';
96
27
 
97
- const sdk = await CodeSolverSDK.create({
98
- baseURL: 'http://localhost:3000',
99
- apiKey: 'your-api-key'
100
- });
101
-
102
- // 45ms команды VS Code - 10x ускорение!
103
- const stream = await sdk.chat.streamChat(messages, {
104
- onVSCodeCommand: async (command) => {
105
- return await vscode.commands.executeCommand(command.command, ...command.args);
106
- }
107
- });
108
- ```
109
-
110
- **📚 [Смотрите полный 5-минутный старт](docs/QUICK_START.md)**
111
-
112
- ### ✅ Быстрая инициализация (без проверки API)
113
-
114
- ```javascript
115
- const { CodeSolverSDK } = require('solver-sdk');
116
-
117
- // Быстрое создание без валидации
28
+ // Создание SDK
118
29
  const sdk = new CodeSolverSDK({
119
- baseURL: 'http://localhost:3000',
30
+ baseURL: 'https://your-api-server.com',
120
31
  apiKey: 'your-api-key',
121
- websocket: { autoConnect: false } // 🔧 Важно!
32
+ timeout: 30000
122
33
  });
123
34
 
124
- // Использование с честными ошибками
125
- try {
126
- const projects = await sdk.projects.getAllProjects();
127
- console.log('✅ Проекты:', projects);
128
- } catch (error) {
129
- console.error('❌ Честная ошибка:', error.message);
130
- // Нет fallback'ов - проблему нужно решать
131
- }
132
- ```
35
+ // Проверка здоровья API
36
+ const isHealthy = await sdk.checkHealth();
37
+ console.log('API доступен:', isHealthy);
133
38
 
134
- ### В среде ESM (Node.js)
39
+ // Создание проекта
40
+ const project = await sdk.projects.createProject({
41
+ name: 'My Project',
42
+ path: '/path/to/project',
43
+ description: 'Описание проекта'
44
+ });
135
45
 
136
- ```javascript
137
- import { CodeSolverSDK } from 'solver-sdk';
46
+ // Индексация проекта
47
+ const indexingResult = await sdk.indexing.indexProject(
48
+ '/path/to/project',
49
+ 'My Project'
50
+ );
138
51
 
139
- // Создание экземпляра SDK
140
- const sdk = new CodeSolverSDK({
141
- baseURL: 'https://localhost:3000',
142
- apiKey: 'your-api-key'
143
- });
52
+ // Ожидание завершения индексации
53
+ const finalStatus = await sdk.indexing.waitForCompletion(indexingResult.projectId);
144
54
 
145
- // Пример использования
146
- async function example() {
147
- const isHealthy = await sdk.checkHealth();
148
- console.log('Сервер доступен:', isHealthy);
149
- }
55
+ // Поиск кода
56
+ const searchResults = await sdk.search.searchCode({
57
+ projectId: project.projectId,
58
+ query: 'function calculateSum',
59
+ maxResults: 10
60
+ });
150
61
 
151
- example().catch(console.error);
62
+ // Работа с чатом
63
+ const response = await sdk.chat.chat([
64
+ { role: 'user', content: 'Объясни этот код' }
65
+ ], {
66
+ model: 'claude-3-5-sonnet-20241022',
67
+ maxTokens: 8192
68
+ });
152
69
  ```
153
70
 
154
- ### В браузере
71
+ ## 📋 API Методы
155
72
 
156
- ```html
157
- <script src="node_modules/solver-sdk/dist/umd/code-solver-sdk.min.js"></script>
158
- <script>
159
- // SDK доступен глобально как CodeSolverSDK
160
- const sdk = new CodeSolverSDK.default({
161
- baseURL: 'https://localhost:3000',
162
- apiKey: 'your-api-key'
73
+ ### 📁 Projects API
74
+ ```javascript
75
+ // Создание проекта
76
+ await sdk.projects.createProject({
77
+ name: 'Project Name',
78
+ path: '/project/path',
79
+ description: 'Description'
163
80
  });
164
81
 
165
- // Пример использования
166
- sdk.checkHealth()
167
- .then(isHealthy => console.log('Сервер доступен:', isHealthy))
168
- .catch(console.error);
169
- </script>
170
- ```
171
-
172
- ## API
173
-
174
- ### Основные компоненты
175
-
176
- - `CodeSolverSDK` - Основной класс SDK
177
- - `ReasoningApi` - API для работы с рассуждениями
178
- - `ProjectsApi` - API для работы с проектами
179
- - `SearchApi` - API для поиска кода
180
- - `AgentsApi` - API для работы с агентами
181
- - `ContextApi` - API для работы с контекстом кода
182
- - `DependenciesApi` - API для работы с зависимостями
183
- - `ChatApi` - API для работы с чатом и потоковой передачей мышления
184
-
185
- ### Опции SDK
186
-
187
- | Опция | Тип | Описание | Обязательна |
188
- |-------|-----|----------|-------------|
189
- | `baseURL` | string | Базовый URL API | Да |
190
- | `apiKey` | string | API ключ для авторизации | Нет |
191
- | `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
192
- | `headers` | object | Пользовательские HTTP заголовки | Нет |
193
- | `httpsAgent` | object | Опции для HTTPS агента (Node.js) | Нет |
194
- | `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
195
- | `websocket` | object | Настройки WebSocket (reconnect, timeout и др.) | Нет |
82
+ // Получение списка проектов
83
+ await sdk.projects.getProjects();
196
84
 
197
- ## Продвинутые функции
198
-
199
- ### Работа с проектами
85
+ // Получение информации о проекте
86
+ await sdk.projects.getProject(projectId);
87
+ ```
200
88
 
89
+ ### 🔄 Projects & Indexing API
201
90
  ```javascript
202
- // Получение списка проектов
203
- const projects = await sdk.projects.getAllProjects();
204
- console.log('Проекты:', projects);
91
+ // Создание/поиск проекта и запуск индексации
92
+ const project = await sdk.projects.findOrCreateProject('/path/to/project', 'Project Name');
93
+ await sdk.projects.startIndexing(project.id);
205
94
 
206
- // Создание нового проекта
207
- const newProject = await sdk.projects.createProject('Мой проект', '/path/to/project');
208
- console.log('Новый проект:', newProject);
95
+ // Получение статуса индексации
96
+ const status = await sdk.projects.getProjectStatus(project.id);
209
97
 
210
- // Запуск индексации
211
- await sdk.projects.indexProject(newProject.id);
98
+ // Ожидание завершения индексации
99
+ while (status.indexStatus !== 'complete') {
100
+ await new Promise(resolve => setTimeout(resolve, 2000));
101
+ status = await sdk.projects.getProjectStatus(project.id);
102
+ }
212
103
  ```
213
104
 
214
- ### Поиск кода
215
-
105
+ ### 🔍 Search API
216
106
  ```javascript
217
107
  // Поиск кода
218
- const searchResults = await sdk.search.searchCode(projectId, {
219
- query: 'function example',
220
- limit: 10
108
+ await sdk.search.searchCode({
109
+ projectId: 'project-id',
110
+ query: 'search query',
111
+ maxResults: 20
221
112
  });
222
- console.log('Результаты поиска:', searchResults);
223
-
224
- // Семантический поиск кода
225
- const semanticResults = await sdk.search.semanticSearch(projectId, {
226
- query: 'функция для обработки HTTP запросов',
227
- limit: 10
228
- });
229
- console.log('Семантические результаты:', semanticResults);
230
113
  ```
231
114
 
232
- ### Работа с рассуждениями через WebSocket
233
-
115
+ ### 💬 Chat API
234
116
  ```javascript
235
- // Создание рассуждения
236
- const reasoning = await sdk.reasoning.createReasoning({
237
- projectId: projectId,
238
- query: 'Объясни, как работает этот проект'
117
+ // Обычный чат
118
+ const response = await sdk.chat.chat([
119
+ { role: 'user', content: 'Объясни этот код' }
120
+ ], {
121
+ model: 'claude-3-5-sonnet-20241022',
122
+ maxTokens: 8192
239
123
  });
240
124
 
241
- // Подключение через WebSocket
242
- const wsClient = sdk.getWebSocketClient();
243
- await wsClient.connectToReasoning(reasoning.id);
244
-
245
- // Включение механизма ping/pong для мониторинга состояния соединения
246
- wsClient.enablePingPong(30000, 3);
247
-
248
- // Обработка событий мышления
249
- wsClient.on('content_block_delta', (data) => {
250
- if (data.delta?.type === 'thinking_delta') {
251
- console.log('Фрагмент размышления:', data.delta.thinking);
252
- } else if (data.delta?.type === 'text_delta') {
253
- console.log('Фрагмент ответа:', data.delta.text);
254
- }
255
- });
125
+ // Потоковый чат
126
+ for await (const chunk of sdk.chat.streamChat(messages, options)) {
127
+ console.log(chunk.text);
128
+ }
129
+ ```
256
130
 
257
- wsClient.on('message_stop', (data) => {
258
- console.log('Завершено:', data);
259
-
260
- // Отключаем механизм ping/pong и закрываем соединение
261
- wsClient.disablePingPong();
262
- wsClient.disconnectAll();
263
- });
131
+ ### 🕸️ Dependencies API
132
+ ```javascript
133
+ // Граф зависимостей
134
+ await sdk.dependencies.getDependencyGraph(projectId);
264
135
 
265
- // Мониторинг качества соединения
266
- const diagnostics = wsClient.diagnoseConnection(WebSocketNamespace.REASONING);
267
- console.log(`Состояние соединения:`, diagnostics);
136
+ // Статистика зависимостей
137
+ await sdk.dependencies.getDependencyStatistics(projectId);
268
138
  ```
269
139
 
270
- ### API для работы с зависимостями
140
+ ## ⚙️ Конфигурация
271
141
 
272
142
  ```javascript
273
- // Получение зависимостей конкретного файла
274
- const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
275
- filePath: 'src/app.js'
143
+ const sdk = new CodeSolverSDK({
144
+ baseURL: 'https://api.example.com', // Обязательный
145
+ apiKey: 'your-api-key', // Рекомендуется
146
+ timeout: 30000, // Таймаут запросов
147
+ headers: { // Дополнительные заголовки
148
+ 'Custom-Header': 'value'
149
+ },
150
+ http: { // HTTP настройки
151
+ timeout: 45000,
152
+ retries: 3,
153
+ retryDelay: 1000
154
+ },
155
+ debug: true // Отладочная информация
276
156
  });
157
+ ```
277
158
 
278
- console.log('Импорты:', fileDependencies.imports);
279
- console.log('Импортируется в:', fileDependencies.importedBy);
159
+ ## 🧪 Тестирование
280
160
 
281
- // Получение полного графа зависимостей проекта
282
- const dependencyGraph = await sdk.dependencies.getDependencyGraph(projectId);
161
+ ```bash
162
+ # Все тесты
163
+ npm test
283
164
 
284
- // Анализ графа зависимостей и поиск циклов
285
- const analysis = await sdk.dependencies.analyzeDependencyGraph(projectId);
286
- console.log('Циклические зависимости:', analysis.cycles);
165
+ # Только HTTP тесты
166
+ npm test -- --testNamePattern="HTTP"
287
167
 
288
- // Подключение к WebSocket для зависимостей
289
- await sdk.dependencies.connectWebSocket(projectId);
290
- sdk.dependencies.on('dependency_update', (data) => {
291
- console.log('Обновление зависимостей:', data);
292
- });
168
+ # Интеграционные тесты
169
+ npm run test:integration
170
+
171
+ # Тесты индексации
172
+ npm test -- --testPathPattern="indexing"
293
173
  ```
294
174
 
295
- ### Потоковая передача мышления
175
+ ## 📚 Примеры использования
296
176
 
297
- Версия 1.7.4 включает полную поддержку потоковой передачи мышления через Anthropic API, а также улучшенную обработку ошибок:
177
+ ### Полный цикл работы с проектом
298
178
 
299
179
  ```javascript
300
- const { CodeSolverSDK } = require('solver-sdk');
180
+ import { CodeSolverSDK } from 'solver-sdk';
301
181
 
302
- async function streamThinking() {
182
+ async function fullWorkflow() {
303
183
  const sdk = new CodeSolverSDK({
304
- baseURL: 'https://api.example.com',
305
- apiKey: 'ваш-ключ-api'
184
+ baseURL: 'http://localhost:3001',
185
+ apiKey: 'your-api-key'
306
186
  });
307
187
 
308
- // Сообщения для отправки
309
- const messages = [
310
- { role: 'user', content: 'Объясни, как работает blockchain' }
311
- ];
312
-
313
- // Опции запроса
314
- const options = {
315
- model: 'claude-3-7-sonnet-20240229',
316
- temperature: 0.7,
317
- thinking: true,
318
- authToken: 'your-auth-token' // Унифицированный параметр для аутентификации WebSocket
319
- };
188
+ try {
189
+ // 1. Создаем проект
190
+ const project = await sdk.projects.createProject({
191
+ name: 'My React App',
192
+ path: '/path/to/react-app',
193
+ description: 'React приложение для анализа'
194
+ });
320
195
 
321
- // Обработчик событий WebSocket
322
- const handleEvent = (eventType, data) => {
323
- switch(eventType) {
324
- case 'content_block_start':
325
- if (data.content_block && data.content_block.type === 'thinking') {
326
- console.log('Начало размышлений:');
327
- }
328
- break;
329
-
330
- case 'content_block_delta':
331
- if (data.delta && data.delta.type === 'thinking_delta') {
332
- process.stdout.write(data.delta.thinking); // Потоковый вывод размышлений
333
- } else if (data.delta && data.delta.type === 'text_delta') {
334
- process.stdout.write(data.delta.text); // Потоковый вывод итогового текста
335
- }
336
- break;
337
-
338
- case 'error':
339
- console.error('Ошибка:', data.message);
340
-
341
- // Обработка ошибки географических ограничений
342
- if (data.type === 'geo_restriction') {
343
- console.error('Необходимо включить VPN для доступа к API Anthropic из вашего региона');
344
- }
345
- break;
196
+ // 2. Запускаем индексацию
197
+ console.log('Запуск индексации...');
198
+ await sdk.projects.startIndexing(project.id);
199
+
200
+ // 3. Ждем завершения индексации
201
+ console.log('Ожидание завершения индексации...');
202
+ while (true) {
203
+ const status = await sdk.projects.getProjectStatus(project.id);
204
+ if (status.indexStatus === 'complete') break;
205
+ await new Promise(resolve => setTimeout(resolve, 2000));
346
206
  }
347
- };
348
-
349
- try {
350
- // Отправляем запрос с потоковым мышлением
351
- const response = await sdk.chat.streamChatWithThinking(
352
- messages,
353
- options,
354
- handleEvent
355
- );
207
+
208
+ // 4. Ищем React компоненты
209
+ const components = await sdk.search.searchCode({
210
+ projectId: project.id,
211
+ query: 'React.Component class',
212
+ maxResults: 10
213
+ });
214
+
215
+ // 5. Анализируем зависимости
216
+ const dependencies = await sdk.dependencies.getDependencyGraph(project.id);
217
+
218
+ // 6. Задаем вопрос AI о коде
219
+ const aiResponse = await sdk.chat.chat([
220
+ {
221
+ role: 'user',
222
+ content: `Проанализируй найденные React компоненты: ${JSON.stringify(components)}`
223
+ }
224
+ ], {
225
+ model: 'claude-3-5-sonnet-20241022',
226
+ maxTokens: 8192
227
+ });
356
228
 
357
- console.log(`Запрос успешно отправлен. Socket ID: ${response.socketId}`);
229
+ console.log('✅ Анализ завершен');
230
+ console.log('📊 Компоненты:', components.length);
231
+ console.log('🕸️ Зависимости:', dependencies);
232
+ console.log('🤖 AI анализ:', aiResponse.content[0].text);
233
+
358
234
  } catch (error) {
359
- console.error('Ошибка:', error);
360
-
361
- // Проверка наличия ошибки географических ограничений
362
- if (error.type === 'geo_restriction') {
363
- console.error('Необходимо включить VPN для доступа к API Anthropic из вашего региона');
235
+ console.error('Ошибка:', error.message);
364
236
  }
365
237
  }
366
- }
367
238
 
368
- streamThinking();
239
+ fullWorkflow();
369
240
  ```
370
241
 
371
- #### Поддерживаемые события WebSocket для мышления
372
-
373
- - `message_start` - начало сообщения от модели
374
- - `content_block_start` - начало блока контента (текст или thinking)
375
- - `content_block_delta` - дельта блока контента со следующими типами:
376
- - `delta.type === 'thinking_delta'` - фрагмент размышления модели
377
- - `delta.type === 'text_delta'` - фрагмент текстового ответа
378
- - `delta.type === 'input_json_delta'` - фрагмент JSON для инструментов
379
- - `delta.type === 'signature_delta'` - подпись блока мышления
380
- - `content_block_stop` - завершение блока контента
381
- - `message_delta` - дельта сообщения
382
- - `message_stop` - завершение сообщения
242
+ ## 🔧 Устранение неполадок
383
243
 
384
- ## Примеры
385
-
386
- В директории [`examples`](./examples) доступны примеры использования SDK:
387
-
388
- ```bash
389
- # Проверка подключения к API
390
- npm run example:check-api
391
-
392
- # Индексация проектов
393
- npm run example:indexing
244
+ ### Проблемы с подключением
245
+ ```javascript
246
+ // Диагностика API
247
+ const diagnosis = await sdk.diagnoseAPI();
248
+ console.log('Диагностика:', diagnosis);
394
249
 
395
- # Работа с зависимостями
396
- npm run example:dependencies
250
+ // Проверка здоровья конкретных эндпоинтов
251
+ if (!diagnosis.healthy) {
252
+ console.log('Проблемные эндпоинты:', diagnosis.errors);
253
+ }
397
254
  ```
398
255
 
399
- ## Совместимость
400
-
401
- SDK тщательно протестирован в различных средах и поддерживает:
256
+ ### Таймауты и повторы
257
+ ```javascript
258
+ // Увеличение таймаутов для больших проектов
259
+ const sdk = new CodeSolverSDK({
260
+ baseURL: 'https://api.example.com',
261
+ timeout: 120000, // 2 минуты
262
+ http: {
263
+ timeout: 90000,
264
+ retries: 5,
265
+ retryDelay: 2000
266
+ }
267
+ });
268
+ ```
402
269
 
403
- - **Браузеры**: Chrome 80+, Firefox 72+, Safari 14+, Edge 80+
404
- - **Node.js**: Версии 14.x и выше (как CommonJS, так и ESM)
405
- - **VS Code**: Desktop и Web версии
270
+ ## 📝 Changelog v3.0
406
271
 
407
- ## Разработка и тестирование
272
+ ### Добавлено
273
+ - Полная поддержка HTTP-only API
274
+ - Новый `IndexingClient` для простой индексации
275
+ - Улучшенная обработка ошибок
276
+ - Подробная диагностика API
277
+ - Потоковый чат через HTTP
408
278
 
409
- ```bash
410
- # Установка зависимостей
411
- npm install
279
+ ### ❌ Удалено
280
+ - Поддержка WebSocket (полностью удалена)
281
+ - `socket.io-client` зависимость
282
+ - WebSocket события и обработчики
283
+ - Сложные WebSocket конфигурации
412
284
 
413
- # Сборка SDK
414
- npm run build
285
+ ### 🔄 Изменено
286
+ - Все API методы теперь работают через HTTP
287
+ - Упрощенная конфигурация SDK
288
+ - Более быстрая инициализация
289
+ - Лучшая совместимость с разными средами
415
290
 
416
- # Запуск всех тестов
417
- npm test
291
+ ## 📄 Лицензия
418
292
 
419
- # Тесты для рассуждений и WebSocket
420
- npm run test:reasoning:all
293
+ MIT License
421
294
 
422
- # Запуск примеров
423
- npm run example:check-api
295
+ **Q: Пустые результаты поиска**
296
+ ```javascript
297
+ // Убедитесь что проект проиндексирован
298
+ const readyProjects = await sdk.projects.getReadyProjects();
299
+ console.log('Готовые проекты:', readyProjects);
424
300
  ```
425
301
 
426
- ### Локальная разработка
302
+ ## 🔧 Индексация: полный workflow
427
303
 
428
304
  ```javascript
429
- const sdk = new CodeSolverSDK({
430
- baseURL: 'https://localhost:3000',
431
- apiKey: 'test-api-key',
432
- httpsAgent: new https.Agent({
433
- rejectUnauthorized: false // Для самоподписанных сертификатов
434
- }),
435
- websocket: {
436
- reconnect: true,
437
- rejectUnauthorized: false
305
+ async function indexProject(projectPath, projectName) {
306
+ const sdk = await CodeSolverSDK.create({
307
+ baseURL: 'http://localhost:3000'
308
+ });
309
+
310
+ // 1. Создать/найти проект
311
+ const project = await sdk.projects.findOrCreateProject(projectPath, projectName);
312
+
313
+ // 2. Запустить индексацию
314
+ await sdk.projects.startIndexing(project.id);
315
+
316
+ // 3. Мониторинг прогресса
317
+ while (true) {
318
+ const status = await sdk.projects.getProjectStatus(project.id);
319
+
320
+ if (status.status === 'ready') {
321
+ console.log('✅ Индексация завершена!');
322
+ break;
323
+ } else if (status.status === 'error') {
324
+ console.log('❌ Ошибка:', status.error);
325
+ break;
326
+ }
327
+
328
+ console.log(`📊 Прогресс: ${status.progress || 0}%`);
329
+ await new Promise(resolve => setTimeout(resolve, 2000));
438
330
  }
439
- });
331
+
332
+ return project;
333
+ }
440
334
  ```
441
335
 
442
- ## Документация
336
+ ## 🔌 VS Code Extension (готовый код)
443
337
 
444
- Подробная документация доступна в директории [`docs`](./docs):
338
+ ```typescript
339
+ import { CodeSolverSDK } from 'solver-sdk';
340
+ import * as vscode from 'vscode';
445
341
 
446
- - [Начало работы](./docs/GETTING_STARTED.md)
447
- - [Работа с проектами](./docs/PROJECTS.md)
448
- - [Индексация проектов](./docs/INDEXING.md)
449
- - [Потоковая передача мышления](./docs/THINKING_ARCHITECTURE.md)
450
- - [Работа с регионами](./docs/ADVANCED.md)
451
- - [Полное API](./docs/API.md)
342
+ let sdk: CodeSolverSDK;
343
+
344
+ export async function activate(context: vscode.ExtensionContext) {
345
+ sdk = await CodeSolverSDK.create({
346
+ baseURL: 'http://localhost:3000'
347
+ });
348
+
349
+ // Команда индексации
350
+ const indexCmd = vscode.commands.registerCommand('extension.indexProject', async () => {
351
+ const folder = vscode.workspace.workspaceFolders?.[0];
352
+ if (!folder) return;
353
+
354
+ return vscode.window.withProgress({
355
+ location: vscode.ProgressLocation.Notification,
356
+ title: 'Индексация проекта',
357
+ cancellable: false
358
+ }, async (progress) => {
359
+ const project = await sdk.projects.findOrCreateProject(folder.uri.fsPath, folder.name);
360
+ await sdk.projects.startIndexing(project.id);
361
+
362
+ while (true) {
363
+ const status = await sdk.projects.getProjectStatus(project.id);
364
+ if (status.status === 'ready') break;
365
+ progress.report({ message: `${status.progress || 0}%` });
366
+ await new Promise(resolve => setTimeout(resolve, 2000));
367
+ }
368
+
369
+ vscode.window.showInformationMessage('✅ Проект проиндексирован!');
370
+ });
371
+ });
372
+
373
+ // Команда поиска функций
374
+ const searchCmd = vscode.commands.registerCommand('extension.searchFunctions', async () => {
375
+ const query = await vscode.window.showInputBox({ prompt: 'Поиск функций' });
376
+ if (!query) return;
377
+
378
+ const projects = await sdk.projects.getReadyProjects();
379
+ if (projects.length === 0) return;
380
+
381
+ const results = await sdk.search.searchFunctions(projects[0].id, { query, limit: 20 });
382
+
383
+ const items = results.results.map(fn => ({
384
+ label: fn.name,
385
+ description: fn.signature,
386
+ detail: `${fn.filePath}:${fn.startLine}`,
387
+ function: fn
388
+ }));
389
+
390
+ const selected = await vscode.window.showQuickPick(items);
391
+ if (selected) {
392
+ const doc = await vscode.workspace.openTextDocument(selected.function.filePath);
393
+ const editor = await vscode.window.showTextDocument(doc);
394
+
395
+ const range = new vscode.Range(
396
+ selected.function.startLine - 1, 0,
397
+ selected.function.endLine - 1, 0
398
+ );
399
+
400
+ editor.selection = new vscode.Selection(range.start, range.end);
401
+ editor.revealRange(range, vscode.TextEditorRevealType.InCenter);
402
+ }
403
+ });
404
+
405
+ context.subscriptions.push(indexCmd, searchCmd);
406
+ }
407
+
408
+ // package.json для VS Code Extension
409
+ {
410
+ "contributes": {
411
+ "commands": [
412
+ { "command": "extension.indexProject", "title": "📊 Индексировать проект" },
413
+ { "command": "extension.searchFunctions", "title": "🔍 Поиск функций" }
414
+ ]
415
+ },
416
+ "dependencies": { "solver-sdk": "^3.1.0" }
417
+ }
418
+ ```
452
419
 
453
- ## Лицензия
420
+ ---
454
421
 
455
- [MIT](./LICENSE)
422
+ **🎉 Один файл = полная документация!**