solver-sdk 6.0.0 → 6.0.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.
- package/README.md +18 -14
- package/dist/cjs/api/indexing-api.js +38 -156
- package/dist/cjs/api/indexing-api.js.map +1 -1
- package/dist/cjs/api/projects-api.js +134 -779
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +1 -9
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/esm/api/indexing-api.js +36 -154
- package/dist/esm/api/indexing-api.js.map +1 -1
- package/dist/esm/api/projects-api.js +133 -745
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +1 -9
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/types/api/indexing-api.d.ts +20 -129
- package/dist/types/api/indexing-api.d.ts.map +1 -1
- package/dist/types/api/projects-api.d.ts +36 -497
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +0 -7
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -294,56 +294,60 @@ sdk.disconnectWebSocket();
|
|
|
294
294
|
|
|
295
295
|
---
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
# Backend SDK v6.0.0 API
|
|
298
298
|
|
|
299
|
-
|
|
299
|
+
## Projects API (`sdk.projects`)
|
|
300
300
|
```typescript
|
|
301
|
+
// Управление проектами
|
|
301
302
|
createProject(name: string, data?: any): Promise<Project>
|
|
302
303
|
getAllProjects(): Promise<Project[]>
|
|
303
304
|
getProject(projectId: string): Promise<Project | null>
|
|
304
305
|
findOrCreateProject(projectPath: string, projectName: string): Promise<Project>
|
|
306
|
+
deleteProject(projectId: string): Promise<void>
|
|
307
|
+
|
|
308
|
+
// Статус и состояние
|
|
305
309
|
getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
|
|
310
|
+
getIndexingStatus(projectId: string): Promise<IndexingStatus>
|
|
311
|
+
startIndexing(projectId: string, options?: IndexingOptions): Promise<any>
|
|
312
|
+
cancelIndexing(projectId: string): Promise<boolean>
|
|
313
|
+
resetIndexing(projectId: string): Promise<ResetResult>
|
|
314
|
+
|
|
315
|
+
// Session Recovery
|
|
306
316
|
getRecoveryStatus(projectId: string): Promise<RecoveryStatus>
|
|
307
|
-
resumeSync(projectId: string, options?: ResumeOptions): Promise<ResumeResult>
|
|
317
|
+
resumeSync(projectId: string, options?: ResumeOptions): Promise<ResumeResult>
|
|
308
318
|
cancelRecovery(projectId: string): Promise<{ success: boolean }>
|
|
309
319
|
initializeDeltaSync(projectId: string, clientRootHash: string): Promise<SyncInitResult>
|
|
310
|
-
resetIndexing(projectId: string): Promise<ResetResult>
|
|
311
|
-
deleteProject(projectId: string): Promise<void>
|
|
312
320
|
```
|
|
313
321
|
|
|
314
|
-
|
|
322
|
+
## Delta Manager API (`sdk.deltaManager`)
|
|
315
323
|
```typescript
|
|
316
324
|
syncEncryptedChunks(projectId: string, encryptedChunks: EncryptedChunk[], rootHash: string, options?: SyncOptions): Promise<SyncResult>
|
|
317
|
-
cleanupDeletedFiles(projectId: string, currentFiles: FileContent[]): Promise<CleanupResult>
|
|
318
325
|
getSyncStatus(projectId: string): Promise<SyncStatus>
|
|
319
326
|
cancelSync(projectId: string): Promise<boolean>
|
|
320
327
|
```
|
|
321
328
|
|
|
322
|
-
|
|
329
|
+
## Chat API (`sdk.chat`)
|
|
323
330
|
```typescript
|
|
324
331
|
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
325
332
|
chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<AsyncIterable<ChatStreamChunk>>
|
|
326
333
|
cancelCurrentRequest(): void
|
|
327
334
|
```
|
|
328
335
|
|
|
329
|
-
|
|
336
|
+
## Search API (`sdk.search`)
|
|
330
337
|
```typescript
|
|
331
338
|
search(query: string, options?: SearchOptions): Promise<SearchResult[]>
|
|
332
339
|
searchThenFetch(query: string, options?: SearchThenFetchOptions): Promise<SearchThenFetchResult>
|
|
333
340
|
```
|
|
334
341
|
|
|
335
|
-
|
|
342
|
+
## WebSocket API (`sdk.projectSync`)
|
|
336
343
|
```typescript
|
|
337
344
|
connectProjectSync(projectId: string): Promise<void>
|
|
338
345
|
onSyncProgress(callback: (progress: SyncProgressEvent) => void): void
|
|
339
|
-
onSyncCompleted(callback: (result: SyncCompletedEvent) => void): void
|
|
346
|
+
onSyncCompleted(callback: (result: SyncCompletedEvent) => void): void
|
|
340
347
|
onSyncError(callback: (error: SyncErrorEvent) => void): void
|
|
341
348
|
disconnectWebSocket(): void
|
|
342
349
|
```
|
|
343
350
|
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## 🔧 **Backend SDK API Reference**
|
|
347
351
|
|
|
348
352
|
### 🏗️ **Projects API (`sdk.projects`)**
|
|
349
353
|
|
|
@@ -1,169 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 🚨 АРХИТЕКТУРНАЯ ОШИБКА: IndexingApi удален!
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* индексации
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.IndexingApi = void 0;
|
|
10
|
-
/**
|
|
11
|
-
* API для управления индексацией проектов
|
|
5
|
+
* Backend SDK не должен работать с файловыми путями!
|
|
6
|
+
* Вся логика индексации перенесена в Projects API.
|
|
12
7
|
*
|
|
13
|
-
*
|
|
14
|
-
* ```javascript
|
|
15
|
-
* // Создание и индексация проекта
|
|
16
|
-
* const result = await sdk.indexing.indexProject('/path/to/project', 'My Project');
|
|
17
|
-
* console.log('Project ID:', result.projectId);
|
|
8
|
+
* ✅ ИСПОЛЬЗУЙТЕ вместо этого:
|
|
18
9
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // Создание проекта (в Client Extension):
|
|
12
|
+
* const project = await sdk.projects.createProject('My Project', {
|
|
13
|
+
* description: 'Описание проекта'
|
|
14
|
+
* });
|
|
22
15
|
*
|
|
23
|
-
* //
|
|
24
|
-
* const
|
|
25
|
-
* console.log('Final status:', finalStatus.status);
|
|
16
|
+
* // Получение статуса индексации:
|
|
17
|
+
* const status = await sdk.projects.getIndexingStatus(project.id);
|
|
26
18
|
*
|
|
27
|
-
* // Отмена
|
|
28
|
-
* await sdk.
|
|
19
|
+
* // Отмена индексации:
|
|
20
|
+
* await sdk.projects.cancelIndexing(project.id);
|
|
21
|
+
*
|
|
22
|
+
* // Real-time статус через WebSocket:
|
|
23
|
+
* await sdk.connectProjectSync(project.id);
|
|
24
|
+
* sdk.onSyncProgress((progress) => {
|
|
25
|
+
* console.log('Progress:', progress.percentage);
|
|
26
|
+
* });
|
|
29
27
|
* ```
|
|
30
28
|
*/
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.IndexingApi = void 0;
|
|
31
31
|
class IndexingApi {
|
|
32
|
-
constructor(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const project = await this.httpClient.post('/api/v1/projects', createRequest);
|
|
50
|
-
// Запускаем индексацию
|
|
51
|
-
const indexingResult = await this.httpClient.post(`/api/v1/projects/${project.id}/index`);
|
|
52
|
-
return {
|
|
53
|
-
projectId: project.id,
|
|
54
|
-
name: project.name,
|
|
55
|
-
status: indexingResult.status || 'started',
|
|
56
|
-
message: indexingResult.message || 'Индексация запущена'
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Получает текущий статус индексации проекта
|
|
61
|
-
*
|
|
62
|
-
* ⚠️ ВАЖНО: Для real-time уведомлений используйте WebSocket:
|
|
63
|
-
* ```typescript
|
|
64
|
-
* // Правильно (real-time):
|
|
65
|
-
* await sdk.connectWebSocket();
|
|
66
|
-
* sdk.projectSync.on('sync-status-update', (status) => {
|
|
67
|
-
* console.log('Статус обновлен:', status);
|
|
68
|
-
* });
|
|
69
|
-
*
|
|
70
|
-
* // Неправильно (не делайте polling):
|
|
71
|
-
* // setInterval(() => sdk.indexing.getStatus(id), 2000); // ❌
|
|
72
|
-
* ```
|
|
73
|
-
*
|
|
74
|
-
* @param {string} projectId ID проекта
|
|
75
|
-
* @returns {Promise<IndexingStatus>} Текущий статус индексации
|
|
76
|
-
*/
|
|
77
|
-
async getStatus(projectId) {
|
|
78
|
-
this.validateProjectId(projectId);
|
|
79
|
-
const status = await this.httpClient.get(`/api/v1/projects/${projectId}/indexing-status`);
|
|
80
|
-
return {
|
|
81
|
-
status: status.status || 'unknown',
|
|
82
|
-
progress: status.progress || 0,
|
|
83
|
-
totalFiles: status.totalFiles,
|
|
84
|
-
processedFiles: status.processedFiles,
|
|
85
|
-
currentFile: status.currentFile,
|
|
86
|
-
error: status.error,
|
|
87
|
-
updatedAt: new Date().toISOString()
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* ⚠️ DEPRECATED: Метод отключен. Используйте WebSocket для real-time уведомлений
|
|
92
|
-
*
|
|
93
|
-
* @deprecated Используйте WebSocket подход:
|
|
94
|
-
* ```typescript
|
|
95
|
-
* await sdk.connectWebSocket();
|
|
96
|
-
* sdk.projectSync.on('sync-status-update', (status) => {
|
|
97
|
-
* if (status.status === 'completed') {
|
|
98
|
-
* console.log('Индексация завершена!');
|
|
99
|
-
* }
|
|
100
|
-
* });
|
|
101
|
-
* sdk.projectSync.subscribeToProject(projectId);
|
|
102
|
-
* ```
|
|
103
|
-
*
|
|
104
|
-
* @param {string} projectId ID проекта
|
|
105
|
-
* @param {number} [timeout=300000] Таймаут в миллисекундах
|
|
106
|
-
* @returns {Promise<IndexingStatus>} Бросает ошибку
|
|
107
|
-
*/
|
|
108
|
-
async waitForCompletion(projectId, timeout = 300000) {
|
|
109
|
-
throw new Error('❌ waitForCompletion() ОТКЛЮЧЕН для предотвращения polling.\n\n' +
|
|
110
|
-
'✅ ИСПОЛЬЗУЙТЕ WebSocket для real-time уведомлений:\n\n' +
|
|
111
|
-
'await sdk.connectWebSocket();\n' +
|
|
112
|
-
'sdk.projectSync.on(\'sync-status-update\', (status) => {\n' +
|
|
113
|
-
' if (status.status === \'completed\') {\n' +
|
|
114
|
-
' console.log(\'Индексация завершена!\');\n' +
|
|
115
|
-
' }\n' +
|
|
116
|
-
'});\n' +
|
|
117
|
-
'sdk.projectSync.subscribeToProject(projectId);\n\n' +
|
|
118
|
-
'📖 Подробнее: https://docs.codesolver.dev/websocket');
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Отменяет текущую индексацию проекта
|
|
122
|
-
*
|
|
123
|
-
* @param {string} projectId ID проекта
|
|
124
|
-
* @returns {Promise<void>}
|
|
125
|
-
*/
|
|
126
|
-
async cancelIndexing(projectId) {
|
|
127
|
-
this.validateProjectId(projectId);
|
|
128
|
-
await this.httpClient.post(`/api/v1/projects/${projectId}/cancel-indexing`);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Перезапускает индексацию проекта
|
|
132
|
-
*
|
|
133
|
-
* @param {string} projectId ID проекта
|
|
134
|
-
* @returns {Promise<IndexingStatus>} Статус после перезапуска
|
|
135
|
-
*/
|
|
136
|
-
async restartIndexing(projectId) {
|
|
137
|
-
this.validateProjectId(projectId);
|
|
138
|
-
// Сначала отменяем текущую индексацию
|
|
139
|
-
try {
|
|
140
|
-
await this.cancelIndexing(projectId);
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
// Игнорируем ошибки отмены - возможно индексация уже завершена
|
|
144
|
-
}
|
|
145
|
-
// Запускаем новую индексацию
|
|
146
|
-
const result = await this.httpClient.post(`/api/v1/projects/${projectId}/index`);
|
|
147
|
-
return {
|
|
148
|
-
status: result.status || 'started',
|
|
149
|
-
progress: 0,
|
|
150
|
-
updatedAt: new Date().toISOString()
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Валидация ID проекта
|
|
155
|
-
* @private
|
|
156
|
-
*/
|
|
157
|
-
validateProjectId(projectId) {
|
|
158
|
-
if (projectId === undefined || projectId === null) {
|
|
159
|
-
throw new Error('Project ID is required');
|
|
160
|
-
}
|
|
161
|
-
if (typeof projectId !== 'string') {
|
|
162
|
-
throw new Error('Project ID must be a string');
|
|
163
|
-
}
|
|
164
|
-
if (projectId.trim().length === 0) {
|
|
165
|
-
throw new Error('Project ID cannot be empty');
|
|
166
|
-
}
|
|
32
|
+
constructor() {
|
|
33
|
+
throw new Error(`
|
|
34
|
+
🚨 АРХИТЕКТУРНАЯ ОШИБКА: IndexingApi недоступен!
|
|
35
|
+
|
|
36
|
+
Backend SDK не должен работать с файловыми путями.
|
|
37
|
+
|
|
38
|
+
✅ ИСПОЛЬЗУЙТЕ Projects API:
|
|
39
|
+
- sdk.projects.createProject() - создание проекта
|
|
40
|
+
- sdk.projects.getIndexingStatus() - статус индексации
|
|
41
|
+
- sdk.projects.cancelIndexing() - отмена индексации
|
|
42
|
+
|
|
43
|
+
✅ ИСПОЛЬЗУЙТЕ WebSocket для real-time:
|
|
44
|
+
- sdk.connectProjectSync() - подключение
|
|
45
|
+
- sdk.onSyncProgress() - прогресс индексации
|
|
46
|
+
|
|
47
|
+
📖 Документация: https://docs.codesolver.dev/projects-api
|
|
48
|
+
`);
|
|
167
49
|
}
|
|
168
50
|
}
|
|
169
51
|
exports.IndexingApi = IndexingApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexing-api.js","sourceRoot":"","sources":["../../../src/api/indexing-api.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"indexing-api.js","sourceRoot":"","sources":["../../../src/api/indexing-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAEH,MAAa,WAAW;IACtB;QACE,MAAM,IAAI,KAAK,CAAC;;;;;;;;;;;;;;;KAef,CAAC,CAAC;IACL,CAAC;CACF;AAnBD,kCAmBC"}
|