solver-sdk 2.3.0 → 2.6.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 (45) hide show
  1. package/README.md +94 -41
  2. package/dist/cjs/api/dependencies-api.js +2 -4
  3. package/dist/cjs/api/dependencies-api.js.map +1 -1
  4. package/dist/cjs/api/projects-api.js +34 -56
  5. package/dist/cjs/api/projects-api.js.map +1 -1
  6. package/dist/cjs/api/reasoning-api.js +31 -17
  7. package/dist/cjs/api/reasoning-api.js.map +1 -1
  8. package/dist/cjs/code-solver-sdk.js +83 -0
  9. package/dist/cjs/code-solver-sdk.js.map +1 -1
  10. package/dist/cjs/index.js +1 -1
  11. package/dist/cjs/utils/message-helpers.js +15 -37
  12. package/dist/cjs/utils/message-helpers.js.map +1 -1
  13. package/dist/esm/api/dependencies-api.js +2 -4
  14. package/dist/esm/api/dependencies-api.js.map +1 -1
  15. package/dist/esm/api/projects-api.js +34 -56
  16. package/dist/esm/api/projects-api.js.map +1 -1
  17. package/dist/esm/api/reasoning-api.js +31 -17
  18. package/dist/esm/api/reasoning-api.js.map +1 -1
  19. package/dist/esm/code-solver-sdk.js +83 -0
  20. package/dist/esm/code-solver-sdk.js.map +1 -1
  21. package/dist/esm/index.js +1 -1
  22. package/dist/esm/utils/message-helpers.js +16 -38
  23. package/dist/esm/utils/message-helpers.js.map +1 -1
  24. package/dist/types/api/dependencies-api.d.ts.map +1 -1
  25. package/dist/types/api/projects-api.d.ts.map +1 -1
  26. package/dist/types/api/reasoning-api.d.ts +21 -10
  27. package/dist/types/api/reasoning-api.d.ts.map +1 -1
  28. package/dist/types/code-solver-sdk.d.ts +20 -0
  29. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  30. package/dist/types/index.d.ts +1 -1
  31. package/dist/types/interfaces/sdk-options.d.ts +5 -0
  32. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  33. package/dist/types/utils/message-helpers.d.ts +4 -3
  34. package/dist/types/utils/message-helpers.d.ts.map +1 -1
  35. package/docs/API_REFERENCE.md +495 -96
  36. package/docs/AUTHENTICATION.md +291 -36
  37. package/docs/ERROR_HANDLING.md +544 -104
  38. package/docs/INTEGRATION_GUIDE_V2.5.md +516 -0
  39. package/docs/README.md +260 -75
  40. package/docs/README_V2.5.md +266 -0
  41. package/docs/WEBSOCKET.md +374 -111
  42. package/docs/indexing/INDEXING.md +372 -167
  43. package/package.json +1 -1
  44. package/docs/INTEGRATION_EXAMPLES.md +0 -328
  45. package/docs/PING_PONG.md +0 -113
@@ -1,231 +1,436 @@
1
- # Индексация проектов
1
+ # Индексация проектов v2.5.0
2
2
 
3
- Это руководство описывает, как использовать SDK для индексации проектов и отдельных файлов.
3
+ Руководство по индексации проектов в AI Solver SDK v2.5.0.
4
4
 
5
5
  ## Инициализация SDK
6
6
 
