solver-sdk 3.1.1 → 3.1.3

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 CHANGED
@@ -1,16 +1,15 @@
1
- # Code Solver SDK v3.0
1
+ # Code Solver SDK v3.1.3
2
2
 
3
- > **🚀 Версия 3.0 - полный переход на HTTP API**
4
- > Убрана поддержка WebSocket, все взаимодействие происходит через REST API
3
+ > **JavaScript/TypeScript SDK для VS Code Extensions**
4
+ > Подключение к AI бэкенду для индексации, поиска и работы с кодом
5
5
 
6
- JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, поиска, работы с чатом и анализа зависимостей.
6
+ JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, семантического поиска функций и работы с AI чатом.
7
7
 
8
8
  ## 🎯 Основные возможности
9
9
 
10
10
  - **💬 Chat API** - взаимодействие с AI моделями (Claude, GPT)
11
- - **🔍 Code Search** - семантический поиск по коду
11
+ - **🔍 Code Search** - семантический поиск по коду и функциям
12
12
  - **📊 Project Indexing** - индексация и анализ проектов
13
- - **🕸️ Dependencies** - анализ зависимостей кода
14
13
  - **📝 Context API** - получение контекста для AI
15
14
  - **🛠️ Code Modification** - модификация кода через AI
16
15
 
@@ -26,46 +25,34 @@ npm install solver-sdk
26
25
  import { CodeSolverSDK } from 'solver-sdk';
27
26
 
28
27
  // Создание SDK
