@172ai/containers-mcp-server 1.12.3 → 1.12.4
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/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +642 -0
- package/dist/server.js.map +1 -1
- package/dist/services/exportService.d.ts +108 -0
- package/dist/services/exportService.d.ts.map +1 -0
- package/dist/services/exportService.js +659 -0
- package/dist/services/exportService.js.map +1 -0
- package/dist/services/importService.d.ts +90 -0
- package/dist/services/importService.d.ts.map +1 -0
- package/dist/services/importService.js +570 -0
- package/dist/services/importService.js.map +1 -0
- package/dist/services/userNotificationManager.d.ts +18 -0
- package/dist/services/userNotificationManager.d.ts.map +1 -1
- package/dist/services/userNotificationManager.js +44 -0
- package/dist/services/userNotificationManager.js.map +1 -1
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
import { authManager } from '../auth.js';
|
|
2
|
+
import { ErrorHandler, ApiError } from '../utils/errorHandler.js';
|
|
3
|
+
import { EnhancedMCPErrorHandler, MCP_ERROR_CODES, MCPError } from '../utils/enhancedErrorHandler.js';
|
|
4
|
+
import { streamingService } from './streamingService.js';
|
|
5
|
+
/**
|
|
6
|
+
* Generate a unique request ID
|
|
7
|
+
*/
|
|
8
|
+
function generateRequestId() {
|
|
9
|
+
return `mcp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
10
|
+
}
|
|
11
|
+
export class ImportService {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.mcpServer = null;
|
|
14
|
+
// Real-time streaming management
|
|
15
|
+
this.activeStreams = new Map();
|
|
16
|
+
this.progressUpdates = new Map();
|
|
17
|
+
this.streamAnalytics = {
|
|
18
|
+
totalImports: 0,
|
|
19
|
+
activeImports: 0,
|
|
20
|
+
completedImports: 0,
|
|
21
|
+
failedImports: 0,
|
|
22
|
+
averageImportTime: 0,
|
|
23
|
+
notificationsSent: 0,
|
|
24
|
+
errorsEncountered: 0,
|
|
25
|
+
lastActivity: new Date().toISOString()
|
|
26
|
+
};
|
|
27
|
+
this.httpClient = authManager.getHttpClient();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Set MCP server reference for progress notifications
|
|
31
|
+
*/
|
|
32
|
+
setMCPServer(server) {
|
|
33
|
+
this.mcpServer = server;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get stream analytics and monitoring information
|
|
37
|
+
*/
|
|
38
|
+
getStreamAnalytics() {
|
|
39
|
+
return {
|
|
40
|
+
...this.streamAnalytics,
|
|
41
|
+
activeStreams: Array.from(this.activeStreams.values())
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get progress update for a specific token
|
|
46
|
+
*/
|
|
47
|
+
getProgressUpdate(progressToken) {
|
|
48
|
+
const update = this.progressUpdates.get(progressToken);
|
|
49
|
+
if (!update)
|
|
50
|
+
return null;
|
|
51
|
+
// Check if expired (clean up stale data)
|
|
52
|
+
if (update.expiresAt && Date.now() > update.expiresAt) {
|
|
53
|
+
this.progressUpdates.delete(progressToken);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return update;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Cancel import monitoring for a specific token
|
|
60
|
+
*/
|
|
61
|
+
async cancelImportMonitoring(progressToken, reason = 'User requested cancellation') {
|
|
62
|
+
const stream = this.activeStreams.get(progressToken);
|
|
63
|
+
if (!stream) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
console.log(`[Import] Cancelling monitoring for import job ${stream.jobId} with token ${progressToken}`);
|
|
67
|
+
try {
|
|
68
|
+
// Update progress with cancellation notice
|
|
69
|
+
await this.storeProgressUpdate(progressToken, stream.lastProgress, 100, `Import monitoring cancelled: ${reason}`);
|
|
70
|
+
// Unsubscribe from stream
|
|
71
|
+
await streamingService.unsubscribeFromStream(stream.streamId);
|
|
72
|
+
// Cleanup
|
|
73
|
+
this.completeStream(progressToken, 'cancelled');
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error(`[Import] Error cancelling monitoring for token ${progressToken}:`, error);
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Start a container import with real-time streaming progress
|
|
83
|
+
*/
|
|
84
|
+
async importContainer(params, progressToken) {
|
|
85
|
+
try {
|
|
86
|
+
const { sourceType, sourceUrl, name, dockerfilePath, dockerHubUsername, dockerHubToken } = params;
|
|
87
|
+
if (!sourceType || !sourceUrl) {
|
|
88
|
+
throw ErrorHandler.createValidationError('Source type and URL are required');
|
|
89
|
+
}
|
|
90
|
+
// Initialize progress tracking with streaming notifications
|
|
91
|
+
if (progressToken) {
|
|
92
|
+
console.log(`[Import] Starting import with streaming progress token: ${progressToken}`);
|
|
93
|
+
await this.storeProgressUpdate(progressToken, 0, 100, 'Import initialization started');
|
|
94
|
+
}
|
|
95
|
+
const importRequest = {
|
|
96
|
+
sourceType,
|
|
97
|
+
sourceUrl
|
|
98
|
+
};
|
|
99
|
+
// Add optional parameters
|
|
100
|
+
if (name)
|
|
101
|
+
importRequest.name = name;
|
|
102
|
+
if (dockerfilePath)
|
|
103
|
+
importRequest.dockerfilePath = dockerfilePath;
|
|
104
|
+
if (dockerHubUsername)
|
|
105
|
+
importRequest.dockerHubUsername = dockerHubUsername;
|
|
106
|
+
if (dockerHubToken)
|
|
107
|
+
importRequest.dockerHubToken = dockerHubToken;
|
|
108
|
+
// Start the import via API
|
|
109
|
+
const response = await this.httpClient.post('/v1/containers/import', importRequest);
|
|
110
|
+
if (!response.data) {
|
|
111
|
+
throw ErrorHandler.createServerError('Invalid response from import API');
|
|
112
|
+
}
|
|
113
|
+
const data = response.data;
|
|
114
|
+
const importResult = {
|
|
115
|
+
jobId: data.jobId,
|
|
116
|
+
status: data.status || 'pending',
|
|
117
|
+
sourceType: data.sourceType,
|
|
118
|
+
sourceUrl: data.sourceUrl,
|
|
119
|
+
progress: data.progress,
|
|
120
|
+
containerId: data.containerId,
|
|
121
|
+
errors: data.errors || [],
|
|
122
|
+
createdAt: data.createdAt,
|
|
123
|
+
updatedAt: data.updatedAt,
|
|
124
|
+
completedAt: data.completedAt,
|
|
125
|
+
metadata: data.metadata,
|
|
126
|
+
tokenCost: data.tokenCost,
|
|
127
|
+
estimatedDuration: data.estimatedDuration
|
|
128
|
+
};
|
|
129
|
+
// Set up real-time streaming for progress updates
|
|
130
|
+
if (progressToken) {
|
|
131
|
+
await this.storeProgressUpdate(progressToken, 10, 100, `Import job created - ID: ${importResult.jobId}`);
|
|
132
|
+
// Create streaming subscription
|
|
133
|
+
await this.setupStreamingMonitoring(importResult.jobId, sourceType, sourceUrl, progressToken);
|
|
134
|
+
}
|
|
135
|
+
return importResult;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// Use enhanced error handling for import operations
|
|
139
|
+
const context = {
|
|
140
|
+
operation: 'import_container',
|
|
141
|
+
sourceType: params.sourceType,
|
|
142
|
+
sourceUrl: params.sourceUrl,
|
|
143
|
+
importStage: 'initialization',
|
|
144
|
+
progressToken: progressToken,
|
|
145
|
+
requestId: generateRequestId()
|
|
146
|
+
};
|
|
147
|
+
if (error instanceof ApiError && error.status === 402) {
|
|
148
|
+
throw new MCPError(MCP_ERROR_CODES.API_QUOTA_EXCEEDED, error.message || 'Insufficient tokens for import', context);
|
|
149
|
+
}
|
|
150
|
+
if (error instanceof ApiError && error.status === 400) {
|
|
151
|
+
throw new MCPError(MCP_ERROR_CODES.CONTAINER_STATE_INVALID, error.message || 'Invalid import request', context);
|
|
152
|
+
}
|
|
153
|
+
const enhancedError = EnhancedMCPErrorHandler.processError(error, context);
|
|
154
|
+
throw new ApiError(enhancedError.message, enhancedError.status, enhancedError.code, enhancedError, context.requestId, context.operation);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Set up real-time streaming monitoring for import progress
|
|
159
|
+
*/
|
|
160
|
+
async setupStreamingMonitoring(jobId, sourceType, sourceUrl, progressToken) {
|
|
161
|
+
try {
|
|
162
|
+
console.log(`[Import] Setting up real-time streaming for import job ${jobId} with token ${progressToken}`);
|
|
163
|
+
// Create import stream
|
|
164
|
+
const streamSession = await streamingService.createStream({
|
|
165
|
+
streamType: 'user-notifications',
|
|
166
|
+
resourceId: jobId,
|
|
167
|
+
eventFilters: [
|
|
168
|
+
'import-started',
|
|
169
|
+
'import-validating',
|
|
170
|
+
'import-pulling',
|
|
171
|
+
'import-cloning',
|
|
172
|
+
'import-inspecting',
|
|
173
|
+
'import-extracting',
|
|
174
|
+
'import-files-ingested',
|
|
175
|
+
'import-files-imported',
|
|
176
|
+
'import-validation-completed',
|
|
177
|
+
'import-creating',
|
|
178
|
+
'import-finalizing',
|
|
179
|
+
'import-completed',
|
|
180
|
+
'import-failed'
|
|
181
|
+
],
|
|
182
|
+
ttlMinutes: 120, // 2 hours
|
|
183
|
+
metadata: {
|
|
184
|
+
jobId,
|
|
185
|
+
progressToken,
|
|
186
|
+
sourceType,
|
|
187
|
+
sourceUrl
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
// Track active stream
|
|
191
|
+
const activeStream = {
|
|
192
|
+
jobId,
|
|
193
|
+
sourceType,
|
|
194
|
+
sourceUrl,
|
|
195
|
+
progressToken,
|
|
196
|
+
streamId: streamSession.streamId,
|
|
197
|
+
startTime: Date.now(),
|
|
198
|
+
lastProgress: 10,
|
|
199
|
+
status: 'active'
|
|
200
|
+
};
|
|
201
|
+
this.activeStreams.set(progressToken, activeStream);
|
|
202
|
+
this.streamAnalytics.totalImports++;
|
|
203
|
+
this.streamAnalytics.activeImports++;
|
|
204
|
+
// Subscribe to stream events
|
|
205
|
+
await streamingService.subscribeToStream(streamSession.streamId, (event) => {
|
|
206
|
+
this.handleImportStreamEvent(event, progressToken);
|
|
207
|
+
});
|
|
208
|
+
console.log(`[Import] Real-time streaming active for import job ${jobId} (stream: ${streamSession.streamId})`);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error(`[Import] Failed to setup streaming monitoring for job ${jobId}:`, {
|
|
212
|
+
error: error?.message || error,
|
|
213
|
+
stack: error?.stack,
|
|
214
|
+
jobId,
|
|
215
|
+
progressToken
|
|
216
|
+
});
|
|
217
|
+
// Fallback to basic progress tracking if streaming fails
|
|
218
|
+
await this.storeProgressUpdate(progressToken, 10, 100, `Import started - streaming unavailable: ${error?.message || 'Unknown error'}`);
|
|
219
|
+
// Start fallback polling mechanism
|
|
220
|
+
await this.startFallbackProgressPolling(jobId, progressToken);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Start fallback polling mechanism when streaming fails
|
|
225
|
+
*/
|
|
226
|
+
async startFallbackProgressPolling(jobId, progressToken) {
|
|
227
|
+
console.log(`[Import] Starting fallback polling for import job ${jobId} with token ${progressToken}`);
|
|
228
|
+
const stream = this.activeStreams.get(progressToken);
|
|
229
|
+
if (!stream) {
|
|
230
|
+
console.error(`[Import] No stream found for token ${progressToken}`);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
// Start polling every 10 seconds
|
|
234
|
+
const pollInterval = setInterval(async () => {
|
|
235
|
+
try {
|
|
236
|
+
const importStatus = await this.getImportStatus(jobId);
|
|
237
|
+
if (!this.activeStreams.has(progressToken)) {
|
|
238
|
+
clearInterval(pollInterval);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const currentStream = this.activeStreams.get(progressToken);
|
|
242
|
+
let progress = currentStream.lastProgress;
|
|
243
|
+
let message = `Import ${importStatus.status}`;
|
|
244
|
+
// Map import status to progress
|
|
245
|
+
switch (importStatus.status) {
|
|
246
|
+
case 'pending':
|
|
247
|
+
case 'queued':
|
|
248
|
+
progress = 20;
|
|
249
|
+
message = 'Import queued and waiting to start';
|
|
250
|
+
break;
|
|
251
|
+
case 'processing':
|
|
252
|
+
case 'validating':
|
|
253
|
+
progress = 40;
|
|
254
|
+
message = importStatus.progress?.message || 'Validating import source';
|
|
255
|
+
break;
|
|
256
|
+
case 'pulling':
|
|
257
|
+
case 'cloning':
|
|
258
|
+
progress = 60;
|
|
259
|
+
message = importStatus.progress?.message || 'Downloading source files';
|
|
260
|
+
break;
|
|
261
|
+
case 'extracting':
|
|
262
|
+
case 'creating':
|
|
263
|
+
progress = 80;
|
|
264
|
+
message = importStatus.progress?.message || 'Creating container';
|
|
265
|
+
break;
|
|
266
|
+
case 'completed':
|
|
267
|
+
progress = 100;
|
|
268
|
+
message = importStatus.containerId
|
|
269
|
+
? `Import completed! Container created: ${importStatus.containerId}`
|
|
270
|
+
: 'Import completed successfully!';
|
|
271
|
+
break;
|
|
272
|
+
case 'failed':
|
|
273
|
+
message = `Import failed: ${importStatus.errors?.[0] || 'Unknown error'}`;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
// Update progress
|
|
277
|
+
currentStream.lastProgress = progress;
|
|
278
|
+
await this.storeProgressUpdate(progressToken, progress, 100, message, {
|
|
279
|
+
jobId,
|
|
280
|
+
status: importStatus.status,
|
|
281
|
+
fallbackMode: true
|
|
282
|
+
});
|
|
283
|
+
// Complete if finished
|
|
284
|
+
if (['completed', 'failed'].includes(importStatus.status)) {
|
|
285
|
+
const completionTime = Date.now() - currentStream.startTime;
|
|
286
|
+
this.completeStream(progressToken, importStatus.status === 'completed' ? 'completed' : 'failed', completionTime);
|
|
287
|
+
clearInterval(pollInterval);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
console.error(`[Import] Error in fallback polling for ${jobId}:`, error);
|
|
292
|
+
}
|
|
293
|
+
}, 10000); // Poll every 10 seconds
|
|
294
|
+
// Auto-cleanup after 30 minutes
|
|
295
|
+
setTimeout(() => {
|
|
296
|
+
if (this.activeStreams.has(progressToken)) {
|
|
297
|
+
console.log(`[Import] Auto-cleaning up fallback polling for ${jobId} after 30 minutes`);
|
|
298
|
+
clearInterval(pollInterval);
|
|
299
|
+
this.completeStream(progressToken, 'timeout');
|
|
300
|
+
}
|
|
301
|
+
}, 30 * 60 * 1000);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Handle real-time import stream events
|
|
305
|
+
*/
|
|
306
|
+
async handleImportStreamEvent(event, progressToken) {
|
|
307
|
+
try {
|
|
308
|
+
const stream = this.activeStreams.get(progressToken);
|
|
309
|
+
if (!stream) {
|
|
310
|
+
console.warn(`[Import] Received event for unknown progress token: ${progressToken}`);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
console.log(`[Import] Processing ${event.eventType} for import job ${stream.jobId}: ${event.data.message || event.data.data?.message || ''}`);
|
|
314
|
+
// Convert stream event to progress update
|
|
315
|
+
const progressUpdate = this.convertStreamEventToProgress(event, progressToken, stream);
|
|
316
|
+
// Store progress update
|
|
317
|
+
await this.storeProgressUpdate(progressToken, progressUpdate.progress, progressUpdate.total, progressUpdate.message, progressUpdate.metadata);
|
|
318
|
+
// Update stream tracking
|
|
319
|
+
stream.lastProgress = progressUpdate.progress;
|
|
320
|
+
// Handle completion events
|
|
321
|
+
if (['import-completed', 'import-failed'].includes(event.eventType)) {
|
|
322
|
+
const completionTime = Date.now() - stream.startTime;
|
|
323
|
+
this.completeStream(progressToken, event.eventType.replace('import-', ''), completionTime);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
console.error(`[Import] Error handling stream event:`, error);
|
|
328
|
+
this.streamAnalytics.errorsEncountered++;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Convert stream event to progress update format
|
|
333
|
+
*/
|
|
334
|
+
convertStreamEventToProgress(event, progressToken, stream) {
|
|
335
|
+
const baseProgress = {
|
|
336
|
+
progressToken,
|
|
337
|
+
total: 100,
|
|
338
|
+
timestamp: event.timestamp,
|
|
339
|
+
metadata: {
|
|
340
|
+
eventType: event.eventType,
|
|
341
|
+
jobId: stream.jobId,
|
|
342
|
+
sourceType: stream.sourceType,
|
|
343
|
+
sourceUrl: stream.sourceUrl,
|
|
344
|
+
streamId: stream.streamId,
|
|
345
|
+
...event.data.data
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
const eventData = event.data.data || event.data;
|
|
349
|
+
switch (event.eventType) {
|
|
350
|
+
case 'import-started':
|
|
351
|
+
return {
|
|
352
|
+
...baseProgress,
|
|
353
|
+
progress: 10,
|
|
354
|
+
message: eventData.message || 'Import started'
|
|
355
|
+
};
|
|
356
|
+
case 'import-validating':
|
|
357
|
+
return {
|
|
358
|
+
...baseProgress,
|
|
359
|
+
progress: 20,
|
|
360
|
+
message: eventData.message || 'Validating import source'
|
|
361
|
+
};
|
|
362
|
+
case 'import-pulling':
|
|
363
|
+
case 'import-cloning':
|
|
364
|
+
return {
|
|
365
|
+
...baseProgress,
|
|
366
|
+
progress: 40,
|
|
367
|
+
message: eventData.message || 'Downloading source files'
|
|
368
|
+
};
|
|
369
|
+
case 'import-inspecting':
|
|
370
|
+
return {
|
|
371
|
+
...baseProgress,
|
|
372
|
+
progress: 50,
|
|
373
|
+
message: eventData.message || 'Inspecting repository structure'
|
|
374
|
+
};
|
|
375
|
+
case 'import-extracting':
|
|
376
|
+
return {
|
|
377
|
+
...baseProgress,
|
|
378
|
+
progress: 60,
|
|
379
|
+
message: eventData.message || 'Extracting files and metadata'
|
|
380
|
+
};
|
|
381
|
+
case 'import-files-ingested':
|
|
382
|
+
return {
|
|
383
|
+
...baseProgress,
|
|
384
|
+
progress: 65,
|
|
385
|
+
message: eventData.message || `Ingested ${eventData.fileCount || 0} files`
|
|
386
|
+
};
|
|
387
|
+
case 'import-files-imported':
|
|
388
|
+
return {
|
|
389
|
+
...baseProgress,
|
|
390
|
+
progress: 70,
|
|
391
|
+
message: eventData.message || `Imported ${eventData.extractedFileCount || 0} files`
|
|
392
|
+
};
|
|
393
|
+
case 'import-validation-completed':
|
|
394
|
+
return {
|
|
395
|
+
...baseProgress,
|
|
396
|
+
progress: 75,
|
|
397
|
+
message: eventData.message || 'Validation completed'
|
|
398
|
+
};
|
|
399
|
+
case 'import-creating':
|
|
400
|
+
return {
|
|
401
|
+
...baseProgress,
|
|
402
|
+
progress: 85,
|
|
403
|
+
message: eventData.message || 'Creating container document'
|
|
404
|
+
};
|
|
405
|
+
case 'import-finalizing':
|
|
406
|
+
return {
|
|
407
|
+
...baseProgress,
|
|
408
|
+
progress: 95,
|
|
409
|
+
message: eventData.message || 'Finalizing import'
|
|
410
|
+
};
|
|
411
|
+
case 'import-completed':
|
|
412
|
+
return {
|
|
413
|
+
...baseProgress,
|
|
414
|
+
progress: 100,
|
|
415
|
+
message: eventData.message || `Import completed! Container: ${eventData.containerId || 'unknown'}`
|
|
416
|
+
};
|
|
417
|
+
case 'import-failed':
|
|
418
|
+
return {
|
|
419
|
+
...baseProgress,
|
|
420
|
+
progress: Math.max(stream.lastProgress, 0),
|
|
421
|
+
message: eventData.message || eventData.error || 'Import failed'
|
|
422
|
+
};
|
|
423
|
+
default:
|
|
424
|
+
return {
|
|
425
|
+
...baseProgress,
|
|
426
|
+
progress: Math.max(stream.lastProgress, 0),
|
|
427
|
+
message: eventData.message || `Unknown event: ${event.eventType}`
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Store progress update with expiration
|
|
433
|
+
*/
|
|
434
|
+
async storeProgressUpdate(progressToken, progress, total = 100, message, metadata) {
|
|
435
|
+
if (!progressToken)
|
|
436
|
+
return;
|
|
437
|
+
try {
|
|
438
|
+
const notificationData = {
|
|
439
|
+
progressToken,
|
|
440
|
+
progress,
|
|
441
|
+
total,
|
|
442
|
+
message,
|
|
443
|
+
timestamp: new Date().toISOString(),
|
|
444
|
+
expiresAt: Date.now() + (30 * 60 * 1000), // 30-minute expiration
|
|
445
|
+
...(metadata && { metadata })
|
|
446
|
+
};
|
|
447
|
+
this.progressUpdates.set(progressToken, notificationData);
|
|
448
|
+
this.streamAnalytics.notificationsSent++;
|
|
449
|
+
this.streamAnalytics.lastActivity = new Date().toISOString();
|
|
450
|
+
console.log(`[Import] Progress stored: ${progress}/${total} - ${message} (token: ${progressToken})`);
|
|
451
|
+
}
|
|
452
|
+
catch (error) {
|
|
453
|
+
console.error(`[Import] Failed to store progress update:`, error);
|
|
454
|
+
this.streamAnalytics.errorsEncountered++;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Complete stream monitoring and update analytics
|
|
459
|
+
*/
|
|
460
|
+
completeStream(progressToken, reason, completionTime) {
|
|
461
|
+
const stream = this.activeStreams.get(progressToken);
|
|
462
|
+
if (!stream)
|
|
463
|
+
return;
|
|
464
|
+
// Unsubscribe from stream
|
|
465
|
+
streamingService.unsubscribeFromStream(stream.streamId).catch(error => {
|
|
466
|
+
console.error(`[Import] Error unsubscribing from stream ${stream.streamId}:`, error);
|
|
467
|
+
});
|
|
468
|
+
// Update analytics
|
|
469
|
+
this.streamAnalytics.activeImports = Math.max(0, this.streamAnalytics.activeImports - 1);
|
|
470
|
+
if (reason === 'completed') {
|
|
471
|
+
this.streamAnalytics.completedImports++;
|
|
472
|
+
if (completionTime) {
|
|
473
|
+
const currentAvg = this.streamAnalytics.averageImportTime;
|
|
474
|
+
const totalCompleted = this.streamAnalytics.completedImports;
|
|
475
|
+
this.streamAnalytics.averageImportTime =
|
|
476
|
+
((currentAvg * (totalCompleted - 1)) + completionTime) / totalCompleted;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
else if (reason === 'failed') {
|
|
480
|
+
this.streamAnalytics.failedImports++;
|
|
481
|
+
}
|
|
482
|
+
// Clean up
|
|
483
|
+
this.activeStreams.delete(progressToken);
|
|
484
|
+
console.log(`[Import] Stream monitoring completed for ${stream.jobId} (${reason})`);
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get import job status
|
|
488
|
+
*/
|
|
489
|
+
async getImportStatus(jobId) {
|
|
490
|
+
try {
|
|
491
|
+
if (!jobId) {
|
|
492
|
+
throw ErrorHandler.createValidationError('Job ID is required');
|
|
493
|
+
}
|
|
494
|
+
// Get import status via container import status endpoint
|
|
495
|
+
// Note: We need to get the container ID first, or use a jobs endpoint
|
|
496
|
+
const response = await this.httpClient.get(`/v1/containers/imports?limit=100`);
|
|
497
|
+
if (!response.data || !response.data.imports) {
|
|
498
|
+
throw ErrorHandler.createNotFoundError(`Import job ${jobId} not found`);
|
|
499
|
+
}
|
|
500
|
+
const job = response.data.imports.find((j) => j.jobId === jobId);
|
|
501
|
+
if (!job) {
|
|
502
|
+
throw ErrorHandler.createNotFoundError(`Import job ${jobId} not found`);
|
|
503
|
+
}
|
|
504
|
+
return {
|
|
505
|
+
jobId: job.jobId,
|
|
506
|
+
status: job.status,
|
|
507
|
+
sourceType: job.sourceType,
|
|
508
|
+
sourceUrl: job.sourceUrl,
|
|
509
|
+
progress: job.progress,
|
|
510
|
+
containerId: job.containerId,
|
|
511
|
+
errors: job.errors || [],
|
|
512
|
+
createdAt: job.createdAt,
|
|
513
|
+
updatedAt: job.updatedAt,
|
|
514
|
+
completedAt: job.completedAt
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
catch (error) {
|
|
518
|
+
if (error instanceof ApiError && error.status === 404) {
|
|
519
|
+
throw ErrorHandler.createNotFoundError(`Import job ${jobId} not found`);
|
|
520
|
+
}
|
|
521
|
+
throw ErrorHandler.processError(error, 'ImportService.getImportStatus');
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* List import jobs
|
|
526
|
+
*/
|
|
527
|
+
async listImportJobs(params = {}) {
|
|
528
|
+
try {
|
|
529
|
+
const queryParams = new URLSearchParams();
|
|
530
|
+
if (params.status)
|
|
531
|
+
queryParams.append('status', params.status);
|
|
532
|
+
if (params.limit)
|
|
533
|
+
queryParams.append('limit', params.limit.toString());
|
|
534
|
+
if (params.offset)
|
|
535
|
+
queryParams.append('offset', params.offset.toString());
|
|
536
|
+
const endpoint = `/v1/containers/imports`;
|
|
537
|
+
const response = await this.httpClient.get(`${endpoint}?${queryParams.toString()}`);
|
|
538
|
+
if (!response.data) {
|
|
539
|
+
throw ErrorHandler.createServerError('Invalid response format from imports list API');
|
|
540
|
+
}
|
|
541
|
+
const data = response.data;
|
|
542
|
+
return {
|
|
543
|
+
imports: (data.imports || []).map((job) => ({
|
|
544
|
+
jobId: job.jobId,
|
|
545
|
+
status: job.status,
|
|
546
|
+
sourceType: job.sourceType,
|
|
547
|
+
sourceUrl: job.sourceUrl,
|
|
548
|
+
progress: job.progress,
|
|
549
|
+
containerId: job.containerId,
|
|
550
|
+
errors: job.errors || [],
|
|
551
|
+
createdAt: job.createdAt,
|
|
552
|
+
updatedAt: job.updatedAt,
|
|
553
|
+
completedAt: job.completedAt
|
|
554
|
+
})),
|
|
555
|
+
pagination: data.pagination || {
|
|
556
|
+
limit: params.limit || 50,
|
|
557
|
+
offset: params.offset || 0,
|
|
558
|
+
total: data.imports?.length || 0,
|
|
559
|
+
hasMore: false
|
|
560
|
+
}
|
|
561
|
+
};
|
|
562
|
+
}
|
|
563
|
+
catch (error) {
|
|
564
|
+
throw ErrorHandler.processError(error, 'ImportService.listImportJobs');
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
// Export singleton instance
|
|
569
|
+
export const importService = new ImportService();
|
|
570
|
+
//# sourceMappingURL=importService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importService.js","sourceRoot":"","sources":["../../src/services/importService.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,19 @@ export interface LogEventData {
|
|
|
43
43
|
to: string;
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
+
export interface ImportEventData {
|
|
47
|
+
importJobId: string;
|
|
48
|
+
sourceType: string;
|
|
49
|
+
sourceUrl: string;
|
|
50
|
+
containerId?: string;
|
|
51
|
+
containerName?: string;
|
|
52
|
+
status: string;
|
|
53
|
+
message: string;
|
|
54
|
+
progress?: number;
|
|
55
|
+
tokenCost?: number;
|
|
56
|
+
newTokenBalance?: number;
|
|
57
|
+
details?: Record<string, any>;
|
|
58
|
+
}
|
|
46
59
|
export type NotificationEventHandler = (eventType: string, data: any) => void;
|
|
47
60
|
export declare class UserNotificationManager {
|
|
48
61
|
private streamSession;
|
|
@@ -88,6 +101,10 @@ export declare class UserNotificationManager {
|
|
|
88
101
|
* Handle execution event
|
|
89
102
|
*/
|
|
90
103
|
private handleExecutionEvent;
|
|
104
|
+
/**
|
|
105
|
+
* Handle import event
|
|
106
|
+
*/
|
|
107
|
+
private handleImportEvent;
|
|
91
108
|
/**
|
|
92
109
|
* Handle log event with buffering and deduplication
|
|
93
110
|
*/
|
|
@@ -124,6 +141,7 @@ export declare class UserNotificationManager {
|
|
|
124
141
|
totalEventsReceived: number;
|
|
125
142
|
buildEvents: number;
|
|
126
143
|
executionEvents: number;
|
|
144
|
+
importEvents: number;
|
|
127
145
|
logEvents: number;
|
|
128
146
|
logsReceived: number;
|
|
129
147
|
duplicatesFiltered: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userNotificationManager.d.ts","sourceRoot":"","sources":["../../src/services/userNotificationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAiC,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAa,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAO9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"userNotificationManager.d.ts","sourceRoot":"","sources":["../../src/services/userNotificationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAiC,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAa,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAO9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,KAAK,CASX;IAEF;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD/C;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,aAAa,IAAI,aAAa,GAAG,IAAI;IAIrC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAIhD;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAc5E;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK9C;;OAEG;YACW,iBAAiB;IAgC/B;;OAEG;YACW,gBAAgB;IAmB9B;;OAEG;YACW,oBAAoB;IAyBlC;;OAEG;YACW,iBAAiB;IA6B/B;;OAEG;YACW,cAAc;IA2C5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIjE;;OAEG;IACH,WAAW;IAIX;;OAEG;IACH,QAAQ;;;;;;;;;;;;;qBAlWe,MAAM,GAAG,IAAI;;IA6WpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B/B;AAGD,eAAO,MAAM,uBAAuB,yBAAgC,CAAC"}
|