solver-sdk 1.8.1 → 2.0.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.
- package/dist/cjs/api/projects-api.js +4 -6
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
- package/dist/cjs/constants/websocket-events.constants.js +37 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +20 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/cjs/index.js +24 -49
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/cjs/utils/connection-state-manager.js +133 -0
- package/dist/cjs/utils/connection-state-manager.js.map +1 -0
- package/dist/cjs/utils/logger.js +106 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/ping-pong-manager.js +306 -0
- package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
- package/dist/cjs/utils/session-manager.js +114 -0
- package/dist/cjs/utils/session-manager.js.map +1 -0
- package/dist/cjs/ws/base-ws-client.js +286 -0
- package/dist/cjs/ws/base-ws-client.js.map +1 -0
- package/dist/cjs/ws/dependencies-ws-client.js +11 -0
- package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
- package/dist/cjs/ws/diagnostics-service.js +170 -0
- package/dist/cjs/ws/diagnostics-service.js.map +1 -0
- package/dist/cjs/ws/filesystem-ws-client.js +315 -0
- package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
- package/dist/cjs/ws/indexing-ws-client.js +223 -0
- package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
- package/dist/cjs/ws/notifications-ws-client.js +12 -0
- package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
- package/dist/cjs/ws/reasoning-ws-client.js +330 -0
- package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
- package/dist/esm/api/projects-api.js +4 -6
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/esm/code-solver-sdk-v2.js.map +1 -0
- package/dist/esm/constants/websocket-events.constants.js +36 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +17 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/esm/index.js +22 -97
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/esm/utils/connection-state-manager.js +129 -0
- package/dist/esm/utils/connection-state-manager.js.map +1 -0
- package/dist/esm/utils/logger.js +101 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/ping-pong-manager.js +302 -0
- package/dist/esm/utils/ping-pong-manager.js.map +1 -0
- package/dist/esm/utils/session-manager.js +109 -0
- package/dist/esm/utils/session-manager.js.map +1 -0
- package/dist/esm/ws/base-ws-client.js +282 -0
- package/dist/esm/ws/base-ws-client.js.map +1 -0
- package/dist/esm/ws/dependencies-ws-client.js +7 -0
- package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
- package/dist/esm/ws/diagnostics-service.js +166 -0
- package/dist/esm/ws/diagnostics-service.js.map +1 -0
- package/dist/esm/ws/filesystem-ws-client.js +311 -0
- package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
- package/dist/esm/ws/indexing-ws-client.js +219 -0
- package/dist/esm/ws/indexing-ws-client.js.map +1 -0
- package/dist/esm/ws/notifications-ws-client.js +8 -0
- package/dist/esm/ws/notifications-ws-client.js.map +1 -0
- package/dist/esm/ws/reasoning-ws-client.js +326 -0
- package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +82 -85
- package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
- package/dist/types/constants/websocket-events.constants.d.ts +33 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +16 -0
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +20 -90
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
- package/dist/types/utils/connection-state-manager.d.ts +94 -0
- package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +62 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/ping-pong-manager.d.ts +118 -0
- package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
- package/dist/types/utils/session-manager.d.ts +98 -0
- package/dist/types/utils/session-manager.d.ts.map +1 -0
- package/dist/types/ws/base-ws-client.d.ts +119 -0
- package/dist/types/ws/base-ws-client.d.ts.map +1 -0
- package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
- package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
- package/dist/types/ws/diagnostics-service.d.ts +93 -0
- package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
- package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
- package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
- package/dist/types/ws/indexing-ws-client.d.ts +78 -0
- package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
- package/dist/types/ws/notifications-ws-client.d.ts +5 -0
- package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
- package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
- package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
- package/docs/AUTHENTICATION.md +31 -127
- package/docs/WEBSOCKET.md +51 -211
- package/package.json +1 -1
- package/dist/cjs/code-solver-sdk.js.map +0 -1
- package/dist/esm/code-solver-sdk.js.map +0 -1
- package/dist/types/code-solver-sdk.d.ts.map +0 -1
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { BaseWebSocketClient } from './base-ws-client';
|
|
2
|
+
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants';
|
|
3
|
+
import { WebSocketEvents } from '../constants/websocket-events.constants';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
/**
|
|
6
|
+
* Клиент WebSocket для работы с файловой системой
|
|
7
|
+
*/
|
|
8
|
+
export class FileSystemWsClient extends BaseWebSocketClient {
|
|
9
|
+
/**
|
|
10
|
+
* Создает новый клиент для работы с файловой системой
|
|
11
|
+
* @param baseURL Базовый URL API
|
|
12
|
+
* @param options Опции клиента
|
|
13
|
+
*/
|
|
14
|
+
constructor(baseURL, options = {}) {
|
|
15
|
+
super(WebSocketNamespace.FILESYSTEM, baseURL, {
|
|
16
|
+
enableAutoPing: true,
|
|
17
|
+
pingInterval: 25000,
|
|
18
|
+
reconnectStrategy: 'exponential',
|
|
19
|
+
retryDelay: 1000,
|
|
20
|
+
maxRetryDelay: 30000
|
|
21
|
+
});
|
|
22
|
+
this.sessionId = null;
|
|
23
|
+
this.projectId = null;
|
|
24
|
+
this.pingInterval = 25000; // 25 секунд по умолчанию
|
|
25
|
+
this.pingTimer = null;
|
|
26
|
+
this.SDK_VERSION = '1.0.0';
|
|
27
|
+
// Устанавливаем обработчики
|
|
28
|
+
this.onReadFile = options.onReadFile || (() => Promise.reject('Чтение файлов не реализовано'));
|
|
29
|
+
this.onListFiles = options.onListFiles || (() => Promise.reject('Получение списка файлов не реализовано'));
|
|
30
|
+
this.onWatchStart = options.onWatchStart || (() => Promise.reject('Отслеживание файлов не реализовано'));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Подключение к серверу и инициализация сессии
|
|
34
|
+
* @param params Параметры подключения (может содержать projectId или другие параметры)
|
|
35
|
+
* @returns Promise<boolean> Успешность подключения
|
|
36
|
+
*/
|
|
37
|
+
async connect(params = {}) {
|
|
38
|
+
// Если передан projectId, сохраняем его
|
|
39
|
+
if (params.projectId) {
|
|
40
|
+
this.projectId = params.projectId;
|
|
41
|
+
}
|
|
42
|
+
// Проверяем, есть ли у нас projectId
|
|
43
|
+
if (!this.projectId) {
|
|
44
|
+
this.logger.error('Не указан projectId для подключения');
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
// Подключаемся с базовыми параметрами
|
|
48
|
+
const connected = await super.connect(params);
|
|
49
|
+
if (!connected) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
// Инициализируем сессию
|
|
54
|
+
const response = await this.emitWithAck(WebSocketEvents.INIT, {
|
|
55
|
+
projectId: this.projectId,
|
|
56
|
+
clientVersion: this.SDK_VERSION,
|
|
57
|
+
capabilities: ['text', 'watch']
|
|
58
|
+
});
|
|
59
|
+
if (response && response.payload) {
|
|
60
|
+
this.sessionId = response.payload.sessionId;
|
|
61
|
+
this.pingInterval = response.payload.pingInterval || 25000;
|
|
62
|
+
// Настраиваем обработчики событий
|
|
63
|
+
this.setupHandlers();
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.logger.error('Ошибка инициализации сессии: Пустой ответ');
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.logger.error(`Ошибка инициализации сессии: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Подключение к проекту - удобный метод для использования в приложении
|
|
78
|
+
* @param projectId ID проекта
|
|
79
|
+
* @returns Promise<boolean> Успешность подключения
|
|
80
|
+
*/
|
|
81
|
+
async connectToProject(projectId) {
|
|
82
|
+
this.projectId = projectId;
|
|
83
|
+
return this.connect({ projectId });
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Настройка обработчиков событий
|
|
87
|
+
*/
|
|
88
|
+
setupHandlers() {
|
|
89
|
+
// Обработчик запроса на чтение файла
|
|
90
|
+
this.on(WebSocketEvents.READ_FILE, async (request) => {
|
|
91
|
+
try {
|
|
92
|
+
const content = await this.onReadFile(request.payload.path);
|
|
93
|
+
this.send(WebSocketEvents.READ_FILE_RESPONSE, {
|
|
94
|
+
requestId: request.requestId,
|
|
95
|
+
projectId: request.projectId,
|
|
96
|
+
payload: { content }
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this.send(WebSocketEvents.ERROR, {
|
|
101
|
+
requestId: request.requestId,
|
|
102
|
+
error: {
|
|
103
|
+
code: 'FILE_READ_ERROR',
|
|
104
|
+
message: error instanceof Error ? error.message : String(error)
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
// Обработчик запроса на получение списка файлов
|
|
110
|
+
this.on(WebSocketEvents.LIST_FILES, async (request) => {
|
|
111
|
+
try {
|
|
112
|
+
const files = await this.onListFiles(request.payload.directory, request.payload.options);
|
|
113
|
+
this.send(WebSocketEvents.LIST_FILES_RESPONSE, {
|
|
114
|
+
requestId: request.requestId,
|
|
115
|
+
projectId: request.projectId,
|
|
116
|
+
payload: {
|
|
117
|
+
files,
|
|
118
|
+
directory: request.payload.directory
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
this.send(WebSocketEvents.ERROR, {
|
|
124
|
+
requestId: request.requestId,
|
|
125
|
+
error: {
|
|
126
|
+
code: 'LIST_FILES_ERROR',
|
|
127
|
+
message: error instanceof Error ? error.message : String(error)
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// Обработчик запроса на отслеживание файлов
|
|
133
|
+
this.on(WebSocketEvents.WATCH_START, async (request) => {
|
|
134
|
+
try {
|
|
135
|
+
const success = await this.onWatchStart(request.payload.patterns);
|
|
136
|
+
this.send(WebSocketEvents.WATCH_CONFIRM, {
|
|
137
|
+
requestId: request.requestId,
|
|
138
|
+
projectId: request.projectId,
|
|
139
|
+
payload: {
|
|
140
|
+
success,
|
|
141
|
+
patterns: request.payload.patterns
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
this.send(WebSocketEvents.ERROR, {
|
|
147
|
+
requestId: request.requestId,
|
|
148
|
+
error: {
|
|
149
|
+
code: 'WATCH_ERROR',
|
|
150
|
+
message: error instanceof Error ? error.message : String(error)
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Обработчик ping
|
|
156
|
+
this.on(WebSocketEvents.PING, (data) => {
|
|
157
|
+
this.send(WebSocketEvents.PONG, {
|
|
158
|
+
requestId: data.requestId || uuidv4(),
|
|
159
|
+
timestamp: Date.now()
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Уведомляет сервер об изменении файла
|
|
165
|
+
* @param path Путь к файлу
|
|
166
|
+
* @param changeType Тип изменения
|
|
167
|
+
*/
|
|
168
|
+
notifyFileChanged(path, changeType = 'modified') {
|
|
169
|
+
if (!this.isConnected() || !this.projectId) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
return this.send(WebSocketEvents.FILE_CHANGED, {
|
|
173
|
+
requestId: uuidv4(),
|
|
174
|
+
projectId: this.projectId,
|
|
175
|
+
payload: {
|
|
176
|
+
path,
|
|
177
|
+
changeType,
|
|
178
|
+
timestamp: Date.now()
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Пример использования клиента файловой системы в VS Code расширении:
|
|
185
|
+
*
|
|
186
|
+
* ```typescript
|
|
187
|
+
* import * as vscode from 'vscode';
|
|
188
|
+
* import { FileSystemWsClient } from 'solver-sdk';
|
|
189
|
+
*
|
|
190
|
+
* export function activate(context: vscode.ExtensionContext) {
|
|
191
|
+
* // Создание клиента файловой системы
|
|
192
|
+
* const fsClient = new FileSystemWsClient('wss://your-backend-url.com', {
|
|
193
|
+
* // Обработчик чтения файла
|
|
194
|
+
* onReadFile: async (path) => {
|
|
195
|
+
* try {
|
|
196
|
+
* const uri = vscode.Uri.file(path);
|
|
197
|
+
* const content = await vscode.workspace.fs.readFile(uri);
|
|
198
|
+
* return new TextDecoder().decode(content);
|
|
199
|
+
* } catch (error) {
|
|
200
|
+
* throw new Error(`Ошибка чтения файла: ${error.message}`);
|
|
201
|
+
* }
|
|
202
|
+
* },
|
|
203
|
+
*
|
|
204
|
+
* // Обработчик получения списка файлов
|
|
205
|
+
* onListFiles: async (directory, options) => {
|
|
206
|
+
* try {
|
|
207
|
+
* // Получаем корневую директорию рабочего пространства
|
|
208
|
+
* const rootPath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
|
209
|
+
* if (!rootPath) throw new Error('Не найдено рабочее пространство');
|
|
210
|
+
*
|
|
211
|
+
* // Формируем паттерн для поиска файлов
|
|
212
|
+
* const pattern = new vscode.RelativePattern(
|
|
213
|
+
* rootPath,
|
|
214
|
+
* options?.includePatterns?.[0] || '**'
|
|
215
|
+
* );
|
|
216
|
+
*
|
|
217
|
+
* // Находим файлы по паттерну
|
|
218
|
+
* const files = await vscode.workspace.findFiles(pattern,
|
|
219
|
+
* options?.excludePatterns?.join('|')
|
|
220
|
+
* );
|
|
221
|
+
*
|
|
222
|
+
* // Преобразуем результаты в нужный формат
|
|
223
|
+
* return files.map(uri => {
|
|
224
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
225
|
+
* const stats = fs.statSync(uri.fsPath);
|
|
226
|
+
*
|
|
227
|
+
* return {
|
|
228
|
+
* path: uri.fsPath,
|
|
229
|
+
* relativePath,
|
|
230
|
+
* extension: uri.fsPath.split('.').pop() || '',
|
|
231
|
+
* size: stats.size,
|
|
232
|
+
* isDirectory: stats.isDirectory()
|
|
233
|
+
* };
|
|
234
|
+
* });
|
|
235
|
+
* } catch (error) {
|
|
236
|
+
* throw new Error(`Ошибка получения списка файлов: ${error.message}`);
|
|
237
|
+
* }
|
|
238
|
+
* },
|
|
239
|
+
*
|
|
240
|
+
* // Обработчик отслеживания файлов
|
|
241
|
+
* onWatchStart: async (patterns) => {
|
|
242
|
+
* try {
|
|
243
|
+
* // Создаем наблюдателей за файлами
|
|
244
|
+
* const watchers = patterns.map(pattern => {
|
|
245
|
+
* const watcher = vscode.workspace.createFileSystemWatcher(
|
|
246
|
+
* new vscode.RelativePattern(
|
|
247
|
+
* vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || '',
|
|
248
|
+
* pattern
|
|
249
|
+
* )
|
|
250
|
+
* );
|
|
251
|
+
*
|
|
252
|
+
* // Обработчик изменения файла
|
|
253
|
+
* watcher.onDidChange(uri => {
|
|
254
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
255
|
+
* fsClient.notifyFileChanged(relativePath, 'modified');
|
|
256
|
+
* });
|
|
257
|
+
*
|
|
258
|
+
* // Обработчик создания файла
|
|
259
|
+
* watcher.onDidCreate(uri => {
|
|
260
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
261
|
+
* fsClient.notifyFileChanged(relativePath, 'created');
|
|
262
|
+
* });
|
|
263
|
+
*
|
|
264
|
+
* // Обработчик удаления файла
|
|
265
|
+
* watcher.onDidDelete(uri => {
|
|
266
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
267
|
+
* fsClient.notifyFileChanged(relativePath, 'deleted');
|
|
268
|
+
* });
|
|
269
|
+
*
|
|
270
|
+
* return watcher;
|
|
271
|
+
* });
|
|
272
|
+
*
|
|
273
|
+
* // Добавляем наблюдателей в контекст расширения для правильной очистки
|
|
274
|
+
* watchers.forEach(watcher => {
|
|
275
|
+
* context.subscriptions.push(watcher);
|
|
276
|
+
* });
|
|
277
|
+
*
|
|
278
|
+
* return true;
|
|
279
|
+
* } catch (error) {
|
|
280
|
+
* console.error('Ошибка при настройке отслеживания файлов:', error);
|
|
281
|
+
* return false;
|
|
282
|
+
* }
|
|
283
|
+
* }
|
|
284
|
+
* });
|
|
285
|
+
*
|
|
286
|
+
* // Подключаемся к проекту
|
|
287
|
+
* vscode.commands.registerCommand('extension.connectToProject', async () => {
|
|
288
|
+
* // Запрашиваем ID проекта у пользователя
|
|
289
|
+
* const projectId = await vscode.window.showInputBox({
|
|
290
|
+
* prompt: 'Введите ID проекта для подключения'
|
|
291
|
+
* });
|
|
292
|
+
*
|
|
293
|
+
* if (!projectId) return;
|
|
294
|
+
*
|
|
295
|
+
* try {
|
|
296
|
+
* // Устанавливаем соединение
|
|
297
|
+
* const connected = await fsClient.connectToProject(projectId);
|
|
298
|
+
*
|
|
299
|
+
* if (connected) {
|
|
300
|
+
* vscode.window.showInformationMessage(`Успешное подключение к проекту ${projectId}`);
|
|
301
|
+
* } else {
|
|
302
|
+
* vscode.window.showErrorMessage('Ошибка подключения к проекту');
|
|
303
|
+
* }
|
|
304
|
+
* } catch (error) {
|
|
305
|
+
* vscode.window.showErrorMessage(`Ошибка: ${error.message}`);
|
|
306
|
+
* }
|
|
307
|
+
* });
|
|
308
|
+
* }
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
//# sourceMappingURL=filesystem-ws-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-ws-client.js","sourceRoot":"","sources":["../../../src/ws/filesystem-ws-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
|
|
2
|
+
import { WebSocketEvents as WsEvents } from '../constants/websocket-events.constants.js';
|
|
3
|
+
import { BaseWebSocketClient } from './base-ws-client.js';
|
|
4
|
+
import { createIndexingConnectionParams } from '../utils/reasoning-auth-helper.js';
|
|
5
|
+
/**
|
|
6
|
+
* WebSocket клиент для пространства имен индексации
|
|
7
|
+
*/
|
|
8
|
+
export class IndexingWebSocketClient extends BaseWebSocketClient {
|
|
9
|
+
/**
|
|
10
|
+
* Создает новый WebSocket клиент для индексации
|
|
11
|
+
* @param {string} baseURL Базовый URL API
|
|
12
|
+
* @param {IndexingWebSocketClientOptions} options Опции клиента
|
|
13
|
+
*/
|
|
14
|
+
constructor(baseURL, options = {}) {
|
|
15
|
+
super(WebSocketNamespace.INDEXING, baseURL, options);
|
|
16
|
+
/** ID активного проекта */
|
|
17
|
+
this.activeProjectId = null;
|
|
18
|
+
// Инициализируем ID проекта, если указан
|
|
19
|
+
this.activeProjectId = options.projectId || null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Подключается к серверу WebSocket
|
|
23
|
+
* @param {boolean} autoJoin Автоматически присоединиться к проекту
|
|
24
|
+
* @returns {Promise<boolean>} Успешность подключения
|
|
25
|
+
*/
|
|
26
|
+
async connectToIndexing(autoJoin = true) {
|
|
27
|
+
try {
|
|
28
|
+
this.logger.info('Подключение к пространству имен индексации', { projectId: this.activeProjectId });
|
|
29
|
+
// Получаем параметры для подключения с авторизацией
|
|
30
|
+
const authParams = createIndexingConnectionParams(this.options.apiKey, this.activeProjectId, this.sessionManager.getSessionToken(this.namespace));
|
|
31
|
+
// Подключаемся к пространству имен индексации с передачей authToken
|
|
32
|
+
const connected = await this.connect(authParams);
|
|
33
|
+
if (!connected) {
|
|
34
|
+
this.logger.error('Не удалось подключиться к пространству имен индексации');
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// Аутентифицируемся с увеличенным таймаутом
|
|
38
|
+
try {
|
|
39
|
+
const authResult = await this.emitWithAck(WsEvents.AUTHENTICATE, {
|
|
40
|
+
token: this.options.apiKey,
|
|
41
|
+
projectId: this.activeProjectId
|
|
42
|
+
}, 10000);
|
|
43
|
+
this.logger.debug('Результат аутентификации в namespace индексации', authResult);
|
|
44
|
+
// Если сервер вернул токен сессии, сохраняем его
|
|
45
|
+
if (authResult.sessionToken) {
|
|
46
|
+
this.sessionManager.saveSessionToken(this.namespace, authResult.sessionToken);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.logger.error('Ошибка аутентификации в namespace индексации', error);
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Если у нас есть ID проекта и включено автоматическое присоединение
|
|
54
|
+
if (this.activeProjectId && autoJoin) {
|
|
55
|
+
return this.joinProject(this.activeProjectId);
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.logger.error('Ошибка подключения к пространству имен индексации', error);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Присоединяется к проекту
|
|
66
|
+
* @param {string} projectId ID проекта
|
|
67
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
68
|
+
*/
|
|
69
|
+
async joinProject(projectId) {
|
|
70
|
+
if (!projectId) {
|
|
71
|
+
this.logger.error('Попытка присоединиться к пустому projectId');
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
// Сохраняем ID проекта
|
|
75
|
+
this.activeProjectId = projectId;
|
|
76
|
+
try {
|
|
77
|
+
// Отправляем запрос на присоединение к проекту
|
|
78
|
+
const joinResult = await this.emitWithAck(WsEvents.JOIN_PROJECT, {
|
|
79
|
+
projectId,
|
|
80
|
+
token: this.options.apiKey
|
|
81
|
+
}, 10000);
|
|
82
|
+
this.logger.debug(`Результат присоединения к проекту ${projectId}`, joinResult);
|
|
83
|
+
if (joinResult.success !== true) {
|
|
84
|
+
this.logger.error(`Ошибка при присоединении к проекту: ${joinResult.error || 'Неизвестная ошибка'}`);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.logger.error(`Ошибка при присоединении к проекту ${projectId}`, error);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Запускает процесс индексации проекта
|
|
96
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
97
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
98
|
+
*/
|
|
99
|
+
async startIndexing(projectId) {
|
|
100
|
+
const targetId = projectId || this.activeProjectId;
|
|
101
|
+
if (!targetId) {
|
|
102
|
+
this.logger.error('Попытка запустить индексацию без указания ID проекта');
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
// Отправляем запрос на запуск индексации
|
|
107
|
+
const startResult = await this.emitWithAck(WsEvents.START_INDEXING, {
|
|
108
|
+
projectId: targetId,
|
|
109
|
+
token: this.options.apiKey
|
|
110
|
+
}, 10000);
|
|
111
|
+
this.logger.debug(`Результат запуска индексации проекта ${targetId}`, startResult);
|
|
112
|
+
if (startResult.success !== true) {
|
|
113
|
+
this.logger.error(`Ошибка при запуске индексации: ${startResult.error || 'Неизвестная ошибка'}`);
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.logger.error(`Ошибка при запуске индексации проекта ${targetId}`, error);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Останавливает процесс индексации проекта
|
|
125
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
126
|
+
* @returns {Promise<boolean>} Успешность операции
|
|
127
|
+
*/
|
|
128
|
+
async stopIndexing(projectId) {
|
|
129
|
+
const targetId = projectId || this.activeProjectId;
|
|
130
|
+
if (!targetId) {
|
|
131
|
+
this.logger.error('Попытка остановить индексацию без указания ID проекта');
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
// Отправляем запрос на остановку индексации
|
|
136
|
+
const stopResult = await this.emitWithAck(WsEvents.STOP_INDEXING, {
|
|
137
|
+
projectId: targetId,
|
|
138
|
+
token: this.options.apiKey
|
|
139
|
+
}, 10000);
|
|
140
|
+
this.logger.debug(`Результат остановки индексации проекта ${targetId}`, stopResult);
|
|
141
|
+
if (stopResult.success !== true) {
|
|
142
|
+
this.logger.error(`Ошибка при остановке индексации: ${stopResult.error || 'Неизвестная ошибка'}`);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
this.logger.error(`Ошибка при остановке индексации проекта ${targetId}`, error);
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Получает статус индексации проекта
|
|
154
|
+
* @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
|
|
155
|
+
* @returns {Promise<any>} Статус индексации проекта
|
|
156
|
+
*/
|
|
157
|
+
async getIndexingStatus(projectId) {
|
|
158
|
+
const targetId = projectId || this.activeProjectId;
|
|
159
|
+
if (!targetId) {
|
|
160
|
+
throw new Error('Не указан ID проекта для получения статуса индексации');
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
// Отправляем запрос на получение статуса индексации
|
|
164
|
+
const statusResult = await this.emitWithAck(WsEvents.GET_INDEXING_STATUS, {
|
|
165
|
+
projectId: targetId,
|
|
166
|
+
token: this.options.apiKey
|
|
167
|
+
}, 10000);
|
|
168
|
+
this.logger.debug(`Получен статус индексации проекта ${targetId}`, statusResult);
|
|
169
|
+
return statusResult;
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
this.logger.error(`Ошибка при получении статуса индексации проекта ${targetId}`, error);
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Устанавливает обработчик для события завершения индексации
|
|
178
|
+
* @param {Function} handler Обработчик события
|
|
179
|
+
*/
|
|
180
|
+
onIndexingComplete(handler) {
|
|
181
|
+
this.on('indexing_complete', handler);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Устанавливает обработчик для события индексации файла
|
|
185
|
+
* @param {Function} handler Обработчик события
|
|
186
|
+
*/
|
|
187
|
+
onFileIndexed(handler) {
|
|
188
|
+
this.on('file_indexed', handler);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Устанавливает обработчик для события ошибки индексации
|
|
192
|
+
* @param {Function} handler Обработчик события
|
|
193
|
+
*/
|
|
194
|
+
onIndexingError(handler) {
|
|
195
|
+
this.on('indexing_error', handler);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Получает текущий ID активного проекта
|
|
199
|
+
* @returns {string | null} ID активного проекта или null
|
|
200
|
+
*/
|
|
201
|
+
getActiveProjectId() {
|
|
202
|
+
return this.activeProjectId;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Устанавливает ID активного проекта
|
|
206
|
+
* @param {string} projectId ID проекта
|
|
207
|
+
* @returns {boolean} Успешность установки
|
|
208
|
+
*/
|
|
209
|
+
setActiveProjectId(projectId) {
|
|
210
|
+
if (!projectId) {
|
|
211
|
+
this.logger.error('Попытка установить пустой projectId');
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
this.activeProjectId = projectId;
|
|
215
|
+
this.logger.debug(`Установлен активный projectId: ${projectId}`);
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=indexing-ws-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexing-ws-client.js","sourceRoot":"","sources":["../../../src/ws/indexing-ws-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseWebSocketClient } from './base-ws-client';
|
|
2
|
+
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
|
|
3
|
+
export class NotificationsWsClient extends BaseWebSocketClient {
|
|
4
|
+
constructor(baseURL, options = {}) {
|
|
5
|
+
super(WebSocketNamespace.DEFAULT, baseURL, options);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=notifications-ws-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications-ws-client.js","sourceRoot":"","sources":["../../../src/ws/notifications-ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAC5D,YAAY,OAAe,EAAE,OAAO,GAAG,EAAE;QACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CAEF"}
|