solver-sdk 1.9.0 → 2.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/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +219 -273
- package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
- package/dist/cjs/constants/websocket-events.constants.js +24 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +2 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -1
- package/dist/cjs/index.js +31 -49
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/ws/filesystem-ws-client.js +315 -0
- package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
- package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +219 -273
- package/dist/esm/code-solver-sdk-v2.js.map +1 -0
- package/dist/esm/constants/websocket-events.constants.js +23 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +2 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -1
- package/dist/esm/index.js +29 -96
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ws/filesystem-ws-client.js +311 -0
- package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
- package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +81 -85
- package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
- package/dist/types/constants/websocket-events.constants.d.ts +21 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +3 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +27 -89
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
- package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-events.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-events.constants.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"websocket-events.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-events.constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,5 +14,7 @@ var WebSocketNamespace;
|
|
|
14
14
|
WebSocketNamespace["INDEXING"] = "/indexing";
|
|
15
15
|
/** Пространство для зависимостей */
|
|
16
16
|
WebSocketNamespace["DEPENDENCIES"] = "/dependencies";
|
|
17
|
+
/** Пространство для файловой системы */
|
|
18
|
+
WebSocketNamespace["FILESYSTEM"] = "/filesystem";
|
|
17
19
|
})(WebSocketNamespace || (exports.WebSocketNamespace = WebSocketNamespace = {}));
|
|
18
20
|
//# sourceMappingURL=websocket-namespaces.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-namespaces.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-namespaces.constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"websocket-namespaces.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-namespaces.constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B,iCAAiC;IACjC,mCAAa,CAAA;IAEb,mCAAmC;IACnC,8CAAwB,CAAA;IAExB,kCAAkC;IAClC,4CAAsB,CAAA;IAEtB,oCAAoC;IACpC,oDAA8B,CAAA;IAE9B,wCAAwC;IACxC,gDAA0B,CAAA;AAC5B,CAAC,EAfW,kBAAkB,kCAAlB,kBAAkB,QAe7B"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,55 +14,37 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
exports.WebSocketClient = exports.HttpClient = exports.WebSocketEvents = exports.CodeSolverSDK = exports.VERSION = void 0;
|
|
18
|
+
const code_solver_sdk_v2_js_1 = require("./code-solver-sdk-v2.js");
|
|
19
|
+
Object.defineProperty(exports, "CodeSolverSDK", { enumerable: true, get: function () { return code_solver_sdk_v2_js_1.CodeSolverSDK; } });
|
|
20
|
+
const websocket_events_constants_js_1 = require("./constants/websocket-events.constants.js");
|
|
21
|
+
Object.defineProperty(exports, "WebSocketEvents", { enumerable: true, get: function () { return websocket_events_constants_js_1.WebSocketEvents; } });
|
|
22
|
+
const http_client_js_1 = require("./utils/http-client.js");
|
|
23
|
+
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_js_1.HttpClient; } });
|
|
24
|
+
const websocket_client_js_1 = require("./utils/websocket-client.js");
|
|
25
|
+
Object.defineProperty(exports, "WebSocketClient", { enumerable: true, get: function () { return websocket_client_js_1.WebSocketClient; } });
|
|
21
26
|
// Версия SDK
|
|
22
|
-
exports.VERSION = '
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var agents_api_1 = require("./api/agents-api");
|
|
44
|
-
Object.defineProperty(exports, "AgentsApi", { enumerable: true, get: function () { return agents_api_1.AgentsApi; } });
|
|
45
|
-
var chat_api_1 = require("./api/chat-api");
|
|
46
|
-
Object.defineProperty(exports, "ChatApi", { enumerable: true, get: function () { return chat_api_1.ChatApi; } });
|
|
47
|
-
var models_api_1 = require("./api/models-api");
|
|
48
|
-
Object.defineProperty(exports, "ModelsApi", { enumerable: true, get: function () { return models_api_1.ModelsApi; } });
|
|
49
|
-
var dependencies_api_1 = require("./api/dependencies-api");
|
|
50
|
-
Object.defineProperty(exports, "DependenciesApi", { enumerable: true, get: function () { return dependencies_api_1.DependenciesApi; } });
|
|
51
|
-
// Клиенты для коммуникации
|
|
52
|
-
var http_client_1 = require("./utils/http-client");
|
|
53
|
-
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_1.HttpClient; } });
|
|
54
|
-
var sse_client_1 = require("./utils/sse-client");
|
|
55
|
-
Object.defineProperty(exports, "SseClient", { enumerable: true, get: function () { return sse_client_1.SseClient; } });
|
|
56
|
-
var websocket_client_1 = require("./utils/websocket-client");
|
|
57
|
-
Object.defineProperty(exports, "WebSocketClient", { enumerable: true, get: function () { return websocket_client_1.WebSocketClient; } });
|
|
58
|
-
var indexing_websocket_client_1 = require("./utils/indexing-websocket-client");
|
|
59
|
-
Object.defineProperty(exports, "IndexingWebSocketClient", { enumerable: true, get: function () { return indexing_websocket_client_1.IndexingWebSocketClient; } });
|
|
60
|
-
var code_solver_websocket_client_1 = require("./utils/code-solver-websocket-client");
|
|
61
|
-
Object.defineProperty(exports, "CodeSolverWebSocketClient", { enumerable: true, get: function () { return code_solver_websocket_client_1.CodeSolverWebSocketClient; } });
|
|
62
|
-
Object.defineProperty(exports, "WebSocketNamespace", { enumerable: true, get: function () { return code_solver_websocket_client_1.WebSocketNamespace; } });
|
|
63
|
-
// Экспорт всех типов
|
|
64
|
-
__exportStar(require("./types/index"), exports);
|
|
65
|
-
__exportStar(require("./models/types"), exports);
|
|
27
|
+
exports.VERSION = '2.0.1';
|
|
28
|
+
// Экспортируем основные интерфейсы и типы
|
|
29
|
+
__exportStar(require("./interfaces/sdk-options.js"), exports);
|
|
30
|
+
__exportStar(require("./interfaces/websocket/callbacks.interfaces.js"), exports);
|
|
31
|
+
__exportStar(require("./constants/websocket-namespaces.constants.js"), exports);
|
|
32
|
+
__exportStar(require("./constants/websocket-events.constants.js"), exports);
|
|
33
|
+
// Экспортируем типы WebSocket клиентов
|
|
34
|
+
__exportStar(require("./ws/indexing-ws-client.js"), exports);
|
|
35
|
+
__exportStar(require("./ws/reasoning-ws-client.js"), exports);
|
|
36
|
+
__exportStar(require("./ws/filesystem-ws-client.js"), exports);
|
|
37
|
+
__exportStar(require("./ws/dependencies-ws-client.js"), exports);
|
|
38
|
+
// Экспортируем API клиенты
|
|
39
|
+
__exportStar(require("./api/projects-api.js"), exports);
|
|
40
|
+
__exportStar(require("./api/search-api.js"), exports);
|
|
41
|
+
__exportStar(require("./api/reasoning-api.js"), exports);
|
|
42
|
+
__exportStar(require("./api/context-api.js"), exports);
|
|
43
|
+
__exportStar(require("./api/code-modification-api.js"), exports);
|
|
44
|
+
__exportStar(require("./api/agents-api.js"), exports);
|
|
45
|
+
__exportStar(require("./api/chat-api/index.js"), exports);
|
|
46
|
+
__exportStar(require("./api/models-api.js"), exports);
|
|
47
|
+
__exportStar(require("./api/dependencies-api.js"), exports);
|
|
66
48
|
// Экспорт по умолчанию
|
|
67
|
-
exports.default =
|
|
49
|
+
exports.default = code_solver_sdk_v2_js_1.CodeSolverSDK;
|
|
68
50
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mEAAwD;AAU/C,8FAVA,qCAAa,OAUA;AARtB,6FAA4E;AAUnE,gGAVA,+CAAe,OAUA;AATxB,2DAAoD;AAU3C,2FAVA,2BAAU,OAUA;AATnB,qEAA8D;AAUrD,gGAVA,qCAAe,OAUA;AARxB,aAAa;AACA,QAAA,OAAO,GAAG,OAAO,CAAC;AAS/B,0CAA0C;AAC1C,8DAA4C;AAC5C,iFAA+D;AAC/D,gFAA8D;AAC9D,4EAA0D;AAE1D,uCAAuC;AACvC,6DAA2C;AAC3C,8DAA4C;AAC5C,+DAA6C;AAC7C,iEAA+C;AAE/C,2BAA2B;AAC3B,wDAAsC;AACtC,sDAAoC;AACpC,yDAAuC;AACvC,uDAAqC;AACrC,iEAA+C;AAC/C,sDAAoC;AACpC,0DAAwC;AACxC,sDAAoC;AACpC,4DAA0C;AAE1C,uBAAuB;AACvB,kBAAe,qCAAa,CAAC"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileSystemWsClient = void 0;
|
|
4
|
+
const base_ws_client_1 = require("./base-ws-client");
|
|
5
|
+
const websocket_namespaces_constants_1 = require("../constants/websocket-namespaces.constants");
|
|
6
|
+
const websocket_events_constants_1 = require("../constants/websocket-events.constants");
|
|
7
|
+
const uuid_1 = require("uuid");
|
|
8
|
+
/**
|
|
9
|
+
* Клиент WebSocket для работы с файловой системой
|
|
10
|
+
*/
|
|
11
|
+
class FileSystemWsClient extends base_ws_client_1.BaseWebSocketClient {
|
|
12
|
+
/**
|
|
13
|
+
* Создает новый клиент для работы с файловой системой
|
|
14
|
+
* @param baseURL Базовый URL API
|
|
15
|
+
* @param options Опции клиента
|
|
16
|
+
*/
|
|
17
|
+
constructor(baseURL, options = {}) {
|
|
18
|
+
super(websocket_namespaces_constants_1.WebSocketNamespace.FILESYSTEM, baseURL, {
|
|
19
|
+
enableAutoPing: true,
|
|
20
|
+
pingInterval: 25000,
|
|
21
|
+
reconnectStrategy: 'exponential',
|
|
22
|
+
retryDelay: 1000,
|
|
23
|
+
maxRetryDelay: 30000
|
|
24
|
+
});
|
|
25
|
+
this.sessionId = null;
|
|
26
|
+
this.projectId = null;
|
|
27
|
+
this.pingInterval = 25000; // 25 секунд по умолчанию
|
|
28
|
+
this.pingTimer = null;
|
|
29
|
+
this.SDK_VERSION = '1.0.0';
|
|
30
|
+
// Устанавливаем обработчики
|
|
31
|
+
this.onReadFile = options.onReadFile || (() => Promise.reject('Чтение файлов не реализовано'));
|
|
32
|
+
this.onListFiles = options.onListFiles || (() => Promise.reject('Получение списка файлов не реализовано'));
|
|
33
|
+
this.onWatchStart = options.onWatchStart || (() => Promise.reject('Отслеживание файлов не реализовано'));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Подключение к серверу и инициализация сессии
|
|
37
|
+
* @param params Параметры подключения (может содержать projectId или другие параметры)
|
|
38
|
+
* @returns Promise<boolean> Успешность подключения
|
|
39
|
+
*/
|
|
40
|
+
async connect(params = {}) {
|
|
41
|
+
// Если передан projectId, сохраняем его
|
|
42
|
+
if (params.projectId) {
|
|
43
|
+
this.projectId = params.projectId;
|
|
44
|
+
}
|
|
45
|
+
// Проверяем, есть ли у нас projectId
|
|
46
|
+
if (!this.projectId) {
|
|
47
|
+
this.logger.error('Не указан projectId для подключения');
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
// Подключаемся с базовыми параметрами
|
|
51
|
+
const connected = await super.connect(params);
|
|
52
|
+
if (!connected) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
// Инициализируем сессию
|
|
57
|
+
const response = await this.emitWithAck(websocket_events_constants_1.WebSocketEvents.INIT, {
|
|
58
|
+
projectId: this.projectId,
|
|
59
|
+
clientVersion: this.SDK_VERSION,
|
|
60
|
+
capabilities: ['text', 'watch']
|
|
61
|
+
});
|
|
62
|
+
if (response && response.payload) {
|
|
63
|
+
this.sessionId = response.payload.sessionId;
|
|
64
|
+
this.pingInterval = response.payload.pingInterval || 25000;
|
|
65
|
+
// Настраиваем обработчики событий
|
|
66
|
+
this.setupHandlers();
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.logger.error('Ошибка инициализации сессии: Пустой ответ');
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
this.logger.error(`Ошибка инициализации сессии: ${error instanceof Error ? error.message : String(error)}`);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Подключение к проекту - удобный метод для использования в приложении
|
|
81
|
+
* @param projectId ID проекта
|
|
82
|
+
* @returns Promise<boolean> Успешность подключения
|
|
83
|
+
*/
|
|
84
|
+
async connectToProject(projectId) {
|
|
85
|
+
this.projectId = projectId;
|
|
86
|
+
return this.connect({ projectId });
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Настройка обработчиков событий
|
|
90
|
+
*/
|
|
91
|
+
setupHandlers() {
|
|
92
|
+
// Обработчик запроса на чтение файла
|
|
93
|
+
this.on(websocket_events_constants_1.WebSocketEvents.READ_FILE, async (request) => {
|
|
94
|
+
try {
|
|
95
|
+
const content = await this.onReadFile(request.payload.path);
|
|
96
|
+
this.send(websocket_events_constants_1.WebSocketEvents.READ_FILE_RESPONSE, {
|
|
97
|
+
requestId: request.requestId,
|
|
98
|
+
projectId: request.projectId,
|
|
99
|
+
payload: { content }
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
this.send(websocket_events_constants_1.WebSocketEvents.ERROR, {
|
|
104
|
+
requestId: request.requestId,
|
|
105
|
+
error: {
|
|
106
|
+
code: 'FILE_READ_ERROR',
|
|
107
|
+
message: error instanceof Error ? error.message : String(error)
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
// Обработчик запроса на получение списка файлов
|
|
113
|
+
this.on(websocket_events_constants_1.WebSocketEvents.LIST_FILES, async (request) => {
|
|
114
|
+
try {
|
|
115
|
+
const files = await this.onListFiles(request.payload.directory, request.payload.options);
|
|
116
|
+
this.send(websocket_events_constants_1.WebSocketEvents.LIST_FILES_RESPONSE, {
|
|
117
|
+
requestId: request.requestId,
|
|
118
|
+
projectId: request.projectId,
|
|
119
|
+
payload: {
|
|
120
|
+
files,
|
|
121
|
+
directory: request.payload.directory
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
this.send(websocket_events_constants_1.WebSocketEvents.ERROR, {
|
|
127
|
+
requestId: request.requestId,
|
|
128
|
+
error: {
|
|
129
|
+
code: 'LIST_FILES_ERROR',
|
|
130
|
+
message: error instanceof Error ? error.message : String(error)
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
// Обработчик запроса на отслеживание файлов
|
|
136
|
+
this.on(websocket_events_constants_1.WebSocketEvents.WATCH_START, async (request) => {
|
|
137
|
+
try {
|
|
138
|
+
const success = await this.onWatchStart(request.payload.patterns);
|
|
139
|
+
this.send(websocket_events_constants_1.WebSocketEvents.WATCH_CONFIRM, {
|
|
140
|
+
requestId: request.requestId,
|
|
141
|
+
projectId: request.projectId,
|
|
142
|
+
payload: {
|
|
143
|
+
success,
|
|
144
|
+
patterns: request.payload.patterns
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
this.send(websocket_events_constants_1.WebSocketEvents.ERROR, {
|
|
150
|
+
requestId: request.requestId,
|
|
151
|
+
error: {
|
|
152
|
+
code: 'WATCH_ERROR',
|
|
153
|
+
message: error instanceof Error ? error.message : String(error)
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
// Обработчик ping
|
|
159
|
+
this.on(websocket_events_constants_1.WebSocketEvents.PING, (data) => {
|
|
160
|
+
this.send(websocket_events_constants_1.WebSocketEvents.PONG, {
|
|
161
|
+
requestId: data.requestId || (0, uuid_1.v4)(),
|
|
162
|
+
timestamp: Date.now()
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Уведомляет сервер об изменении файла
|
|
168
|
+
* @param path Путь к файлу
|
|
169
|
+
* @param changeType Тип изменения
|
|
170
|
+
*/
|
|
171
|
+
notifyFileChanged(path, changeType = 'modified') {
|
|
172
|
+
if (!this.isConnected() || !this.projectId) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
return this.send(websocket_events_constants_1.WebSocketEvents.FILE_CHANGED, {
|
|
176
|
+
requestId: (0, uuid_1.v4)(),
|
|
177
|
+
projectId: this.projectId,
|
|
178
|
+
payload: {
|
|
179
|
+
path,
|
|
180
|
+
changeType,
|
|
181
|
+
timestamp: Date.now()
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.FileSystemWsClient = FileSystemWsClient;
|
|
187
|
+
/**
|
|
188
|
+
* Пример использования клиента файловой системы в VS Code расширении:
|
|
189
|
+
*
|
|
190
|
+
* ```typescript
|
|
191
|
+
* import * as vscode from 'vscode';
|
|
192
|
+
* import { FileSystemWsClient } from 'solver-sdk';
|
|
193
|
+
*
|
|
194
|
+
* export function activate(context: vscode.ExtensionContext) {
|
|
195
|
+
* // Создание клиента файловой системы
|
|
196
|
+
* const fsClient = new FileSystemWsClient('wss://your-backend-url.com', {
|
|
197
|
+
* // Обработчик чтения файла
|
|
198
|
+
* onReadFile: async (path) => {
|
|
199
|
+
* try {
|
|
200
|
+
* const uri = vscode.Uri.file(path);
|
|
201
|
+
* const content = await vscode.workspace.fs.readFile(uri);
|
|
202
|
+
* return new TextDecoder().decode(content);
|
|
203
|
+
* } catch (error) {
|
|
204
|
+
* throw new Error(`Ошибка чтения файла: ${error.message}`);
|
|
205
|
+
* }
|
|
206
|
+
* },
|
|
207
|
+
*
|
|
208
|
+
* // Обработчик получения списка файлов
|
|
209
|
+
* onListFiles: async (directory, options) => {
|
|
210
|
+
* try {
|
|
211
|
+
* // Получаем корневую директорию рабочего пространства
|
|
212
|
+
* const rootPath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
|
213
|
+
* if (!rootPath) throw new Error('Не найдено рабочее пространство');
|
|
214
|
+
*
|
|
215
|
+
* // Формируем паттерн для поиска файлов
|
|
216
|
+
* const pattern = new vscode.RelativePattern(
|
|
217
|
+
* rootPath,
|
|
218
|
+
* options?.includePatterns?.[0] || '**'
|
|
219
|
+
* );
|
|
220
|
+
*
|
|
221
|
+
* // Находим файлы по паттерну
|
|
222
|
+
* const files = await vscode.workspace.findFiles(pattern,
|
|
223
|
+
* options?.excludePatterns?.join('|')
|
|
224
|
+
* );
|
|
225
|
+
*
|
|
226
|
+
* // Преобразуем результаты в нужный формат
|
|
227
|
+
* return files.map(uri => {
|
|
228
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
229
|
+
* const stats = fs.statSync(uri.fsPath);
|
|
230
|
+
*
|
|
231
|
+
* return {
|
|
232
|
+
* path: uri.fsPath,
|
|
233
|
+
* relativePath,
|
|
234
|
+
* extension: uri.fsPath.split('.').pop() || '',
|
|
235
|
+
* size: stats.size,
|
|
236
|
+
* isDirectory: stats.isDirectory()
|
|
237
|
+
* };
|
|
238
|
+
* });
|
|
239
|
+
* } catch (error) {
|
|
240
|
+
* throw new Error(`Ошибка получения списка файлов: ${error.message}`);
|
|
241
|
+
* }
|
|
242
|
+
* },
|
|
243
|
+
*
|
|
244
|
+
* // Обработчик отслеживания файлов
|
|
245
|
+
* onWatchStart: async (patterns) => {
|
|
246
|
+
* try {
|
|
247
|
+
* // Создаем наблюдателей за файлами
|
|
248
|
+
* const watchers = patterns.map(pattern => {
|
|
249
|
+
* const watcher = vscode.workspace.createFileSystemWatcher(
|
|
250
|
+
* new vscode.RelativePattern(
|
|
251
|
+
* vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || '',
|
|
252
|
+
* pattern
|
|
253
|
+
* )
|
|
254
|
+
* );
|
|
255
|
+
*
|
|
256
|
+
* // Обработчик изменения файла
|
|
257
|
+
* watcher.onDidChange(uri => {
|
|
258
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
259
|
+
* fsClient.notifyFileChanged(relativePath, 'modified');
|
|
260
|
+
* });
|
|
261
|
+
*
|
|
262
|
+
* // Обработчик создания файла
|
|
263
|
+
* watcher.onDidCreate(uri => {
|
|
264
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
265
|
+
* fsClient.notifyFileChanged(relativePath, 'created');
|
|
266
|
+
* });
|
|
267
|
+
*
|
|
268
|
+
* // Обработчик удаления файла
|
|
269
|
+
* watcher.onDidDelete(uri => {
|
|
270
|
+
* const relativePath = vscode.workspace.asRelativePath(uri);
|
|
271
|
+
* fsClient.notifyFileChanged(relativePath, 'deleted');
|
|
272
|
+
* });
|
|
273
|
+
*
|
|
274
|
+
* return watcher;
|
|
275
|
+
* });
|
|
276
|
+
*
|
|
277
|
+
* // Добавляем наблюдателей в контекст расширения для правильной очистки
|
|
278
|
+
* watchers.forEach(watcher => {
|
|
279
|
+
* context.subscriptions.push(watcher);
|
|
280
|
+
* });
|
|
281
|
+
*
|
|
282
|
+
* return true;
|
|
283
|
+
* } catch (error) {
|
|
284
|
+
* console.error('Ошибка при настройке отслеживания файлов:', error);
|
|
285
|
+
* return false;
|
|
286
|
+
* }
|
|
287
|
+
* }
|
|
288
|
+
* });
|
|
289
|
+
*
|
|
290
|
+
* // Подключаемся к проекту
|
|
291
|
+
* vscode.commands.registerCommand('extension.connectToProject', async () => {
|
|
292
|
+
* // Запрашиваем ID проекта у пользователя
|
|
293
|
+
* const projectId = await vscode.window.showInputBox({
|
|
294
|
+
* prompt: 'Введите ID проекта для подключения'
|
|
295
|
+
* });
|
|
296
|
+
*
|
|
297
|
+
* if (!projectId) return;
|
|
298
|
+
*
|
|
299
|
+
* try {
|
|
300
|
+
* // Устанавливаем соединение
|
|
301
|
+
* const connected = await fsClient.connectToProject(projectId);
|
|
302
|
+
*
|
|
303
|
+
* if (connected) {
|
|
304
|
+
* vscode.window.showInformationMessage(`Успешное подключение к проекту ${projectId}`);
|
|
305
|
+
* } else {
|
|
306
|
+
* vscode.window.showErrorMessage('Ошибка подключения к проекту');
|
|
307
|
+
* }
|
|
308
|
+
* } catch (error) {
|
|
309
|
+
* vscode.window.showErrorMessage(`Ошибка: ${error.message}`);
|
|
310
|
+
* }
|
|
311
|
+
* });
|
|
312
|
+
* }
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
//# 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":";;;AAAA,qDAAuD;AACvD,gGAAiF;AACjF,wFAA0E;AAC1E,+BAAoC;AAuCpC;;GAEG;AACH,MAAa,kBAAmB,SAAQ,oCAAmB;IAezD;;;;OAIG;IACH,YACE,OAAe,EACf,UAAqC,EAAE;QAEvC,KAAK,CAAC,mDAAkB,CAAC,UAAU,EAAE,OAAO,EAAE;YAC5C,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,KAAK;YACnB,iBAAiB,EAAE,aAAa;YAChC,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QA7BG,cAAS,GAAkB,IAAI,CAAC;QAChC,cAAS,GAAkB,IAAI,CAAC;QAChC,iBAAY,GAAW,KAAK,CAAC,CAAC,yBAAyB;QACvD,cAAS,GAA0B,IAAI,CAAC;QAC/B,gBAAW,GAAG,OAAO,CAAC;QA2BrC,4BAA4B;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED;;;;OAIG;IACa,KAAK,CAAC,OAAO,CAAC,SAA8B,EAAE;QAC5D,wCAAwC;QACxC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sCAAsC;QACtC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,4CAAe,CAAC,IAAI,EAAE;gBAC5D,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,WAAW;gBAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aAChC,CAAC,CAAC;YAEH,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC5C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;gBAE3D,kCAAkC;gBAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErB,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5G,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC7C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,qCAAqC;QACrC,IAAI,CAAC,EAAE,CAAC,4CAAe,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5D,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,kBAAkB,EAAE;oBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE,EAAE,OAAO,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,KAAK,EAAE;oBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,KAAK,EAAE;wBACL,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC,EAAE,CAAC,4CAAe,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACpD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAClC,OAAO,CAAC,OAAO,CAAC,SAAS,EACzB,OAAO,CAAC,OAAO,CAAC,OAAO,CACxB,CAAC;gBAEF,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,mBAAmB,EAAE;oBAC7C,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE;wBACP,KAAK;wBACL,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;qBACrC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,KAAK,EAAE;oBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,KAAK,EAAE;wBACL,IAAI,EAAE,kBAAkB;wBACxB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC,EAAE,CAAC,4CAAe,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAElE,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,aAAa,EAAE;oBACvC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE;wBACP,OAAO;wBACP,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;qBACnC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,KAAK,EAAE;oBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,CAAC,EAAE,CAAC,4CAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,IAAI,EAAE;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAA,SAAM,GAAE;gBACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,IAAY,EAAE,aAAiD,UAAU;QACzF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,4CAAe,CAAC,YAAY,EAAE;YAC7C,SAAS,EAAE,IAAA,SAAM,GAAE;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE;gBACP,IAAI;gBACJ,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF;AA3MD,gDA2MC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+HG"}
|