7
- Прежде чем использовать функции индексации, необходимо инициализировать SDK с указанием API ключа:
7
+ ```javascript
8
+ import { CodeSolverSDK } from '@ai-solver/sdk';
8
9
 
9
- ```typescript
10
- import { CodeSolverSDK } from 'solver-sdk';
11
-
12
- const sdk = new CodeSolverSDK({
13
- baseURL: 'https://api.example.com',
14
- apiKey: 'ваш_api_ключ', // API ключ обязателен для авторизации WebSocket соединений
10
+ const sdk = CodeSolverSDK.create({
11
+ baseURL: 'http://localhost:3000',
12
+ apiKey: 'dev_sk_test_12345678',
13
+ autoConnect: false
15
14
  });
16
15
  ```
17
16
 
18
- ## Индексация проекта
19
-
20
- ### Запуск индексации
21
-
22
- Для запуска индексации проекта используйте метод `indexProject` или его псевдоним `startIndexing`:
23
-
24
- ```typescript
25
- // Полная индексация проекта
26
- await sdk.projects.indexProject('идентификатор_проекта', {
27
- indexingMode: 'full'
28
- });
17
+ ## Основной workflow индексации
29
18
 
30
- // Инкрементальная индексация (только изменившиеся файлы)
31
- await sdk.projects.indexProject('идентификатор_проекта', {
32
- indexingMode: 'incremental'
33
- });
19
+ ### 1. Создание проекта
34
20
 
35
- // Автоматический выбор режима индексации (рекомендуется)
36
- await sdk.projects.indexProject('идентификатор_проекта', {
37
- indexingMode: 'auto'
21
+ ```javascript
22
+ const project = await sdk.projects.create({
23
+ name: 'My Code Project',
24
+ path: '/path/to/project',
25
+ description: 'Project for AI analysis'
38
26
  });
39
27
 
40
- // Псевдоним startIndexing (работает аналогично indexProject)
41
- await sdk.projects.startIndexing('идентификатор_проекта', {
42
- indexingMode: 'auto'
43
- });
28
+ console.log('Project created:', project.id);
44
29
  ```
45
30
 
46
- ### Режимы индексации
31
+ ### 2. Запуск индексации
32
+
33
+ ```javascript
34
+ // Запуск индексации проекта
35
+ await sdk.projects.startIndexing(project.id);
47
36
 
48
- SDK поддерживает следующие режимы индексации:
37
+ console.log('Indexing started for project:', project.id);
38
+ ```
49
39
 
50
- - **full** - полная переиндексация всех файлов проекта
51
- - **incremental** - индексация только изменившихся файлов (более быстрая)
52
- - **auto** - автоматический выбор режима на основе метаданных проекта
40
+ ### 3. Проверка статуса
53
41
 
54
- Вы также можете использовать флаг `forceFull` для принудительной полной индексации:
42
+ ```javascript
43
+ // Получение статуса индексации
44
+ const status = await sdk.projects.getIndexingStatus(project.id);
55
45
 
56
- ```typescript
57
- await sdk.projects.indexProject('идентификатор_проекта', {
58
- forceFull: true
59
- });
46
+ console.log('Indexing status:', status.indexStatus);
47
+ console.log('Progress:', status.indexingProgress);
48
+ console.log('Files indexed:', status.filesIndexed);
60
49
  ```
61
50
 
62
- ### Фильтрация файлов
51
+ ## WebSocket мониторинг индексации
63
52
 
64
- Можно указать шаблоны включения и исключения файлов:
53
+ ### Подключение и события
54
+
55
+ ```javascript
56
+ // Подключение к projects WebSocket
57
+ await sdk.projects.connectWebSocket();
65
58
 
66
- ```typescript
67
- await sdk.projects.indexProject('идентификатор_проекта', {
68
- indexingMode: 'auto',
69
- includePatterns: ['**/*.js', '**/*.ts', '**/*.jsx', '**/*.tsx'],
70
- excludePatterns: ['**/node_modules/**', '**/dist/**', '**/build/**']
59
+ // Отслеживание прогресса
60
+ sdk.projects.onIndexingProgress((data) => {
61
+ console.log(`Progress: ${data.percentage}%`);
62
+ console.log(`Files: ${data.processedFiles}/${data.totalFiles}`);
63
+ console.log(`Current file: ${data.currentFile}`);
64
+ console.log(`Speed: ${data.filesPerSecond} files/sec`);
71
65
  });
72
- ```
73
66
 
74
- ## Обновление индекса отдельных файлов
67
+ // Завершение индексации
68
+ sdk.projects.onIndexingComplete((data) => {
69
+ console.log('✅ Indexing completed!');
70
+ console.log('Project ID:', data.projectId);
71
+ console.log('Total files:', data.totalFiles);
72
+ console.log('Duration:', data.duration + 'ms');
73
+ console.log('Success:', data.success);
74
+
75
+ // Отключение WebSocket
76
+ sdk.projects.disconnectWebSocket();
77
+ });
75
78
 
76
- Для индексации одного файла используйте метод `updateFileIndex`:
79
+ // Ошибки индексации
80
+ sdk.projects.onIndexingError((error) => {
81
+ console.error('❌ Indexing error:', error.message);
82
+ console.error('Project:', error.projectId);
83
+ console.error('File:', error.fileName);
84
+
85
+ sdk.projects.disconnectWebSocket();
86
+ });
87
+ ```
77
88
 
78
- ```typescript
79
- // Индексация файла с чтением его содержимого с диска
80
- await sdk.projects.updateFileIndex(
81
- 'идентификатор_проекта',
82
- 'путь/к/файлу.js'
83
- );
89
+ ## Полный пример с обработкой ошибок
84
90
 
85
- // Индексация с передачей содержимого файла
86
- await sdk.projects.updateFileIndex(
87
- 'идентификатор_проекта',
88
- 'путь/к/файлу.js',
89
- {
90
- content: 'содержимое файла',
91
- force: true // Принудительная индексация, даже если файл не изменился
91
+ ```javascript
92
+ async function indexProjectWithMonitoring(projectPath, projectName) {
93
+ const sdk = CodeSolverSDK.create({
94
+ baseURL: 'http://localhost:3000',
95
+ apiKey: process.env.AI_SOLVER_API_KEY,
96
+ autoConnect: false
97
+ });
98
+
99
+ try {
100
+ console.log('🔍 Creating project...');
101
+
102
+ // 1. Создание проекта
103
+ const project = await sdk.projects.create({
104
+ name: projectName,
105
+ path: projectPath,
106
+ description: `AI analysis project for ${projectName}`
107
+ });
108
+
109
+ console.log('✅ Project created:', project.id);
110
+
111
+ // 2. Подключение к WebSocket для мониторинга
112
+ console.log('🔌 Connecting to WebSocket...');
113
+ await sdk.projects.connectWebSocket();
114
+
115
+ // 3. Настройка обработчиков событий
116
+ let indexingComplete = false;
117
+
118
+ sdk.projects.onIndexingProgress((data) => {
119
+ const progress = Math.round(data.percentage);
120
+ console.log(`📊 [${progress}%] ${data.currentFile || 'Processing...'}`);
121
+ });
122
+
123
+ sdk.projects.onIndexingComplete((data) => {
124
+ console.log('🎉 Indexing completed successfully!');
125
+ console.log(`📈 Statistics:`);
126
+ console.log(` - Total files: ${data.totalFiles}`);
127
+ console.log(` - Duration: ${data.duration}ms`);
128
+ console.log(` - Success: ${data.success}`);
129
+
130
+ indexingComplete = true;
131
+ sdk.projects.disconnectWebSocket();
132
+ });
133
+
134
+ sdk.projects.onIndexingError((error) => {
135
+ console.error('💥 Indexing failed:', error.message);
136
+ indexingComplete = true;
137
+ sdk.projects.disconnectWebSocket();
138
+ });
139
+
140
+ // 4. Запуск индексации
141
+ console.log('🚀 Starting indexing...');
142
+ await sdk.projects.startIndexing(project.id);
143
+
144
+ // 5. Ожидание завершения
145
+ while (!indexingComplete) {
146
+ await new Promise(resolve => setTimeout(resolve, 1000));
147
+ }
148
+
149
+ // 6. Проверка финального статуса
150
+ const finalStatus = await sdk.projects.getIndexingStatus(project.id);
151
+ console.log('📋 Final status:', finalStatus);
152
+
153
+ return {
154
+ success: true,
155
+ project: project,
156
+ status: finalStatus
157
+ };
158
+
159
+ } catch (error) {
160
+ console.error('❌ Indexing workflow failed:', error.message);
161
+
162
+ // Очистка ресурсов
163
+ try {
164
+ await sdk.projects.disconnectWebSocket();
165
+ } catch (cleanupError) {
166
+ console.warn('⚠️ Cleanup warning:', cleanupError.message);
167
+ }
168
+
169
+ return {
170
+ success: false,
171
+ error: error.message
172
+ };
92
173
  }
93
- );
174
+ }
94
175
 
95
- // С дополнительными опциями
96
- await sdk.projects.updateFileIndex(
97
- 'идентификатор_проекта',
98
- 'путь/к/файлу.ts',
99
- {
100
- content: 'содержимое файла',
101
- language: 'typescript', // Явное указание языка
102
- updateDependencies: true // Обновление зависимостей после индексации
103
- }
176
+ // Использование
177
+ const result = await indexProjectWithMonitoring(
178
+ '/path/to/my/project',
179
+ 'My AI Project'
104
180
  );
105
- ```
106
-
107
- ## Работа с новыми проектами
108
-
109
- ### Создание и индексация проекта
110
181
 
111
- ```typescript
112
- // Создание проекта и немедленная индексация
113
- const result = await sdk.projects.createAndIndexProject('/путь/к/проекту', {
114
- name: 'Название проекта',
115
- indexingMode: 'full',
116
- excludePatterns: ['**/node_modules/**', '**/dist/**']
117
- });
182
+ if (result.success) {
183
+ console.log('🎯 Project ready for AI analysis!');
184
+ } else {
185
+ console.error('💔 Indexing failed:', result.error);
186
+ }
187
+ ```
118
188
 
119
- console.log(`Проект создан с ID: ${result.projectId}`);
120
- console.log(`Статус индексации: ${result.indexingStatus}`);
189
+ ## API Endpoints для индексации
190
+
191
+ ### HTTP API
192
+
193
+ | Endpoint | Method | Описание |
194
+ |----------|--------|----------|
195
+ | `/api/v1/projects` | POST | Создание проекта |
196
+ | `/api/v1/projects/:id` | GET | Получение проекта |
197
+ | `/api/v1/projects` | GET | Список проектов |
198
+ | `/api/v1/projects/:id/index` | POST | Запуск индексации |
199
+ | `/api/v1/projects/:id/index/status` | GET | Статус индексации |
200
+
201
+ ### WebSocket Events
202
+
203
+ | Event | Namespace | Описание |
204
+ |-------|-----------|----------|
205
+ | `indexing_progress` | `/projects` | Прогресс индексации |
206
+ | `indexing_complete` | `/projects` | Завершение индексации |
207
+ | `indexing_error` | `/projects` | Ошибка индексации |
208
+
209
+ ## Структуры данных
210
+
211
+ ### Project Object
212
+
213
+ ```javascript
214
+ {
215
+ id: "proj_abc123",
216
+ name: "My Project",
217
+ path: "/path/to/project",
218
+ description: "Project description",
219
+ indexStatus: "completed", // pending, indexing, completed, failed
220
+ indexingProgress: 100,
221
+ filesIndexed: 150,
222
+ lastIndexed: "2025-06-28T12:00:00Z",
223
+ createdAt: "2025-06-28T11:00:00Z",
224
+ updatedAt: "2025-06-28T12:00:00Z"
225
+ }
121
226
  ```
122
227
 
123
- ### Поиск или создание проекта
228
+ ### Indexing Status
229
+
230
+ ```javascript
231
+ {
232
+ projectId: "proj_abc123",
233
+ indexStatus: "completed",
234
+ indexingProgress: 100,
235
+ filesIndexed: 150,
236
+ totalFiles: 150,
237
+ lastUpdated: "2025-06-28T12:00:00Z",
238
+ startedAt: "2025-06-28T11:45:00Z",
239
+ completedAt: "2025-06-28T12:00:00Z"
240
+ }
241
+ ```
124
242
 
125
- ```typescript
126
- // Найти существующий проект или создать новый
127
- const project = await sdk.projects.getOrCreateProject('/путь/к/проекту', 'Название проекта');
128
- console.log(`ID проекта: ${project.id}`);
243
+ ### Progress Event
244
+
245
+ ```javascript
246
+ {
247
+ projectId: "proj_abc123",
248
+ percentage: 75,
249
+ processedFiles: 112,
250
+ totalFiles: 150,
251
+ currentFile: "src/components/App.tsx",
252
+ status: "indexing",
253
+ filesPerSecond: 8.5,
254
+ estimatedTimeRemaining: 4500
255
+ }
256
+ ```
129
257
 
130
- // После получения проекта можно запустить индексацию
131
- await sdk.projects.indexProject(project.id, {
132
- indexingMode: 'auto'
133
- });
258
+ ### Complete Event
259
+
260
+ ```javascript
261
+ {
262
+ projectId: "proj_abc123",
263
+ totalFiles: 150,
264
+ duration: 18750,
265
+ success: true,
266
+ errors: [],
267
+ statistics: {
268
+ byLanguage: {
269
+ "typescript": 45,
270
+ "javascript": 38,
271
+ "css": 12,
272
+ "html": 8,
273
+ "json": 5,
274
+ "markdown": 2
275
+ },
276
+ totalLines: 12450,
277
+ totalSize: 1024000
278
+ }
279
+ }
134
280
  ```
135
281
 
136
- ## Управление индексацией
282
+ ## Обработка ошибок
137
283
 
138
- ### Проверка статуса индексации
284
+ ### Типичные ошибки индексации
139
285
 
140
- ```typescript
141
- // Получение текущего статуса индексации
142
- const status = await sdk.projects.getIndexingStatus('идентификатор_проекта');
143
- console.log(`Статус: ${status.status}`);
144
- console.log(`Количество файлов: ${status.fileCount}`);
145
- console.log(`Статистика по языкам:`, status.languageStats);
146
- ```
286
+ ```javascript
287
+ // Проект не найден
288
+ {
289
+ status: 404,
290
+ code: 'PROJECT_NOT_FOUND',
291
+ message: 'Project with ID "proj_123" not found'
292
+ }
147
293
 
148
- ### Отмена индексации
294
+ // Индексация уже запущена
295
+ {
296
+ status: 409,
297
+ code: 'INDEXING_IN_PROGRESS',
298
+ message: 'Indexing is already in progress for this project'
299
+ }
149
300
 
150
- ```typescript
151
- // Отмена текущей индексации
152
- await sdk.projects.cancelIndexing('идентификатор_проекта');
301
+ // Ошибка доступа к файлам
302
+ {
303
+ status: 500,
304
+ code: 'FILESYSTEM_ERROR',
305
+ message: 'Cannot access project files',
306
+ details: {
307
+ path: '/path/to/project',
308
+ error: 'Permission denied'
309
+ }
310
+ }
153
311
  ```
154
312
 
155
- ### Очистка ошибок индексации
156
-
157
- ```typescript
158
- // Очистка ошибки, если индексация завершилась с ошибкой
159
- await sdk.projects.clearIndexingError('идентификатор_проекта');
313
+ ### Стратегия retry
314
+
315
+ ```javascript
316
+ async function retryableIndexing(projectId, maxRetries = 3) {
317
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
318
+ try {
319
+ await sdk.projects.startIndexing(projectId);
320
+ console.log('✅ Indexing started successfully');
321
+ return true;
322
+
323
+ } catch (error) {
324
+ console.warn(`⚠️ Attempt ${attempt} failed:`, error.message);
325
+
326
+ // Не повторяем для клиентских ошибок
327
+ if (error.status >= 400 && error.status < 500) {
328
+ throw error;
329
+ }
330
+
331
+ // Последняя попытка
332
+ if (attempt === maxRetries) {
333
+ throw error;
334
+ }
335
+
336
+ // Задержка между попытками
337
+ const delay = Math.pow(2, attempt) * 1000;
338
+ await new Promise(resolve => setTimeout(resolve, delay));
339
+ }
340
+ }
341
+ }
160
342
  ```
161
343
 
162
- ## Отслеживание индексации через WebSocket
344
+ ## Диагностика проблем
163
345
 
164
- SDK поддерживает отслеживание процесса индексации в реальном времени через WebSocket:
346
+ ### Проверка доступности API
165
347
 
166
- ```typescript
167
- // Подключение к WebSocket
168
- await sdk.projects.connectWebSocket();
348
+ ```javascript
349
+ // Проверка endpoints для индексации
350
+ const diagnostics = await sdk.diagnoseAPI();
169
351
 
170
- // Подписка на события индексации отдельных файлов
171
- sdk.projects.on('file_indexed', (data) => {
172
- console.log(`Файл индексирован: ${data.file.path}`);
173
- console.log(`Язык: ${data.file.language}`);
174
- console.log(`Тип изменения: ${data.file.changeType}`);
175
- });
352
+ const indexingEndpoints = [
353
+ '/api/v1/projects',
354
+ '/api/v1/projects/:id/index'
355
+ ];
176
356
 
177
- // Подписка на событие завершения индексации
178
- sdk.projects.on('indexing_complete', (data) => {
179
- console.log(`Индексация завершена для проекта ${data.projectId}`);
180
- console.log(`Всего файлов: ${data.stats.totalFiles}`);
181
- console.log(`Проиндексировано: ${data.stats.indexed}`);
182
- console.log(`Ошибок: ${data.stats.failed}`);
183
- console.log(`Время индексации: ${data.stats.time}мс`);
357
+ indexingEndpoints.forEach(endpoint => {
358
+ const status = diagnostics[endpoint];
359
+ if (status?.success) {
360
+ console.log(`✅ ${endpoint} - OK`);
361
+ } else {
362
+ console.error(`❌ ${endpoint} - ${status?.error || 'Failed'}`);
363
+ }
184
364
  });
185
-
186
- // Отключение от WebSocket после завершения работы
187
- await sdk.projects.disconnectWebSocket();
188
365
  ```
189
366
 
190
- ## Обработка ошибок
367
+ ### WebSocket диагностика
191
368
 
192
- ```typescript
193
- try {
194
- await sdk.projects.indexProject('идентификатор_проекта', {
195
- indexingMode: 'full'
196
- });
197
- } catch (error) {
198
- if (error.message.includes('не найден')) {
199
- console.error('Проект не найден');
200
- } else if (error.message.includes('forbidden')) {
201
- console.error('Ошибка авторизации. Проверьте API ключ');
202
- } else {
203
- console.error(`Ошибка индексации: ${error.message}`);
204
- }
369
+ ```javascript
370
+ // Проверка WebSocket для projects
371
+ const wsStatus = await sdk.diagnoseWebSocket();
372
+
373
+ if (wsStatus.projects?.connected) {
374
+ console.log('✅ Projects WebSocket - Connected');
375
+ } else {
376
+ console.error(' Projects WebSocket - Disconnected');
377
+ console.error('Error:', wsStatus.projects?.error);
205
378
  }
206
379
  ```
207
380
 
208
- ## Авторизация WebSocket
381
+ ## Рекомендации по производительности
382
+
383
+ ### 1. Используйте WebSocket мониторинг
384
+
385
+ ```javascript
386
+ // ✅ Правильно - с WebSocket
387
+ await sdk.projects.connectWebSocket();
388
+ sdk.projects.onIndexingProgress(handleProgress);
389
+ await sdk.projects.startIndexing(projectId);
390
+
391
+ // ❌ Неэффективно - polling
392
+ await sdk.projects.startIndexing(projectId);
393
+ while (true) {
394
+ const status = await sdk.projects.getIndexingStatus(projectId);
395
+ if (status.indexStatus === 'completed') break;
396
+ await new Promise(resolve => setTimeout(resolve, 5000));
397
+ }
398
+ ```
209
399
 
210
- Начиная с версии 1.7.7, SDK автоматически добавляет API ключ в качестве параметра `authToken` при подключении WebSocket, что обеспечивает корректную авторизацию для всех операций через WebSocket (индексация, рассуждения и т.д.).
400
+ ### 2. Правильно управляйте WebSocket
211
401
 
212
- Для корректной работы WebSocket соединений:
213
- 1. **Обязательно указывайте `apiKey` при инициализации SDK**
214
- 2. Подключайтесь к WebSocket перед использованием событий
215
- 3. Отключайтесь от WebSocket после завершения работы
402
+ ```javascript
403
+ // Отключайтесь после завершения
404
+ sdk.projects.onIndexingComplete(() => {
405
+ sdk.projects.disconnectWebSocket();
406
+ });
216
407
 
217
- ```typescript
218
- // Корректная инициализация с apiKey
219
- const sdk = new CodeSolverSDK({
220
- baseURL: 'https://api.example.com',
221
- apiKey: 'ваш_api_ключ' // Обязательно для WebSocket авторизации
408
+ // ✅ Отключайтесь при ошибках
409
+ sdk.projects.onIndexingError(() => {
410
+ sdk.projects.disconnectWebSocket();
222
411
  });
412
+ ```
223
413
 
224
- // Подключение
225
- await sdk.projects.connectWebSocket();
414
+ ### 3. Обрабатывайте большие проекты
415
+
416
+ ```javascript
417
+ // Для больших проектов показывайте детальный прогресс
418
+ sdk.projects.onIndexingProgress((data) => {
419
+ const { percentage, currentFile, filesPerSecond } = data;
420
+
421
+ // Обновление UI
422
+ updateProgressBar(percentage);
423
+ updateCurrentFile(currentFile);
424
+ updateSpeed(filesPerSecond);
425
+
426
+ // Оценка времени
427
+ const remaining = (100 - percentage) / filesPerSecond;
428
+ updateETA(remaining);
429
+ });
430
+ ```
226
431
 
227
- // Использование WebSocket...
432
+ ---
228
433
 
229
- // Отключение
230
- await sdk.projects.disconnectWebSocket();
231
- ```
434
+ **Документация индексации для SDK v2.5.0**
435
+ **Совместимость:** AI Solver Backend v1.0.0
436
+ **Обновлено:** 28 июня 2025
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solver-sdk",
3
- "version": "2.3.0",
3
+ "version": "2.6.0",
4
4
  "description": "SDK для интеграции с Code Solver Backend API",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",