solver-sdk 3.1.1 → 3.1.2
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 +91 -121
- package/dist/cjs/code-solver-sdk.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/code-solver-sdk.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
# Code Solver SDK v3.
|
|
1
|
+
# Code Solver SDK v3.1.2
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
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 =
|
|
30
|
-
baseURL: '
|
|
31
|
-
apiKey: 'your-api-key',
|
|
32
|
-
timeout: 30000
|
|
28
|
+
const sdk = await CodeSolverSDK.create({
|
|
29
|
+
baseURL: 'http://localhost:3000'
|
|
33
30
|
});
|
|
34
31
|
|
|
35
|
-
//
|
|
36
|
-
const
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
144
|
-
baseURL: '
|
|
145
|
-
apiKey: 'your-api-key',
|
|
146
|
-
timeout: 30000,
|
|
147
|
-
|
|
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 =
|
|
184
|
-
baseURL: 'http://localhost:
|
|
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.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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.
|
|
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
|
-
|
|
191
|
+
limit: 10
|
|
213
192
|
});
|
|
214
|
-
|
|
215
|
-
// 5. Анализируем зависимости
|
|
216
|
-
const dependencies = await sdk.dependencies.getDependencyGraph(project.id);
|
|
217
193
|
|
|
218
|
-
//
|
|
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('
|
|
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,43 @@ fullWorkflow();
|
|
|
243
215
|
|
|
244
216
|
### Проблемы с подключением
|
|
245
217
|
```javascript
|
|
246
|
-
//
|
|
247
|
-
const
|
|
248
|
-
console.log('
|
|
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 =
|
|
260
|
-
baseURL: '
|
|
261
|
-
timeout: 120000
|
|
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.
|
|
232
|
+
## 📝 Changelog v3.1.2
|
|
271
233
|
|
|
272
234
|
### ✅ Добавлено
|
|
273
|
-
-
|
|
274
|
-
-
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
235
|
+
- Поиск функций через `/search/functions` API
|
|
236
|
+
- Методы `searchFunctions()` и `searchFunctionsGet()`
|
|
237
|
+
- Статистика функций `getFunctionStats()`
|
|
238
|
+
- Автоматический выбор модели и токенов на бэкенде
|
|
239
|
+
- Упрощенные Chat API без параметров модели
|
|
278
240
|
|
|
279
241
|
### ❌ Удалено
|
|
280
|
-
-
|
|
281
|
-
- `
|
|
282
|
-
-
|
|
283
|
-
-
|
|
242
|
+
- `AgentsApi` - больше не используется
|
|
243
|
+
- `DependenciesApi` - работает внутренне
|
|
244
|
+
- `simple-indexing-client.ts` - дублировал ProjectsApi
|
|
245
|
+
- Все устаревшие методы и примеры
|
|
246
|
+
- Ручной выбор модели и лимитов токенов клиентом
|
|
284
247
|
|
|
285
248
|
### 🔄 Изменено
|
|
286
|
-
-
|
|
287
|
-
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
249
|
+
- Обновлены все примеры кода на актуальный синтаксис
|
|
250
|
+
- Упрощена документация в один файл
|
|
251
|
+
- Исправлены пути API с префиксом `/api/v1`
|
|
252
|
+
- Улучшена обработка ошибок индексации
|
|
253
|
+
- Chat API упрощен - модель выбирается автоматически
|
|
254
|
+
- Полная синхронизация документации с реальным кодом
|
|
290
255
|
|
|
291
256
|
## 📄 Лицензия
|
|
292
257
|
|
|
@@ -378,9 +343,14 @@ export async function activate(context: vscode.ExtensionContext) {
|
|
|
378
343
|
const projects = await sdk.projects.getReadyProjects();
|
|
379
344
|
if (projects.length === 0) return;
|
|
380
345
|
|
|
381
|
-
const
|
|
346
|
+
const response = await sdk.search.searchFunctions(projects[0].id, { query, limit: 20 });
|
|
347
|
+
|
|
348
|
+
if (!response.success || response.results.length === 0) {
|
|
349
|
+
vscode.window.showInformationMessage('Функции не найдены');
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
382
352
|
|
|
383
|
-
const items =
|
|
353
|
+
const items = response.results.map(fn => ({
|
|
384
354
|
label: fn.name,
|
|
385
355
|
description: fn.signature,
|
|
386
356
|
detail: `${fn.filePath}:${fn.startLine}`,
|
|
@@ -413,7 +383,7 @@ export async function activate(context: vscode.ExtensionContext) {
|
|
|
413
383
|
{ "command": "extension.searchFunctions", "title": "🔍 Поиск функций" }
|
|
414
384
|
]
|
|
415
385
|
},
|
|
416
|
-
"dependencies": { "solver-sdk": "^3.1.
|
|
386
|
+
"dependencies": { "solver-sdk": "^3.1.2" }
|
|
417
387
|
}
|
|
418
388
|
```
|
|
419
389
|
|
|
@@ -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.
|
|
13
|
+
const SDK_VERSION = '3.1.2';
|
|
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.
|
|
23
|
+
exports.VERSION = '3.1.2';
|
|
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.
|
|
10
|
+
const SDK_VERSION = '3.1.2';
|
|
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.
|
|
4
|
+
export const VERSION = '3.1.2';
|
|
5
5
|
// Экспортируем основные классы и интерфейсы
|
|
6
6
|
export { CodeSolverSDK };
|
|
7
7
|
export { HttpClient };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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.
|
|
4
|
+
export declare const VERSION = "3.1.2";
|
|
5
5
|
export { CodeSolverSDK };
|
|
6
6
|
export { CodeSolverSDKOptions };
|
|
7
7
|
export { HttpClient };
|