29
- const sdk = new CodeSolverSDK({
30
- baseURL: 'https://your-api-server.com',
31
- apiKey: 'your-api-key',
32
- timeout: 30000
28
+ const sdk = await CodeSolverSDK.create({
29
+ baseURL: 'http://localhost:3000'
33
30
  });
34
31
 
35
- // Проверка здоровья API
36
- const isHealthy = await sdk.checkHealth();
37
- console.log('API доступен:', isHealthy);
38
-
39
- // Создание проекта
40
- const project = await sdk.projects.createProject({
41
- name: 'My Project',
42
- path: '/path/to/project',
43
- description: 'Описание проекта'
44
- });
45
-
46
- // Индексация проекта
47
- const indexingResult = await sdk.indexing.indexProject(
32
+ // Создание и индексация проекта
33
+ const project = await sdk.projects.findOrCreateProject(
48
34
  '/path/to/project',
49
35
  'My Project'
50
36
  );
51
37
 
52
- // Ожидание завершения индексации
53
- const finalStatus = await sdk.indexing.waitForCompletion(indexingResult.projectId);
38
+ await sdk.projects.startIndexing(project.id);
54
39
 
55
40
  // Поиск кода
56
- const searchResults = await sdk.search.searchCode({
57
- projectId: project.projectId,
41
+ const searchResults = await sdk.search.searchCode(project.id, {
58
42
  query: 'function calculateSum',
59
- maxResults: 10
43
+ limit: 10
44
+ });
45
+
46
+ // Поиск функций
47
+ const functions = await sdk.search.searchFunctions(project.id, {
48
+ query: 'FileIndexingService',
49
+ limit: 5
60
50
  });
61
51
 
62
52
  // Работа с чатом
63
53
  const response = await sdk.chat.chat([
64
54
  { role: 'user', content: 'Объясни этот код' }
65
- ], {
66
- model: 'claude-3-5-sonnet-20241022',
67
- maxTokens: 8192
68
- });
55
+ ], { projectId: project.id });
69
56
  ```
70
57
 
71
58
  ## 📋 API Методы
@@ -96,66 +83,60 @@ await sdk.projects.startIndexing(project.id);
96
83
  const status = await sdk.projects.getProjectStatus(project.id);
97
84
 
98
85
  // Ожидание завершения индексации
99
- while (status.indexStatus !== 'complete') {
86
+ while (true) {
87
+ const status = await sdk.projects.getProjectStatus(project.id);
88
+ if (status.status === 'ready') break;
89
+ if (status.status === 'error') throw new Error('Ошибка индексации');
100
90
  await new Promise(resolve => setTimeout(resolve, 2000));
101
- status = await sdk.projects.getProjectStatus(project.id);
102
91
  }
103
92
  ```
104
93
 
105
94
  ### 🔍 Search API
106
95
  ```javascript
107
96
  // Поиск кода
108
- await sdk.search.searchCode({
109
- projectId: 'project-id',
97
+ await sdk.search.searchCode(projectId, {
110
98
  query: 'search query',
111
- maxResults: 20
99
+ limit: 20
112
100
  });
113
101
  ```
114
102
 
115
103
  ### 💬 Chat API
116
104
  ```javascript
117
- // Обычный чат
105
+ // Обычный чат (projectId ОБЯЗАТЕЛЕН!)
118
106
  const response = await sdk.chat.chat([
119
107
  { role: 'user', content: 'Объясни этот код' }
120
- ], {
121
- model: 'claude-3-5-sonnet-20241022',
122
- maxTokens: 8192
123
- });
108
+ ], { projectId: 'your-project-id' });
124
109
 
125
110
  // Потоковый чат
126
- for await (const chunk of sdk.chat.streamChat(messages, options)) {
111
+ for await (const chunk of sdk.chat.streamChat(messages, { projectId: 'your-project-id' })) {
127
112
  console.log(chunk.text);
128
113
  }
129
114
  ```
130
115
 
131
- ### 🕸️ Dependencies API
132
- ```javascript
133
- // Граф зависимостей
134
- await sdk.dependencies.getDependencyGraph(projectId);
135
-
136
- // Статистика зависимостей
137
- await sdk.dependencies.getDependencyStatistics(projectId);
138
- ```
139
-
140
116
  ## ⚙️ Конфигурация
141
117
 
142
118
  ```javascript
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 // Отладочная информация
119
+ const sdk = await CodeSolverSDK.create({
120
+ baseURL: 'http://localhost:3000', // Обязательный
121
+ apiKey: 'your-api-key', // Рекомендуется
122
+ timeout: 30000, // Таймаут запросов
123
+ debug: false // Отладка
156
124
  });
157
125
  ```
158
126
 
127
+ **⚠️ Важно**: Для Chat API **обязательно** нужен `projectId`:
128
+ ```javascript
129
+ // ❌ НЕ РАБОТАЕТ
130
+ const response = await sdk.chat.chat(messages);
131
+
132
+ // ✅ ПРАВИЛЬНО
133
+ const response = await sdk.chat.chat(messages, { projectId: 'your-project-id' });
134
+
135
+ // 💡 Получить projectId можно так:
136
+ const projects = await sdk.projects.getReadyProjects();
137
+ const projectId = projects[0].id;
138
+ ```
139
+
159
140
  ## 🧪 Тестирование
160
141
 
161
142
  ```bash
@@ -180,18 +161,16 @@ npm test -- --testPathPattern="indexing"
180
161
  import { CodeSolverSDK } from 'solver-sdk';
181
162
 
182
163
  async function fullWorkflow() {
183
- const sdk = new CodeSolverSDK({
184
- baseURL: 'http://localhost:3001',
185
- apiKey: 'your-api-key'
164
+ const sdk = await CodeSolverSDK.create({
165
+ baseURL: 'http://localhost:3000'
186
166
  });
187
167
 
188
168
  try {
189
169
  // 1. Создаем проект
190
- const project = await sdk.projects.createProject({
191
- name: 'My React App',
192
- path: '/path/to/react-app',
193
- description: 'React приложение для анализа'
194
- });
170
+ const project = await sdk.projects.findOrCreateProject(
171
+ '/path/to/react-app',
172
+ 'My React App'
173
+ );
195
174
 
196
175
  // 2. Запускаем индексацию
197
176
  console.log('Запуск индексации...');
@@ -201,40 +180,33 @@ async function fullWorkflow() {
201
180
  console.log('Ожидание завершения индексации...');
202
181
  while (true) {
203
182
  const status = await sdk.projects.getProjectStatus(project.id);
204
- if (status.indexStatus === 'complete') break;
183
+ if (status.status === 'ready') break;
184
+ if (status.status === 'error') throw new Error('Ошибка индексации');
205
185
  await new Promise(resolve => setTimeout(resolve, 2000));
206
186
  }
207
187
 
208
188
  // 4. Ищем React компоненты
209
- const components = await sdk.search.searchCode({
210
- projectId: project.id,
189
+ const components = await sdk.search.searchCode(project.id, {
211
190
  query: 'React.Component class',
212
- maxResults: 10
191
+ limit: 10
213
192
  });
214
-
215
- // 5. Анализируем зависимости
216
- const dependencies = await sdk.dependencies.getDependencyGraph(project.id);
217
193
 
218
- // 6. Задаем вопрос AI о коде
194
+ // 5. Задаем вопрос AI о коду
219
195
  const aiResponse = await sdk.chat.chat([
220
196
  {
221
197
  role: 'user',
222
198
  content: `Проанализируй найденные React компоненты: ${JSON.stringify(components)}`
223
199
  }
224
- ], {
225
- model: 'claude-3-5-sonnet-20241022',
226
- maxTokens: 8192
227
- });
200
+ ], { projectId: project.id });
228
201
 
229
202
  console.log('✅ Анализ завершен');
230
203
  console.log('📊 Компоненты:', components.length);
231
- console.log('🕸️ Зависимости:', dependencies);
232
- console.log('🤖 AI анализ:', aiResponse.content[0].text);
204
+ console.log('🤖 AI анализ:', aiResponse.content);
233
205
 
234
206
  } catch (error) {
235
207
  console.error('❌ Ошибка:', error.message);
236
- }
237
208
  }
209
+ }
238
210
 
239
211
  fullWorkflow();
240
212
  ```
@@ -243,50 +215,45 @@ fullWorkflow();
243
215
 
244
216
  ### Проблемы с подключением
245
217
  ```javascript
246
- // Диагностика API
247
- const diagnosis = await sdk.diagnoseAPI();
248
- console.log('Диагностика:', diagnosis);
249
-
250
- // Проверка здоровья конкретных эндпоинтов
251
- if (!diagnosis.healthy) {
252
- console.log('Проблемные эндпоинты:', diagnosis.errors);
253
- }
218
+ // Проверка здоровья API
219
+ const isHealthy = await sdk.checkHealth();
220
+ console.log('API доступен:', isHealthy);
254
221
  ```
255
222
 
256
223
  ### Таймауты и повторы
257
224
  ```javascript
258
225
  // Увеличение таймаутов для больших проектов
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
- }
226
+ const sdk = await CodeSolverSDK.create({
227
+ baseURL: 'http://localhost:3000',
228
+ timeout: 120000 // 2 минуты
267
229
  });
268
230
  ```
269
231
 
270
- ## 📝 Changelog v3.0
232
+ ## 📝 Changelog v3.1.3
271
233
 
272
234
  ### ✅ Добавлено
273
- - Полная поддержка HTTP-only API
274
- - Новый `IndexingClient` для простой индексации
275
- - Улучшенная обработка ошибок
276
- - Подробная диагностика API
277
- - Потоковый чат через HTTP
235
+ - Поиск функций через `/search/functions` API
236
+ - Методы `searchFunctions()` и `searchFunctionsGet()`
237
+ - Статистика функций `getFunctionStats()`
238
+ - Автоматический выбор модели и токенов на бэкенде
239
+ - Упрощенные Chat API без параметров модели
278
240
 
279
241
  ### ❌ Удалено
280
- - Поддержка WebSocket (полностью удалена)
281
- - `socket.io-client` зависимость
282
- - WebSocket события и обработчики
283
- - Сложные WebSocket конфигурации
242
+ - `AgentsApi` - больше не используется
243
+ - `DependenciesApi` - работает внутренне
244
+ - `simple-indexing-client.ts` - дублировал ProjectsApi
245
+ - Все устаревшие методы и примеры
246
+ - Ручной выбор модели и лимитов токенов клиентом
247
+ - **Папка docs/** - удалена вся неактуальная документация
284
248
 
285
249
  ### 🔄 Изменено
286
- - Все API методы теперь работают через HTTP
287
- - Упрощенная конфигурация SDK
288
- - Более быстрая инициализация
289
- - Лучшая совместимость с разными средами
250
+ - Обновлены все примеры кода на актуальный синтаксис
251
+ - Упрощена документация в один файл
252
+ - Исправлены пути API с префиксом `/api/v1`
253
+ - Улучшена обработка ошибок индексации
254
+ - Chat API упрощен - модель выбирается автоматически
255
+ - Полная синхронизация документации с реальным кодом
256
+ - **Один README.md** содержит всю необходимую информацию
290
257
 
291
258
  ## 📄 Лицензия
292
259
 
@@ -378,9 +345,14 @@ export async function activate(context: vscode.ExtensionContext) {
378
345
  const projects = await sdk.projects.getReadyProjects();
379
346
  if (projects.length === 0) return;
380
347
 
381
- const results = await sdk.search.searchFunctions(projects[0].id, { query, limit: 20 });
348
+ const response = await sdk.search.searchFunctions(projects[0].id, { query, limit: 20 });
349
+
350
+ if (!response.success || response.results.length === 0) {
351
+ vscode.window.showInformationMessage('Функции не найдены');
352
+ return;
353
+ }
382
354
 
383
- const items = results.results.map(fn => ({
355
+ const items = response.results.map(fn => ({
384
356
  label: fn.name,
385
357
  description: fn.signature,
386
358
  detail: `${fn.filePath}:${fn.startLine}`,
@@ -413,7 +385,7 @@ export async function activate(context: vscode.ExtensionContext) {
413
385
  { "command": "extension.searchFunctions", "title": "🔍 Поиск функций" }
414
386
  ]
415
387
  },
416
- "dependencies": { "solver-sdk": "^3.1.0" }
388
+ "dependencies": { "solver-sdk": "^3.1.3" }
417
389
  }
418
390
  ```
419
391
 
@@ -10,7 +10,7 @@ const code_modification_api_js_1 = require("./api/code-modification-api.js");
10
10
  const index_js_1 = require("./api/chat-api/index.js");
11
11
  const models_api_js_1 = require("./api/models-api.js");
12
12
  // Версия SDK
13
- const SDK_VERSION = '3.0.0';
13
+ const SDK_VERSION = '3.1.3';
14
14
  /**
15
15
  * Определение типа среды выполнения
16
16
  * @returns 'browser' | 'node' | 'unknown'
package/dist/cjs/index.js CHANGED
@@ -20,7 +20,7 @@ Object.defineProperty(exports, "CodeSolverSDK", { enumerable: true, get: functio
20
20
  const http_client_js_1 = require("./utils/http-client.js");
21
21
  Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_js_1.HttpClient; } });
22
22
  // Версия SDK
23
- exports.VERSION = '3.1.1';
23
+ exports.VERSION = '3.1.3';
24
24
  // Экспортируем основные интерфейсы и типы
25
25
  __exportStar(require("./interfaces/sdk-options.js"), exports);
26
26
  // Экспортируем HTTP API клиенты
@@ -7,7 +7,7 @@ import { CodeModificationApi } from './api/code-modification-api.js';
7
7
  import { ChatApi } from './api/chat-api/index.js';
8
8
  import { ModelsApi } from './api/models-api.js';
9
9
  // Версия SDK
10
- const SDK_VERSION = '3.0.0';
10
+ const SDK_VERSION = '3.1.3';
11
11
  /**
12
12
  * Определение типа среды выполнения
13
13
  * @returns 'browser' | 'node' | 'unknown'
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CodeSolverSDK } from './code-solver-sdk.js';
2
2
  import { HttpClient } from './utils/http-client.js';
3
3
  // Версия SDK
4
- export const VERSION = '3.1.1';
4
+ export const VERSION = '3.1.3';
5
5
  // Экспортируем основные классы и интерфейсы
6
6
  export { CodeSolverSDK };
7
7
  export { HttpClient };
@@ -1,7 +1,7 @@
1
1
  import { CodeSolverSDK } from './code-solver-sdk.js';
2
2
  import { CodeSolverSDKOptions } from './interfaces/sdk-options.js';
3
3
  import { HttpClient } from './utils/http-client.js';
4
- export declare const VERSION = "3.1.1";
4
+ export declare const VERSION = "3.1.3";
5
5
  export { CodeSolverSDK };
6
6
  export { CodeSolverSDKOptions };
7
7
  export { HttpClient };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solver-sdk",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "SDK для интеграции с Code Solver Backend API",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -24,8 +24,7 @@
24
24
  "files": [
25
25
  "dist/**/*",
26
26
  "README.md",
27
- "LICENSE",
28
- "docs/**/*"
27
+ "LICENSE"
29
28
  ],
30
29
  "scripts": {
31
30
  "clean": "rimraf dist",