solver-sdk 5.0.0 → 5.1.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.
Files changed (64) hide show
  1. package/README.md +264 -4
  2. package/dist/cjs/api/delta-chunking-api.js +142 -0
  3. package/dist/cjs/api/delta-chunking-api.js.map +1 -0
  4. package/dist/cjs/api/projects-api.js +80 -0
  5. package/dist/cjs/api/projects-api.js.map +1 -1
  6. package/dist/cjs/api/updates-api.js +242 -0
  7. package/dist/cjs/api/updates-api.js.map +1 -0
  8. package/dist/cjs/code-solver-sdk.js +103 -4
  9. package/dist/cjs/code-solver-sdk.js.map +1 -1
  10. package/dist/cjs/delta-chunking/delta-chunking-manager.js +202 -0
  11. package/dist/cjs/delta-chunking/delta-chunking-manager.js.map +1 -0
  12. package/dist/cjs/delta-chunking/delta-chunking-utils.js +315 -0
  13. package/dist/cjs/delta-chunking/delta-chunking-utils.js.map +1 -0
  14. package/dist/cjs/index.js +11 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/types/delta-chunking.js +7 -0
  17. package/dist/cjs/types/delta-chunking.js.map +1 -0
  18. package/dist/cjs/types/index.js +16 -0
  19. package/dist/cjs/types/index.js.map +1 -1
  20. package/dist/cjs/types/updates.js +6 -0
  21. package/dist/cjs/types/updates.js.map +1 -0
  22. package/dist/esm/api/delta-chunking-api.js +138 -0
  23. package/dist/esm/api/delta-chunking-api.js.map +1 -0
  24. package/dist/esm/api/projects-api.js +80 -0
  25. package/dist/esm/api/projects-api.js.map +1 -1
  26. package/dist/esm/api/updates-api.js +238 -0
  27. package/dist/esm/api/updates-api.js.map +1 -0
  28. package/dist/esm/code-solver-sdk.js +103 -4
  29. package/dist/esm/code-solver-sdk.js.map +1 -1
  30. package/dist/esm/delta-chunking/delta-chunking-manager.js +198 -0
  31. package/dist/esm/delta-chunking/delta-chunking-manager.js.map +1 -0
  32. package/dist/esm/delta-chunking/delta-chunking-utils.js +278 -0
  33. package/dist/esm/delta-chunking/delta-chunking-utils.js.map +1 -0
  34. package/dist/esm/index.js +7 -0
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/types/delta-chunking.js +6 -0
  37. package/dist/esm/types/delta-chunking.js.map +1 -0
  38. package/dist/esm/types/index.js +2 -1
  39. package/dist/esm/types/index.js.map +1 -1
  40. package/dist/esm/types/updates.js +5 -0
  41. package/dist/esm/types/updates.js.map +1 -0
  42. package/dist/types/api/delta-chunking-api.d.ts +51 -0
  43. package/dist/types/api/delta-chunking-api.d.ts.map +1 -0
  44. package/dist/types/api/projects-api.d.ts +42 -0
  45. package/dist/types/api/projects-api.d.ts.map +1 -1
  46. package/dist/types/api/updates-api.d.ts +145 -0
  47. package/dist/types/api/updates-api.d.ts.map +1 -0
  48. package/dist/types/code-solver-sdk.d.ts +58 -1
  49. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  50. package/dist/types/delta-chunking/delta-chunking-manager.d.ts +60 -0
  51. package/dist/types/delta-chunking/delta-chunking-manager.d.ts.map +1 -0
  52. package/dist/types/delta-chunking/delta-chunking-utils.d.ts +62 -0
  53. package/dist/types/delta-chunking/delta-chunking-utils.d.ts.map +1 -0
  54. package/dist/types/index.d.ts +5 -0
  55. package/dist/types/index.d.ts.map +1 -1
  56. package/dist/types/interfaces/sdk-options.d.ts +35 -0
  57. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  58. package/dist/types/types/delta-chunking.d.ts +210 -0
  59. package/dist/types/types/delta-chunking.d.ts.map +1 -0
  60. package/dist/types/types/index.d.ts +1 -0
  61. package/dist/types/types/index.d.ts.map +1 -1
  62. package/dist/types/types/updates.d.ts +86 -0
  63. package/dist/types/types/updates.d.ts.map +1 -0
  64. package/package.json +1 -1
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ /**
3
+ * 🔧 Delta-Chunking Utilities
4
+ * Утилиты для обработки файлов, чанков и шифрования
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.DeltaChunkingUtils = void 0;
41
+ /**
42
+ * Утилиты для Delta-Chunking операций
43
+ */
44
+ class DeltaChunkingUtils {
45
+ constructor(projects, options, environment, logger) {
46
+ this.projects = projects;
47
+ this.options = options;
48
+ this.environment = environment;
49
+ this.logger = logger;
50
+ }
51
+ /**
52
+ * Валидация проекта через Projects API
53
+ */
54
+ async validateProject(projectId) {
55
+ try {
56
+ // Используем существующий projects API для проверки
57
+ await this.projects.getProject(projectId);
58
+ }
59
+ catch (error) {
60
+ const errorMessage = error instanceof Error ? error.message : String(error);
61
+ throw new Error(`Проект ${projectId} не найден или недоступен: ${errorMessage}`);
62
+ }
63
+ }
64
+ /**
65
+ * Сканирование файлов проекта (Node.js only)
66
+ */
67
+ async scanProjectFiles(projectPath, options) {
68
+ // Проверяем среду выполнения
69
+ if (this.environment === 'browser') {
70
+ throw new Error('scanProjectFiles недоступен в браузере. Используйте syncFiles() с подготовленными файлами.');
71
+ }
72
+ const files = [];
73
+ // Динамический импорт fs для Node.js
74
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
75
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
76
+ const scanDir = async (dirPath) => {
77
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
78
+ for (const entry of entries) {
79
+ const fullPath = path.join(dirPath, entry.name);
80
+ const relativePath = path.relative(projectPath, fullPath);
81
+ // Проверяем игнорируемые паттерны
82
+ const shouldIgnore = options.ignorePatterns?.some(pattern => relativePath.includes(pattern.replace('/**', '')) ||
83
+ entry.name.match(new RegExp(pattern.replace('*', '.*'))));
84
+ if (shouldIgnore)
85
+ continue;
86
+ if (entry.isDirectory()) {
87
+ await scanDir(fullPath);
88
+ }
89
+ else if (entry.isFile()) {
90
+ // Проверяем расширения файлов
91
+ const ext = path.extname(entry.name);
92
+ if (options.includeExtensions && !options.includeExtensions.includes(ext)) {
93
+ continue;
94
+ }
95
+ // Проверяем размер файла
96
+ const stats = await fs.stat(fullPath);
97
+ const fileSizeKB = stats.size / 1024;
98
+ if (options.maxFileSizeKB && fileSizeKB > options.maxFileSizeKB) {
99
+ this.logger.warn(`⚠️ Пропускаю большой файл: ${relativePath} (${fileSizeKB.toFixed(1)}KB)`);
100
+ continue;
101
+ }
102
+ try {
103
+ const content = await fs.readFile(fullPath, 'utf-8');
104
+ files.push({
105
+ path: relativePath,
106
+ content,
107
+ size: stats.size,
108
+ lastModified: stats.mtime.getTime()
109
+ });
110
+ }
111
+ catch (error) {
112
+ const errorMessage = error instanceof Error ? error.message : String(error);
113
+ this.logger.warn(`⚠️ Не удалось прочитать файл ${relativePath}: ${errorMessage}`);
114
+ }
115
+ }
116
+ }
117
+ };
118
+ try {
119
+ await scanDir(projectPath);
120
+ }
121
+ catch (error) {
122
+ const errorMessage = error instanceof Error ? error.message : String(error);
123
+ throw new Error(`Ошибка сканирования директории ${projectPath}: ${errorMessage}`);
124
+ }
125
+ return files;
126
+ }
127
+ /**
128
+ * Создание чанков из файлов
129
+ */
130
+ async createChunksFromFiles(files) {
131
+ const chunks = [];
132
+ for (const file of files) {
133
+ const fileChunks = await this.chunkFile(file);
134
+ chunks.push(...fileChunks);
135
+ }
136
+ return chunks;
137
+ }
138
+ /**
139
+ * Разбиение файла на чанки
140
+ */
141
+ async chunkFile(file) {
142
+ // Простое разбиение на чанки по строкам (без tree-sitter пока)
143
+ const lines = file.content.split('\n');
144
+ const chunks = [];
145
+ const config = this.options.deltaChunking?.chunking || {};
146
+ const maxTokens = config.maxTokens || 400;
147
+ const minTokens = config.minTokens || 100;
148
+ let currentChunk = '';
149
+ let startLine = 1;
150
+ for (let i = 0; i < lines.length; i++) {
151
+ const line = lines[i];
152
+ const newChunkContent = currentChunk + (currentChunk ? '\n' : '') + line;
153
+ // Простая оценка токенов (примерно 4 символа = 1 токен)
154
+ const estimatedTokens = newChunkContent.length / 4;
155
+ if (estimatedTokens >= maxTokens && currentChunk.length > 0) {
156
+ // Создаем чанк если достигли лимита
157
+ if (currentChunk.trim()) {
158
+ chunks.push({
159
+ id: `${file.path}-${chunks.length}`,
160
+ obfuscatedPath: this.obfuscatePath(file.path),
161
+ content: currentChunk,
162
+ metadata: {
163
+ chunkType: this.detectChunkType(currentChunk),
164
+ startLine,
165
+ endLine: i,
166
+ language: this.detectLanguage(file.path),
167
+ originalSize: currentChunk.length,
168
+ }
169
+ });
170
+ }
171
+ currentChunk = line;
172
+ startLine = i + 1;
173
+ }
174
+ else {
175
+ currentChunk = newChunkContent;
176
+ }
177
+ }
178
+ // Добавляем последний чанк
179
+ if (currentChunk.trim()) {
180
+ chunks.push({
181
+ id: `${file.path}-${chunks.length}`,
182
+ obfuscatedPath: this.obfuscatePath(file.path),
183
+ content: currentChunk,
184
+ metadata: {
185
+ chunkType: this.detectChunkType(currentChunk),
186
+ startLine,
187
+ endLine: lines.length,
188
+ language: this.detectLanguage(file.path),
189
+ originalSize: currentChunk.length,
190
+ }
191
+ });
192
+ }
193
+ return chunks;
194
+ }
195
+ /**
196
+ * Шифрование чанков
197
+ */
198
+ async encryptChunks(chunks) {
199
+ if (!this.options.deltaChunking?.encryption?.enabled) {
200
+ // Если шифрование отключено, просто конвертируем
201
+ return chunks.map(chunk => ({
202
+ ...chunk,
203
+ encryptedContent: Buffer.from(chunk.content, 'utf-8'),
204
+ iv: Buffer.alloc(12, 0), // Пустой IV
205
+ authTag: Buffer.alloc(16, 0), // Пустой authTag
206
+ hash: this.calculateHash(chunk.content),
207
+ }));
208
+ }
209
+ const encryptionKey = this.options.deltaChunking?.encryption?.key;
210
+ if (!encryptionKey || encryptionKey.length !== 32) {
211
+ throw new Error('Ключ шифрования должен содержать ровно 32 символа для AES-256');
212
+ }
213
+ // Динамический импорт crypto для Node.js/браузера
214
+ const crypto = this.environment === 'node'
215
+ ? await Promise.resolve().then(() => __importStar(require('crypto')))
216
+ : null; // В браузере нужна другая реализация
217
+ if (!crypto && this.environment === 'node') {
218
+ throw new Error('Модуль crypto недоступен');
219
+ }
220
+ return chunks.map(chunk => {
221
+ if (this.environment === 'browser') {
222
+ // TODO: Реализовать Web Crypto API для браузера
223
+ this.logger.warn('⚠️ Шифрование в браузере пока не реализовано');
224
+ return {
225
+ ...chunk,
226
+ encryptedContent: Buffer.from(chunk.content, 'utf-8'),
227
+ iv: Buffer.alloc(12, 0),
228
+ authTag: Buffer.alloc(16, 0),
229
+ hash: this.calculateHash(chunk.content),
230
+ };
231
+ }
232
+ // AES-256-GCM шифрование для Node.js
233
+ const iv = crypto.randomBytes(12);
234
+ const cipher = crypto.createCipheriv('aes-256-gcm', Buffer.from(encryptionKey), iv);
235
+ cipher.setAAD(Buffer.from(chunk.id, 'utf-8'));
236
+ let encrypted = cipher.update(chunk.content, 'utf-8');
237
+ encrypted = Buffer.concat([encrypted, cipher.final()]);
238
+ const authTag = cipher.getAuthTag();
239
+ return {
240
+ ...chunk,
241
+ encryptedContent: encrypted,
242
+ iv,
243
+ authTag,
244
+ hash: this.calculateHash(chunk.content),
245
+ };
246
+ });
247
+ }
248
+ /**
249
+ * Расчет root hash для Merkle tree
250
+ */
251
+ calculateRootHash(files) {
252
+ // Простой хеш от всех путей файлов и их размеров
253
+ const hashInput = files
254
+ .map(f => `${f.path}:${f.size}`)
255
+ .sort()
256
+ .join('|');
257
+ return this.calculateHash(hashInput);
258
+ }
259
+ /**
260
+ * Простая хеш-функция
261
+ */
262
+ calculateHash(content) {
263
+ // Простой хеш-функция (в продакшене лучше использовать crypto)
264
+ let hash = 0;
265
+ for (let i = 0; i < content.length; i++) {
266
+ const char = content.charCodeAt(i);
267
+ hash = ((hash << 5) - hash) + char;
268
+ hash = hash & hash; // 32bit integer
269
+ }
270
+ return Math.abs(hash).toString(16).padStart(16, '0');
271
+ }
272
+ /**
273
+ * Обфускация пути файла
274
+ */
275
+ obfuscatePath(filePath) {
276
+ // Простая обфускация пути (в продакшене - более сложная)
277
+ return Buffer.from(filePath).toString('base64').slice(0, 12);
278
+ }
279
+ /**
280
+ * Определение типа чанка по содержимому
281
+ */
282
+ detectChunkType(content) {
283
+ if (content.includes('function ') || content.includes('async ') || content.includes('=>')) {
284
+ return 'function';
285
+ }
286
+ if (content.includes('class ') || content.includes('interface ') || content.includes('type ')) {
287
+ return 'class';
288
+ }
289
+ if (content.trim().startsWith('/*') || content.trim().startsWith('//')) {
290
+ return 'comment';
291
+ }
292
+ return 'block';
293
+ }
294
+ /**
295
+ * Определение языка программирования по расширению файла
296
+ */
297
+ detectLanguage(filePath) {
298
+ const ext = filePath.split('.').pop()?.toLowerCase();
299
+ const langMap = {
300
+ 'ts': 'typescript',
301
+ 'js': 'javascript',
302
+ 'py': 'python',
303
+ 'java': 'java',
304
+ 'cpp': 'cpp',
305
+ 'c': 'c',
306
+ 'go': 'go',
307
+ 'rs': 'rust',
308
+ 'php': 'php',
309
+ 'rb': 'ruby',
310
+ };
311
+ return langMap[ext || ''] || 'plaintext';
312
+ }
313
+ }
314
+ exports.DeltaChunkingUtils = DeltaChunkingUtils;
315
+ //# sourceMappingURL=delta-chunking-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-chunking-utils.js","sourceRoot":"","sources":["../../../src/delta-chunking/delta-chunking-utils.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -14,7 +14,7 @@ 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.createSystemMessage = exports.createUserMessage = exports.createTextBlock = exports.createComplexAssistantMessage = exports.createStandardDevelopmentTools = exports.extractToolResultBlocks = exports.extractToolUseBlocks = exports.extractThinkingBlocks = exports.createToolUseBlock = exports.createToolResultMessage = exports.createThinkingBlock = exports.HttpClient = exports.CodeSolverSDK = exports.VERSION = void 0;
17
+ exports.DeltaChunkingUtils = exports.DeltaChunkingManager = exports.DeltaChunkingApi = exports.createSystemMessage = exports.createUserMessage = exports.createTextBlock = exports.createComplexAssistantMessage = exports.createStandardDevelopmentTools = exports.extractToolResultBlocks = exports.extractToolUseBlocks = exports.extractThinkingBlocks = exports.createToolUseBlock = exports.createToolResultMessage = exports.createThinkingBlock = exports.HttpClient = exports.CodeSolverSDK = exports.VERSION = void 0;
18
18
  const code_solver_sdk_js_1 = require("./code-solver-sdk.js");
