@172ai/containers-mcp-server 1.12.5 → 1.12.7

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.
@@ -0,0 +1,430 @@
1
+ import { authManager } from '../auth.js';
2
+ import { ErrorHandler } from '../utils/errorHandler.js';
3
+ /**
4
+ * Generate a unique request ID
5
+ */
6
+ function generateRequestId() {
7
+ return `mcp_fix_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
8
+ }
9
+ export class FixService {
10
+ constructor() {
11
+ this.mcpServer = null;
12
+ // Real-time streaming management
13
+ this.activeStreams = new Map();
14
+ this.progressUpdates = new Map();
15
+ this.streamAnalytics = {
16
+ totalFixes: 0,
17
+ activeFixes: 0,
18
+ completedFixes: 0,
19
+ failedFixes: 0,
20
+ averageFixTime: 0,
21
+ notificationsSent: 0,
22
+ errorsEncountered: 0,
23
+ lastActivity: new Date().toISOString()
24
+ };
25
+ this.httpClient = authManager.getHttpClient();
26
+ // Note: Fix events are handled via user-notifications stream
27
+ // Event handlers are registered in userNotificationManager, not directly here
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
+ * Handle fix-related streaming events (called by userNotificationManager)
60
+ * Note: This is not automatically registered - it's for future streaming integration
61
+ */
62
+ handleFixEvent(event) {
63
+ try {
64
+ const { eventType, data } = event;
65
+ const { containerId, fixAttemptId } = data || {};
66
+ console.log(`[FixService] Received ${eventType} event for container ${containerId}, fix ${fixAttemptId}`);
67
+ // Update analytics
68
+ this.streamAnalytics.lastActivity = new Date().toISOString();
69
+ this.streamAnalytics.notificationsSent++;
70
+ // Find active stream for this fix
71
+ let activeStream;
72
+ for (const stream of this.activeStreams.values()) {
73
+ if (stream.containerId === containerId && stream.fixAttemptId === fixAttemptId) {
74
+ activeStream = stream;
75
+ break;
76
+ }
77
+ }
78
+ // Handle different event types
79
+ switch (eventType) {
80
+ case 'fix-analysis-started':
81
+ if (activeStream) {
82
+ activeStream.status = 'active';
83
+ activeStream.lastProgress = 10;
84
+ }
85
+ break;
86
+ case 'fix-analysis-completed':
87
+ if (activeStream) {
88
+ activeStream.lastProgress = 33;
89
+ }
90
+ this.updateProgressForStream(activeStream, {
91
+ stage: 'analysis_complete',
92
+ progress: 33,
93
+ message: data.message || 'Analysis completed',
94
+ fixAttemptId: fixAttemptId
95
+ });
96
+ break;
97
+ case 'fix-apply-started':
98
+ if (activeStream) {
99
+ activeStream.lastProgress = 50;
100
+ }
101
+ break;
102
+ case 'fix-apply-completed':
103
+ if (activeStream) {
104
+ activeStream.lastProgress = 66;
105
+ }
106
+ this.updateProgressForStream(activeStream, {
107
+ stage: 'fix_applied',
108
+ progress: 66,
109
+ message: data.message || 'Fix applied successfully'
110
+ });
111
+ break;
112
+ case 'fix-rebuild-started':
113
+ if (activeStream) {
114
+ activeStream.lastProgress = 75;
115
+ }
116
+ break;
117
+ case 'fix-rebuild-completed':
118
+ if (activeStream) {
119
+ activeStream.status = 'completed';
120
+ activeStream.lastProgress = 100;
121
+ this.streamAnalytics.completedFixes++;
122
+ this.streamAnalytics.activeFixes = Math.max(0, this.streamAnalytics.activeFixes - 1);
123
+ // Calculate fix time
124
+ const fixTime = Date.now() - activeStream.startTime;
125
+ this.updateAverageFixTime(fixTime);
126
+ }
127
+ this.updateProgressForStream(activeStream, {
128
+ stage: 'completed',
129
+ progress: 100,
130
+ message: data.message || 'Fix completed successfully',
131
+ status: 'succeeded'
132
+ });
133
+ // Clean up after delay
134
+ setTimeout(() => {
135
+ if (activeStream) {
136
+ this.activeStreams.delete(activeStream.progressToken);
137
+ this.progressUpdates.delete(activeStream.progressToken);
138
+ }
139
+ }, 60000); // Keep for 1 minute
140
+ break;
141
+ case 'fix-rebuild-failed':
142
+ case 'fix-apply-failed':
143
+ case 'fix-analysis-failed':
144
+ if (activeStream) {
145
+ activeStream.status = 'failed';
146
+ this.streamAnalytics.failedFixes++;
147
+ this.streamAnalytics.activeFixes = Math.max(0, this.streamAnalytics.activeFixes - 1);
148
+ }
149
+ this.updateProgressForStream(activeStream, {
150
+ stage: 'failed',
151
+ progress: activeStream?.lastProgress || 0,
152
+ message: data.message || data.error || 'Fix failed',
153
+ error: data.error,
154
+ status: 'failed'
155
+ });
156
+ break;
157
+ }
158
+ // Send notification to MCP client if server is available
159
+ if (this.mcpServer && activeStream?.progressToken) {
160
+ this.sendProgressNotification(activeStream.progressToken, eventType, data);
161
+ }
162
+ }
163
+ catch (error) {
164
+ console.error('[FixService] Error handling fix event:', error);
165
+ this.streamAnalytics.errorsEncountered++;
166
+ }
167
+ }
168
+ /**
169
+ * Update progress for a specific stream
170
+ */
171
+ updateProgressForStream(stream, progressData) {
172
+ if (!stream)
173
+ return;
174
+ const existingProgress = this.progressUpdates.get(stream.progressToken) || {};
175
+ this.progressUpdates.set(stream.progressToken, {
176
+ ...existingProgress,
177
+ ...progressData,
178
+ timestamp: new Date().toISOString(),
179
+ expiresAt: Date.now() + 3600000 // 1 hour
180
+ });
181
+ }
182
+ /**
183
+ * Send progress notification to MCP client
184
+ */
185
+ sendProgressNotification(progressToken, eventType, data) {
186
+ if (!this.mcpServer)
187
+ return;
188
+ try {
189
+ this.mcpServer.notification({
190
+ method: 'notifications/progress',
191
+ params: {
192
+ progressToken,
193
+ progress: data.progress || 0,
194
+ total: 100,
195
+ message: data.message || eventType
196
+ }
197
+ });
198
+ }
199
+ catch (error) {
200
+ console.error('[FixService] Error sending progress notification:', error);
201
+ }
202
+ }
203
+ /**
204
+ * Update average fix time
205
+ */
206
+ updateAverageFixTime(newFixTime) {
207
+ const totalFixes = this.streamAnalytics.completedFixes;
208
+ if (totalFixes === 0) {
209
+ this.streamAnalytics.averageFixTime = newFixTime;
210
+ }
211
+ else {
212
+ this.streamAnalytics.averageFixTime =
213
+ (this.streamAnalytics.averageFixTime * (totalFixes - 1) + newFixTime) / totalFixes;
214
+ }
215
+ }
216
+ /**
217
+ * Fix a container (analyze + apply + rebuild workflow)
218
+ */
219
+ async fixContainer(params) {
220
+ const { containerId, autoApply = true, progressToken } = params;
221
+ const requestId = generateRequestId();
222
+ try {
223
+ console.log(`[FixService] fixContainer called for ${containerId}, autoApply: ${autoApply}`);
224
+ // Create progress token if not provided
225
+ const token = progressToken || requestId;
226
+ // Track this fix operation
227
+ const startTime = Date.now();
228
+ this.streamAnalytics.totalFixes++;
229
+ this.streamAnalytics.activeFixes++;
230
+ // Make API request to fix endpoint
231
+ const response = await this.httpClient.post(`/containers/${containerId}/fix`, {
232
+ autoApply,
233
+ analyzeOnly: !autoApply
234
+ });
235
+ const result = response.data;
236
+ const fixAttemptId = result.fixAttemptId || result.data?.fixAttemptId;
237
+ if (fixAttemptId) {
238
+ // Register active stream for monitoring
239
+ this.activeStreams.set(token, {
240
+ containerId,
241
+ fixAttemptId,
242
+ progressToken: token,
243
+ streamId: `fix-${fixAttemptId}`,
244
+ startTime,
245
+ lastProgress: 0,
246
+ status: 'active'
247
+ });
248
+ // Initialize progress
249
+ this.progressUpdates.set(token, {
250
+ stage: 'started',
251
+ progress: 0,
252
+ message: 'Fix operation started',
253
+ fixAttemptId,
254
+ timestamp: new Date().toISOString(),
255
+ expiresAt: Date.now() + 3600000
256
+ });
257
+ }
258
+ return {
259
+ success: true,
260
+ containerId,
261
+ containerName: result.containerName || result.data?.containerName,
262
+ fixAttemptId,
263
+ message: result.message || 'Fix operation initiated successfully',
264
+ analysis: result.analysis || result.data?.analysis,
265
+ applied: result.applied !== undefined ? result.applied : autoApply,
266
+ autoApplied: autoApply,
267
+ buildStatus: result.buildStatus || result.data?.buildStatus
268
+ };
269
+ }
270
+ catch (error) {
271
+ console.error(`[FixService] Error fixing container ${containerId}:`, error);
272
+ this.streamAnalytics.errorsEncountered++;
273
+ this.streamAnalytics.failedFixes++;
274
+ this.streamAnalytics.activeFixes = Math.max(0, this.streamAnalytics.activeFixes - 1);
275
+ throw ErrorHandler.processError(error, `Failed to fix container ${containerId}`);
276
+ }
277
+ }
278
+ /**
279
+ * Analyze container failure (without auto-applying fix)
280
+ */
281
+ async analyzeFailure(params) {
282
+ const { containerId, progressToken } = params;
283
+ const requestId = generateRequestId();
284
+ try {
285
+ console.log(`[FixService] analyzeFailure called for ${containerId}`);
286
+ const response = await this.httpClient.post(`/containers/${containerId}/fix/analyze`);
287
+ const result = response.data;
288
+ return {
289
+ fixAttemptId: result.fixAttemptId || result.data?.fixAttemptId,
290
+ attemptNumber: result.attemptNumber || result.data?.attemptNumber || 1,
291
+ maxAttempts: result.maxAttempts || result.data?.maxAttempts || 100,
292
+ previousAttempts: result.previousAttempts || result.data?.previousAttempts || 0,
293
+ diagnosticSummary: result.diagnosticSummary || result.data?.diagnosticSummary || '',
294
+ rootCause: result.rootCause || result.data?.rootCause || '',
295
+ fixApproach: result.fixApproach || result.data?.fixApproach || '',
296
+ affectedFiles: result.affectedFiles || result.data?.affectedFiles || [],
297
+ severity: result.severity || result.data?.severity || 'medium',
298
+ fixConfidence: result.fixConfidence || result.data?.fixConfidence || 'medium',
299
+ fileChanges: result.fileChanges || result.data?.fileChanges || []
300
+ };
301
+ }
302
+ catch (error) {
303
+ console.error(`[FixService] Error analyzing container ${containerId}:`, error);
304
+ throw ErrorHandler.processError(error, `Failed to analyze container ${containerId}`);
305
+ }
306
+ }
307
+ /**
308
+ * Apply a specific fix and trigger rebuild
309
+ */
310
+ async applyFix(params) {
311
+ const { containerId, fixAttemptId, progressToken } = params;
312
+ const requestId = generateRequestId();
313
+ try {
314
+ console.log(`[FixService] applyFix called for ${containerId}, fix ${fixAttemptId}`);
315
+ // Create progress token if not provided
316
+ const token = progressToken || requestId;
317
+ // Track this operation
318
+ const startTime = Date.now();
319
+ this.streamAnalytics.activeFixes++;
320
+ // Register active stream
321
+ this.activeStreams.set(token, {
322
+ containerId,
323
+ fixAttemptId,
324
+ progressToken: token,
325
+ streamId: `fix-${fixAttemptId}`,
326
+ startTime,
327
+ lastProgress: 0,
328
+ status: 'active'
329
+ });
330
+ // Make API request to apply fix
331
+ const response = await this.httpClient.post(`/containers/${containerId}/fix/apply`, {
332
+ fixAttemptId
333
+ });
334
+ const result = response.data;
335
+ return {
336
+ success: true,
337
+ containerId,
338
+ fixAttemptId,
339
+ message: result.message || 'Fix applied and rebuild triggered',
340
+ applied: true,
341
+ buildStatus: result.buildStatus || 'building'
342
+ };
343
+ }
344
+ catch (error) {
345
+ console.error(`[FixService] Error applying fix ${fixAttemptId}:`, error);
346
+ this.streamAnalytics.errorsEncountered++;
347
+ this.streamAnalytics.failedFixes++;
348
+ this.streamAnalytics.activeFixes = Math.max(0, this.streamAnalytics.activeFixes - 1);
349
+ throw ErrorHandler.processError(error, `Failed to apply fix ${fixAttemptId}`);
350
+ }
351
+ }
352
+ /**
353
+ * Get fix history for a container
354
+ */
355
+ async getFixHistory(params) {
356
+ const { containerId, limit = 10 } = params;
357
+ try {
358
+ console.log(`[FixService] getFixHistory called for ${containerId}`);
359
+ const response = await this.httpClient.get(`/containers/${containerId}/fix/history`, {
360
+ params: { limit }
361
+ });
362
+ const result = response.data;
363
+ const fixes = result.data || result.fixes || [];
364
+ return {
365
+ success: true,
366
+ containerId,
367
+ fixes,
368
+ totalCount: fixes.length
369
+ };
370
+ }
371
+ catch (error) {
372
+ console.error(`[FixService] Error getting fix history for ${containerId}:`, error);
373
+ throw ErrorHandler.processError(error, `Failed to get fix history for ${containerId}`);
374
+ }
375
+ }
376
+ /**
377
+ * Get specific fix attempt status
378
+ */
379
+ async getFixStatus(params) {
380
+ const { containerId, fixAttemptId } = params;
381
+ try {
382
+ console.log(`[FixService] getFixStatus called for ${containerId}, fix ${fixAttemptId}`);
383
+ const response = await this.httpClient.get(`/containers/${containerId}/fix/${fixAttemptId}`);
384
+ const result = response.data;
385
+ const fixData = result.data || result;
386
+ return {
387
+ id: fixData.id || fixAttemptId,
388
+ containerId: fixData.containerId || containerId,
389
+ attemptNumber: fixData.attemptNumber || 1,
390
+ status: fixData.status || 'pending_approval',
391
+ diagnosticSummary: fixData.diagnosticSummary || '',
392
+ rootCause: fixData.rootCause || '',
393
+ fixApproach: fixData.fixApproach || '',
394
+ fileChanges: fixData.fileChanges || [],
395
+ severity: fixData.severity || 'medium',
396
+ fixConfidence: fixData.fixConfidence || 'medium',
397
+ createdAt: fixData.createdAt || new Date().toISOString(),
398
+ updatedAt: fixData.updatedAt,
399
+ appliedAt: fixData.appliedAt,
400
+ completedAt: fixData.completedAt,
401
+ errorMessage: fixData.errorMessage
402
+ };
403
+ }
404
+ catch (error) {
405
+ console.error(`[FixService] Error getting fix status for ${fixAttemptId}:`, error);
406
+ throw ErrorHandler.processError(error, `Failed to get fix status for ${fixAttemptId}`);
407
+ }
408
+ }
409
+ /**
410
+ * Cancel fix monitoring for a progress token
411
+ */
412
+ async cancelFixMonitoring(progressToken) {
413
+ try {
414
+ const stream = this.activeStreams.get(progressToken);
415
+ if (stream) {
416
+ stream.status = 'cancelled';
417
+ this.activeStreams.delete(progressToken);
418
+ this.progressUpdates.delete(progressToken);
419
+ this.streamAnalytics.activeFixes = Math.max(0, this.streamAnalytics.activeFixes - 1);
420
+ console.log(`[FixService] Cancelled monitoring for ${progressToken}`);
421
+ }
422
+ }
423
+ catch (error) {
424
+ console.error('[FixService] Error cancelling fix monitoring:', error);
425
+ }
426
+ }
427
+ }
428
+ // Export singleton instance
429
+ export const fixService = new FixService();
430
+ //# sourceMappingURL=fixService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixService.js","sourceRoot":"","sources":["../../src/services/fixService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ export interface Modification {
2
+ modificationId: string;
3
+ name: string;
4
+ category: string;
5
+ description: string;
6
+ estimatedImpact?: string;
7
+ priority?: string;
8
+ tags?: string[];
9
+ active?: boolean;
10
+ conflictsWith?: string[];
11
+ risks?: string;
12
+ }
13
+ export interface ModificationRecommendation {
14
+ modificationId: string;
15
+ name: string;
16
+ category: string;
17
+ description: string;
18
+ priority: 'high' | 'medium' | 'low';
19
+ reason: string;
20
+ estimatedImpact?: string;
21
+ applicability: string;
22
+ risks?: string;
23
+ }
24
+ export interface AppliedModification {
25
+ modificationApplicationId: string;
26
+ modificationId: string;
27
+ modificationName: string;
28
+ category: string;
29
+ status: 'in_progress' | 'completed' | 'failed';
30
+ appliedAt: number;
31
+ appliedBy: string;
32
+ startVersion?: number;
33
+ endVersion?: number;
34
+ beforeDockerfile?: string;
35
+ afterDockerfile?: string;
36
+ diffSummary?: string;
37
+ aiModel?: string;
38
+ notes?: string;
39
+ error?: string;
40
+ }
41
+ export interface ModificationListResponse {
42
+ modifications: Modification[];
43
+ count: number;
44
+ }
45
+ export interface AppliedModificationListResponse {
46
+ appliedModifications: AppliedModification[];
47
+ count: number;
48
+ hasMore: boolean;
49
+ }
50
+ export interface SuggestModificationsResponse {
51
+ recommendations: ModificationRecommendation[];
52
+ alreadyApplied: string[];
53
+ notApplicable: Array<{
54
+ modificationId: string;
55
+ name: string;
56
+ reason: string;
57
+ }>;
58
+ }
59
+ export interface ApplyModificationRequest {
60
+ containerId: string;
61
+ modificationId: string;
62
+ autoBuild?: boolean;
63
+ notes?: string;
64
+ }
65
+ export interface ApplyModificationResponse {
66
+ modificationApplicationId: string;
67
+ status: string;
68
+ estimatedCompletionTime: string;
69
+ streamToken: string;
70
+ }
71
+ export declare class ModificationService {
72
+ private httpClient;
73
+ private mcpServer;
74
+ constructor();
75
+ /**
76
+ * Set MCP server reference for progress notifications
77
+ */
78
+ setMCPServer(server: any): void;
79
+ /**
80
+ * List all available modifications in the catalog
81
+ */
82
+ listModifications(category?: string, tags?: string, active?: boolean): Promise<ModificationListResponse>;
83
+ /**
84
+ * Get AI-powered modification suggestions for a container
85
+ */
86
+ suggestModifications(containerId: string, categories?: string[], includeRisks?: boolean): Promise<SuggestModificationsResponse>;
87
+ /**
88
+ * Apply a modification to a container
89
+ */
90
+ applyModification(request: ApplyModificationRequest): Promise<ApplyModificationResponse>;
91
+ /**
92
+ * Get detailed information about a specific modification application
93
+ */
94
+ getModificationDetails(containerId: string, modificationApplicationId: string): Promise<AppliedModification>;
95
+ /**
96
+ * List modifications applied to a specific container
97
+ */
98
+ listAppliedModifications(containerId: string, status?: string, limit?: number, offset?: number): Promise<AppliedModificationListResponse>;
99
+ /**
100
+ * Format modification recommendation for display
101
+ */
102
+ formatRecommendation(rec: ModificationRecommendation): string;
103
+ /**
104
+ * Format applied modification for display
105
+ */
106
+ formatAppliedModification(mod: AppliedModification): string;
107
+ /**
108
+ * Check if modification is in progress
109
+ */
110
+ isModificationInProgress(status: string): boolean;
111
+ /**
112
+ * Check if modification completed successfully
113
+ */
114
+ isModificationCompleted(status: string): boolean;
115
+ /**
116
+ * Check if modification failed
117
+ */
118
+ isModificationFailed(status: string): boolean;
119
+ }
120
+ export declare const modificationService: ModificationService;
121
+ //# sourceMappingURL=modificationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modificationService.d.ts","sourceRoot":"","sources":["../../src/services/modificationService.ts"],"names":[],"mappings":"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"}