19
19
  Object.defineProperty(exports, "CodeSolverSDK", { enumerable: true, get: function () { return code_solver_sdk_js_1.CodeSolverSDK; } });
20
20
  const http_client_js_1 = require("./utils/http-client.js");
@@ -30,6 +30,7 @@ __exportStar(require("./api/search-api.js"), exports);
30
30
  __exportStar(require("./api/chat-api/index.js"), exports);
31
31
  __exportStar(require("./api/tools-api.js"), exports);
32
32
  __exportStar(require("./api/models-api.js"), exports);
33
+ __exportStar(require("./api/updates-api.js"), exports);
33
34
  // Экспортируем помощники для работы с сообщениями
34
35
  __exportStar(require("./utils/message-helpers.js"), exports);
35
36
  // Экспортируем helper функции для complex content и tool calling
@@ -45,6 +46,15 @@ Object.defineProperty(exports, "createComplexAssistantMessage", { enumerable: tr
45
46
  Object.defineProperty(exports, "createTextBlock", { enumerable: true, get: function () { return message_helpers_js_1.createTextBlock; } });
46
47
  Object.defineProperty(exports, "createUserMessage", { enumerable: true, get: function () { return message_helpers_js_1.createUserMessage; } });
47
48
  Object.defineProperty(exports, "createSystemMessage", { enumerable: true, get: function () { return message_helpers_js_1.createSystemMessage; } });
49
+ // 🔄 Delta-Chunking API и компоненты (интегрированы в основной SDK)
50
+ var delta_chunking_api_js_1 = require("./api/delta-chunking-api.js");
51
+ Object.defineProperty(exports, "DeltaChunkingApi", { enumerable: true, get: function () { return delta_chunking_api_js_1.DeltaChunkingApi; } });
52
+ var delta_chunking_manager_js_1 = require("./delta-chunking/delta-chunking-manager.js");
53
+ Object.defineProperty(exports, "DeltaChunkingManager", { enumerable: true, get: function () { return delta_chunking_manager_js_1.DeltaChunkingManager; } });
54
+ var delta_chunking_utils_js_1 = require("./delta-chunking/delta-chunking-utils.js");
55
+ Object.defineProperty(exports, "DeltaChunkingUtils", { enumerable: true, get: function () { return delta_chunking_utils_js_1.DeltaChunkingUtils; } });
56
+ // Экспорт типов Delta-Chunking
57
+ __exportStar(require("./types/delta-chunking.js"), exports);
48
58
  // Экспорт по умолчанию
49
59
  exports.default = code_solver_sdk_js_1.CodeSolverSDK;
50
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAAqD;AAQ5C,8FARA,kCAAa,OAQA;AANtB,2DAAoD;AAQ3C,2FARA,2BAAU,OAQA;AANnB,2DAA2D;AAC3D,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAOhB,0CAA0C;AAC1C,8DAA4C;AAE5C,gCAAgC;AAChC,wDAAsC;AACtC,sDAAoC;AAEpC,0DAAwC;AACxC,qDAAmC;AACnC,sDAAoC;AAEpC,kDAAkD;AAClD,6DAA2C;AAE3C,iEAAiE;AACjE,iEAYoC;AAXlC,yHAAA,mBAAmB,OAAA;AACnB,6HAAA,uBAAuB,OAAA;AACvB,wHAAA,kBAAkB,OAAA;AAClB,2HAAA,qBAAqB,OAAA;AACrB,0HAAA,oBAAoB,OAAA;AACpB,6HAAA,uBAAuB,OAAA;AACvB,oIAAA,8BAA8B,OAAA;AAC9B,mIAAA,6BAA6B,OAAA;AAC7B,qHAAA,eAAe,OAAA;AACf,uHAAA,iBAAiB,OAAA;AACjB,yHAAA,mBAAmB,OAAA;AAGrB,uBAAuB;AACvB,kBAAe,kCAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAAqD;AAQ5C,8FARA,kCAAa,OAQA;AANtB,2DAAoD;AAQ3C,2FARA,2BAAU,OAQA;AANnB,2DAA2D;AAC3D,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAOhB,0CAA0C;AAC1C,8DAA4C;AAE5C,gCAAgC;AAChC,wDAAsC;AACtC,sDAAoC;AAEpC,0DAAwC;AACxC,qDAAmC;AACnC,sDAAoC;AACpC,uDAAqC;AAErC,kDAAkD;AAClD,6DAA2C;AAE3C,iEAAiE;AACjE,iEAYoC;AAXlC,yHAAA,mBAAmB,OAAA;AACnB,6HAAA,uBAAuB,OAAA;AACvB,wHAAA,kBAAkB,OAAA;AAClB,2HAAA,qBAAqB,OAAA;AACrB,0HAAA,oBAAoB,OAAA;AACpB,6HAAA,uBAAuB,OAAA;AACvB,oIAAA,8BAA8B,OAAA;AAC9B,mIAAA,6BAA6B,OAAA;AAC7B,qHAAA,eAAe,OAAA;AACf,uHAAA,iBAAiB,OAAA;AACjB,yHAAA,mBAAmB,OAAA;AAGrB,oEAAoE;AACpE,qEAA+D;AAAtD,yHAAA,gBAAgB,OAAA;AACzB,wFAAkF;AAAzE,iIAAA,oBAAoB,OAAA;AAC7B,oFAA8E;AAArE,6HAAA,kBAAkB,OAAA;AAE3B,+BAA+B;AAC/B,4DAA0C;AAE1C,uBAAuB;AACvB,kBAAe,kCAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * 🚀 Delta-Chunking Types для SDK
4
+ * Синхронизировано с backend API и документацией
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=delta-chunking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-chunking.js","sourceRoot":"","sources":["../../../src/types/delta-chunking.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -3,5 +3,21 @@
3
3
  * 🚀 Обновленные типы данных для API проектов
4
4
  * Синхронизировано с backend OpenAPI спецификацией
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
6
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
+ // Экспорт типов для Updates API
22
+ __exportStar(require("./updates.js"), exports);
7
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAwbH,gCAAgC;AAChC,+CAA6B"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Типы для API обновлений WorkAI
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../src/types/updates.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * 🚀 Delta-Chunking API клиент
3
+ * Интеграция с backend endpoints
4
+ */
5
+ /**
6
+ * API клиент для delta-chunking операций
7
+ */
8
+ export class DeltaChunkingApi {
9
+ constructor(httpClient) {
10
+ this.httpClient = httpClient;
11
+ }
12
+ /**
13
+ * Инициализация синхронизации проекта
14
+ */
15
+ async initSync(projectId, request) {
16
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-init`, request);
17
+ if (!response.sessionId) {
18
+ throw new Error('Server did not return sessionId');
19
+ }
20
+ return response;
21
+ }
22
+ /**
23
+ * Отправка батча зашифрованных чанков
24
+ */
25
+ async uploadChunkBatch(projectId, batchRequest) {
26
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/delta-chunks`, batchRequest);
27
+ return response;
28
+ }
29
+ /**
30
+ * Получение статуса синхронизации
31
+ */
32
+ async getSyncStatus(projectId) {
33
+ const response = await this.httpClient.get(`/api/v1/projects/${projectId}/sync-status`);
34
+ return {
35
+ projectId,
36
+ sessionId: response.sessionId,
37
+ status: response.status || 'idle',
38
+ progress: response.progress || 0,
39
+ chunksReceived: response.chunksReceived || 0,
40
+ chunksProcessed: response.chunksProcessed || 0,
41
+ errorCount: response.errorCount || 0,
42
+ startedAt: response.startedAt ? new Date(response.startedAt) : undefined,
43
+ completedAt: response.completedAt ? new Date(response.completedAt) : undefined,
44
+ lastActivity: response.lastActivity ? new Date(response.lastActivity) : undefined,
45
+ error: response.error
46
+ };
47
+ }
48
+ /**
49
+ * Завершение синхронизации
50
+ */
51
+ async finalizeSync(projectId) {
52
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-finalize`, {});
53
+ return {
54
+ success: response.success || false,
55
+ projectId,
56
+ sessionId: response.sessionId,
57
+ processedChunks: response.processedChunks || 0,
58
+ totalChunks: response.totalChunks || 0,
59
+ duration: response.duration || 0,
60
+ error: response.error,
61
+ details: response.details
62
+ };
63
+ }
64
+ /**
65
+ * Отмена синхронизации
66
+ */
67
+ async cancelSync(projectId) {
68
+ const response = await this.httpClient.delete(`/api/v1/projects/${projectId}/sync-cancel`);
69
+ return {
70
+ success: response.success || false,
71
+ message: response.message
72
+ };
73
+ }
74
+ /**
75
+ * Batch upload с retry логикой
76
+ */
77
+ async uploadChunksWithRetry(projectId, chunks, options = {}) {
78
+ const { batchSize = 50, maxRetries = 3, onProgress } = options;
79
+ const totalChunks = chunks.length;
80
+ const totalBatches = Math.ceil(totalChunks / batchSize);
81
+ let processedChunks = 0;
82
+ let failedChunks = 0;
83
+ const errors = [];
84
+ for (let batchIndex = 0; batchIndex < totalBatches; batchIndex++) {
85
+ const startIdx = batchIndex * batchSize;
86
+ const endIdx = Math.min(startIdx + batchSize, totalChunks);
87
+ const batchChunks = chunks.slice(startIdx, endIdx);
88
+ const batchRequest = {
89
+ batchIndex,
90
+ totalBatches,
91
+ chunks: batchChunks
92
+ };
93
+ let success = false;
94
+ let retryCount = 0;
95
+ while (!success && retryCount < maxRetries) {
96
+ try {
97
+ const result = await this.uploadChunkBatch(projectId, batchRequest);
98
+ processedChunks += result.processed;
99
+ failedChunks += result.failed;
100
+ if (result.errors) {
101
+ errors.push(...result.errors);
102
+ }
103
+ success = true;
104
+ // Уведомляем о прогрессе
105
+ if (onProgress) {
106
+ onProgress(processedChunks, totalChunks);
107
+ }
108
+ }
109
+ catch (error) {
110
+ retryCount++;
111
+ if (retryCount >= maxRetries) {
112
+ const errorMessage = error instanceof Error ? error.message : String(error);
113
+ errors.push(`Batch ${batchIndex} failed after ${maxRetries} retries: ${errorMessage}`);
114
+ failedChunks += batchChunks.length;
115
+ }
116
+ else {
117
+ // Экспоненциальная задержка перед повтором
118
+ await new Promise(resolve => setTimeout(resolve, Math.pow(2, retryCount) * 1000));
119
+ }
120
+ }
121
+ }
122
+ }
123
+ return {
124
+ success: failedChunks === 0,
125
+ projectId,
126
+ processedChunks,
127
+ totalChunks,
128
+ duration: 0, // Будет заполнено на уровне SDK
129
+ error: errors.length > 0 ? errors.join('; ') : undefined,
130
+ details: {
131
+ newFiles: 0, // Будет заполнено на уровне SDK
132
+ changedFiles: 0,
133
+ deletedFiles: 0
134
+ }
135
+ };
136
+ }
137
+ }
138
+ //# sourceMappingURL=delta-chunking-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-chunking-api.js","sourceRoot":"","sources":["../../../src/api/delta-chunking-api.ts"],"names":[],"mappings":"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"}
@@ -502,5 +502,85 @@ export class ProjectsApi {
502
502
  throw new Error(`Не удалось получить или создать проект: ${error.message}`);
503
503
  }
504
504
  }
505
+ // ===== DELTA CHUNKING МЕТОДЫ =====
506
+ /**
507
+ * Инициализация синхронизации проекта для Delta Chunking
508
+ * @param projectId ID проекта
509
+ * @param request Данные для инициализации синхронизации
510
+ * @returns Результат инициализации с sessionId
511
+ */
512
+ async sendInitialSync(projectId, request) {
513
+ this.validateProjectId(projectId);
514
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-init`, request);
515
+ if (!response.sessionId) {
516
+ throw new Error('Server did not return sessionId');
517
+ }
518
+ return response;
519
+ }
520
+ /**
521
+ * Отправка батча зашифрованных чанков для Delta Chunking
522
+ * @param projectId ID проекта
523
+ * @param batchRequest Батч зашифрованных чанков
524
+ * @returns Результат обработки батча
525
+ */
526
+ async sendDeltaSync(projectId, batchRequest) {
527
+ this.validateProjectId(projectId);
528
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/delta-chunks`, batchRequest);
529
+ return response;
530
+ }
531
+ /**
532
+ * Получение статуса синхронизации Delta Chunking
533
+ * @param projectId ID проекта
534
+ * @returns Текущий статус синхронизации
535
+ */
536
+ async getDeltaSyncStatus(projectId) {
537
+ this.validateProjectId(projectId);
538
+ const response = await this.httpClient.get(`/api/v1/projects/${projectId}/sync-status`);
539
+ return {
540
+ projectId,
541
+ sessionId: response.sessionId,
542
+ status: response.status || 'idle',
543
+ progress: response.progress || 0,
544
+ chunksReceived: response.chunksReceived || 0,
545
+ chunksProcessed: response.chunksProcessed || 0,
546
+ errorCount: response.errorCount || 0,
547
+ startedAt: response.startedAt ? new Date(response.startedAt) : undefined,
548
+ completedAt: response.completedAt ? new Date(response.completedAt) : undefined,
549
+ lastActivity: response.lastActivity ? new Date(response.lastActivity) : undefined,
550
+ error: response.error
551
+ };
552
+ }
553
+ /**
554
+ * Завершение синхронизации Delta Chunking
555
+ * @param projectId ID проекта
556
+ * @returns Результат завершения синхронизации
557
+ */
558
+ async finalizeDeltaSync(projectId) {
559
+ this.validateProjectId(projectId);
560
+ const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-finalize`, {});
561
+ return {
562
+ success: response.success || false,
563
+ projectId,
564
+ sessionId: response.sessionId,
565
+ processedChunks: response.processedChunks || 0,
566
+ totalChunks: response.totalChunks || 0,
567
+ duration: response.duration || 0,
568
+ error: response.error,
569
+ details: response.details
570
+ };
571
+ }
572
+ /**
573
+ * Отмена синхронизации Delta Chunking
574
+ * @param projectId ID проекта
575
+ * @returns Результат отмены
576
+ */
577
+ async cancelDeltaSync(projectId) {
578
+ this.validateProjectId(projectId);
579
+ const response = await this.httpClient.delete(`/api/v1/projects/${projectId}/sync-cancel`);
580
+ return {
581
+ success: response.success || false,
582
+ message: response.message
583
+ };
584
+ }
505
585
  }
506
586
  //# sourceMappingURL=projects-api.js.map