mcp-adr-analysis-server 2.7.30 → 2.7.31

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.
@@ -1,445 +0,0 @@
1
- /**
2
- * Interactive approval workflow for smart git push
3
- *
4
- * Handles user interaction for approving/rejecting files with issues
5
- */
6
- import { createInterface } from 'readline';
7
- import { readFileSync, writeFileSync } from 'fs';
8
- /**
9
- * Main interactive approval function
10
- */
11
- export async function handleInteractiveApproval(items, options) {
12
- const result = {
13
- approved: [],
14
- rejected: [],
15
- moved: [],
16
- ignored: [],
17
- actions: [],
18
- proceed: false,
19
- };
20
- if (items.length === 0) {
21
- result.proceed = true;
22
- return result;
23
- }
24
- // Handle non-interactive mode
25
- if (!options.interactiveMode) {
26
- return handleNonInteractiveApproval(items, options);
27
- }
28
- // Display summary
29
- displayApprovalSummary(items);
30
- // Group items by severity for better UX
31
- const errorItems = items.filter(item => item.severity === 'error');
32
- const warningItems = items.filter(item => item.severity === 'warning');
33
- const infoItems = items.filter(item => item.severity === 'info');
34
- // Handle errors first (these are most critical)
35
- if (errorItems.length > 0) {
36
- console.log('\n🚨 CRITICAL ISSUES (Must be resolved before proceeding)');
37
- for (const item of errorItems) {
38
- const action = await handleItemApproval(item, options, true);
39
- result.actions.push(action);
40
- applyAction(action, result);
41
- }
42
- }
43
- // Handle warnings
44
- if (warningItems.length > 0) {
45
- console.log('\n⚠️ WARNING ISSUES (Review recommended)');
46
- for (const item of warningItems) {
47
- const action = await handleItemApproval(item, options, false);
48
- result.actions.push(action);
49
- applyAction(action, result);
50
- }
51
- }
52
- // Handle info items (auto-approve if option set)
53
- if (infoItems.length > 0) {
54
- if (options.autoApproveInfo) {
55
- console.log(`\n✅ Auto-approving ${infoItems.length} info-level items`);
56
- for (const item of infoItems) {
57
- const action = { type: 'approve', filePath: item.filePath };
58
- result.actions.push(action);
59
- applyAction(action, result);
60
- }
61
- }
62
- else {
63
- console.log('\n💡 INFO ITEMS (Low priority)');
64
- for (const item of infoItems) {
65
- const action = await handleItemApproval(item, options, false);
66
- result.actions.push(action);
67
- applyAction(action, result);
68
- }
69
- }
70
- }
71
- // Final confirmation
72
- result.proceed = await getFinalConfirmation(result, options);
73
- return result;
74
- }
75
- /**
76
- * Handle non-interactive approval
77
- */
78
- function handleNonInteractiveApproval(items, options) {
79
- const result = {
80
- approved: [],
81
- rejected: [],
82
- moved: [],
83
- ignored: [],
84
- actions: [],
85
- proceed: false,
86
- };
87
- for (const item of items) {
88
- let action;
89
- if (item.severity === 'error' && options.autoRejectErrors) {
90
- action = { type: 'reject', filePath: item.filePath, reason: 'Auto-rejected due to errors' };
91
- }
92
- else if (item.severity === 'info' && options.autoApproveInfo) {
93
- action = { type: 'approve', filePath: item.filePath };
94
- }
95
- else {
96
- // Default behavior based on severity
97
- switch (item.severity) {
98
- case 'error':
99
- action = {
100
- type: 'reject',
101
- filePath: item.filePath,
102
- reason: 'Automatic rejection due to errors',
103
- };
104
- break;
105
- case 'warning':
106
- action = item.allowedInLocation
107
- ? { type: 'approve', filePath: item.filePath }
108
- : { type: 'reject', filePath: item.filePath, reason: 'Location violation' };
109
- break;
110
- case 'info':
111
- action = { type: 'approve', filePath: item.filePath };
112
- break;
113
- }
114
- }
115
- result.actions.push(action);
116
- applyAction(action, result);
117
- }
118
- // In non-interactive mode, proceed if no errors were rejected
119
- result.proceed = result.rejected.length === 0;
120
- return result;
121
- }
122
- /**
123
- * Handle approval for a single item
124
- */
125
- async function handleItemApproval(item, options, isError) {
126
- console.log(`\n📄 ${item.filePath}`);
127
- console.log(` Severity: ${item.severity.toUpperCase()}`);
128
- console.log(` Confidence: ${(item.confidence * 100).toFixed(1)}%`);
129
- console.log(` Location Valid: ${item.allowedInLocation ? '✅' : '❌'}`);
130
- // Display issues
131
- console.log('\n Issues:');
132
- for (const issue of item.issues) {
133
- console.log(` - ${issue.severity.toUpperCase()}: ${issue.message}`);
134
- if (issue.line) {
135
- console.log(` Line ${issue.line}`);
136
- }
137
- if (issue.context) {
138
- const contextLines = issue.context.split('\n').slice(0, 3);
139
- console.log(` Context: ${contextLines.join(' | ')}`);
140
- }
141
- }
142
- // Display suggestions
143
- if (item.suggestions.length > 0) {
144
- console.log('\n Suggestions:');
145
- for (let i = 0; i < item.suggestions.length; i++) {
146
- console.log(` ${i + 1}. ${item.suggestions[i]}`);
147
- }
148
- }
149
- // Get user choice
150
- const choices = buildChoices(item, isError);
151
- const choice = await getUserChoice(choices, options);
152
- return processChoice(choice, item, options);
153
- }
154
- /**
155
- * Build available choices for user
156
- */
157
- function buildChoices(item, isError) {
158
- const choices = [
159
- { key: 'a', description: 'Approve (include in commit)', available: !isError },
160
- { key: 'r', description: 'Reject (exclude from commit)', available: true },
161
- { key: 'i', description: 'Ignore (add to .gitignore)', available: true },
162
- { key: 'm', description: 'Move to different location', available: !item.allowedInLocation },
163
- { key: 'v', description: 'View file content', available: true },
164
- { key: 'e', description: 'Edit file', available: true },
165
- { key: 's', description: 'Skip for now', available: false }, // Not implemented yet
166
- { key: 'h', description: 'Show help', available: true },
167
- ];
168
- return choices;
169
- }
170
- /**
171
- * Get user choice
172
- */
173
- async function getUserChoice(choices, options) {
174
- const availableChoices = choices.filter(c => c.available);
175
- console.log('\n Available actions:');
176
- for (const choice of availableChoices) {
177
- console.log(` [${choice.key}] ${choice.description}`);
178
- }
179
- if (options.batchMode) {
180
- console.log(' [all] Apply to all similar files');
181
- }
182
- const rl = createInterface({
183
- input: process.stdin,
184
- output: process.stdout,
185
- });
186
- return new Promise(resolve => {
187
- const askQuestion = () => {
188
- rl.question('\n Your choice: ', answer => {
189
- const choice = answer.trim().toLowerCase();
190
- if (choice === 'h') {
191
- displayHelp();
192
- askQuestion();
193
- }
194
- else if (availableChoices.some(c => c.key === choice) || choice === 'all') {
195
- rl.close();
196
- resolve(choice);
197
- }
198
- else {
199
- console.log(' Invalid choice. Please try again.');
200
- askQuestion();
201
- }
202
- });
203
- };
204
- askQuestion();
205
- });
206
- }
207
- /**
208
- * Process user choice into action
209
- */
210
- function processChoice(choice, item, options) {
211
- switch (choice) {
212
- case 'a':
213
- return { type: 'approve', filePath: item.filePath };
214
- case 'r':
215
- return { type: 'reject', filePath: item.filePath, reason: 'User rejected' };
216
- case 'i':
217
- return { type: 'ignore', filePath: item.filePath };
218
- case 'm': {
219
- const targetDir = getMoveTarget(item);
220
- return { type: 'move', filePath: item.filePath, target: targetDir };
221
- }
222
- case 'v':
223
- viewFileContent(item.filePath);
224
- return processChoice(choice, item, options); // Re-prompt after viewing
225
- case 'e':
226
- editFile(item.filePath);
227
- return processChoice(choice, item, options); // Re-prompt after editing
228
- default:
229
- return { type: 'reject', filePath: item.filePath, reason: 'Invalid choice' };
230
- }
231
- }
232
- /**
233
- * Get move target from suggestions
234
- */
235
- function getMoveTarget(item) {
236
- const moveSuggestions = item.suggestions.filter(s => s.includes('Move') || s.includes('move'));
237
- if (moveSuggestions.length > 0) {
238
- console.log('\n Suggested locations:');
239
- for (let i = 0; i < moveSuggestions.length; i++) {
240
- console.log(` ${i + 1}. ${moveSuggestions[i]}`);
241
- }
242
- // For now, extract first suggested directory
243
- const firstSuggestion = moveSuggestions[0];
244
- if (firstSuggestion) {
245
- const dirMatch = firstSuggestion.match(/(?:to|in)\s+(\w+\/)/);
246
- return dirMatch ? dirMatch[1] : 'scripts/';
247
- }
248
- }
249
- return 'scripts/'; // Default fallback
250
- }
251
- /**
252
- * View file content
253
- */
254
- function viewFileContent(filePath) {
255
- try {
256
- const content = readFileSync(filePath, 'utf8');
257
- const lines = content.split('\n');
258
- console.log(`\n Content of ${filePath}:`);
259
- console.log(' ' + '='.repeat(50));
260
- // Show first 20 lines
261
- for (let i = 0; i < Math.min(20, lines.length); i++) {
262
- console.log(` ${(i + 1).toString().padStart(3)}: ${lines[i]}`);
263
- }
264
- if (lines.length > 20) {
265
- console.log(` ... (${lines.length - 20} more lines)`);
266
- }
267
- console.log(' ' + '='.repeat(50));
268
- }
269
- catch (error) {
270
- console.log(` Error reading file: ${error instanceof Error ? error.message : String(error)}`);
271
- }
272
- }
273
- /**
274
- * Edit file (placeholder - would open in editor)
275
- */
276
- function editFile(filePath) {
277
- console.log(`\n Opening ${filePath} in editor...`);
278
- console.log(' (This would open your default editor in a real implementation)');
279
- console.log(' Press Enter to continue after editing...');
280
- // In a real implementation, this would:
281
- // 1. Open the file in the user's default editor
282
- // 2. Wait for the editor to close
283
- // 3. Re-analyze the file for issues
284
- }
285
- /**
286
- * Apply action to result
287
- */
288
- function applyAction(action, result) {
289
- switch (action.type) {
290
- case 'approve':
291
- result.approved.push(action.filePath);
292
- break;
293
- case 'reject':
294
- result.rejected.push(action.filePath);
295
- break;
296
- case 'move':
297
- if (action.target) {
298
- result.moved.push({ from: action.filePath, to: action.target });
299
- }
300
- break;
301
- case 'ignore':
302
- result.ignored.push(action.filePath);
303
- break;
304
- }
305
- }
306
- /**
307
- * Display approval summary
308
- */
309
- function displayApprovalSummary(items) {
310
- console.log('\n' + '='.repeat(60));
311
- console.log('🔍 SMART GIT PUSH - VALIDATION RESULTS');
312
- console.log('='.repeat(60));
313
- const errorCount = items.filter(item => item.severity === 'error').length;
314
- const warningCount = items.filter(item => item.severity === 'warning').length;
315
- const infoCount = items.filter(item => item.severity === 'info').length;
316
- console.log(`📊 Summary: ${items.length} files with issues`);
317
- console.log(` 🚨 Errors: ${errorCount}`);
318
- console.log(` ⚠️ Warnings: ${warningCount}`);
319
- console.log(` 💡 Info: ${infoCount}`);
320
- if (errorCount > 0) {
321
- console.log('\n❌ Files with errors must be resolved before proceeding');
322
- }
323
- console.log('\n📋 Review each file and choose an action:');
324
- }
325
- /**
326
- * Get final confirmation
327
- */
328
- async function getFinalConfirmation(result, options) {
329
- console.log('\n' + '='.repeat(60));
330
- console.log('📋 FINAL SUMMARY');
331
- console.log('='.repeat(60));
332
- console.log(`✅ Approved: ${result.approved.length} files`);
333
- console.log(`❌ Rejected: ${result.rejected.length} files`);
334
- console.log(`📁 To Move: ${result.moved.length} files`);
335
- console.log(`🙈 To Ignore: ${result.ignored.length} files`);
336
- if (result.approved.length > 0) {
337
- console.log('\n✅ Files to be committed:');
338
- for (const file of result.approved) {
339
- console.log(` - ${file}`);
340
- }
341
- }
342
- if (result.rejected.length > 0) {
343
- console.log('\n❌ Files excluded from commit:');
344
- for (const file of result.rejected) {
345
- console.log(` - ${file}`);
346
- }
347
- }
348
- if (result.moved.length > 0) {
349
- console.log('\n📁 Files to be moved:');
350
- for (const move of result.moved) {
351
- console.log(` - ${move.from} → ${move.to}`);
352
- }
353
- }
354
- if (options.dryRun) {
355
- console.log('\n🔍 DRY RUN - No actual changes will be made');
356
- return true;
357
- }
358
- const rl = createInterface({
359
- input: process.stdin,
360
- output: process.stdout,
361
- });
362
- return new Promise(resolve => {
363
- rl.question('\n🚀 Proceed with git push? (y/N): ', answer => {
364
- rl.close();
365
- const proceed = answer.trim().toLowerCase() === 'y' || answer.trim().toLowerCase() === 'yes';
366
- resolve(proceed);
367
- });
368
- });
369
- }
370
- /**
371
- * Display help
372
- */
373
- function displayHelp() {
374
- console.log('\n' + '='.repeat(40));
375
- console.log('📖 HELP');
376
- console.log('='.repeat(40));
377
- console.log('Actions:');
378
- console.log(' [a] Approve - Include file in commit');
379
- console.log(' [r] Reject - Exclude file from commit');
380
- console.log(' [i] Ignore - Add file to .gitignore');
381
- console.log(' [m] Move - Move file to appropriate location');
382
- console.log(' [v] View - Show file content');
383
- console.log(' [e] Edit - Open file in editor');
384
- console.log(' [h] Help - Show this help');
385
- console.log('');
386
- console.log('Tips:');
387
- console.log(' - Files with errors must be resolved before proceeding');
388
- console.log(' - Use [m] to move files to proper directories');
389
- console.log(' - Use [i] to permanently ignore temporary files');
390
- console.log(' - Use [v] to examine file content before deciding');
391
- console.log('='.repeat(40));
392
- }
393
- /**
394
- * Batch approval for similar files
395
- */
396
- export function batchApproval(items, action, criteria) {
397
- const actions = [];
398
- const referenceItem = items.find(item => item.filePath === action.filePath);
399
- if (!referenceItem) {
400
- return [action];
401
- }
402
- for (const item of items) {
403
- let matches = true;
404
- if (criteria.sameSeverity && item.severity !== referenceItem.severity) {
405
- matches = false;
406
- }
407
- if (criteria.sameIssueType) {
408
- const itemTypes = item.issues.map(i => i.type);
409
- const refTypes = referenceItem.issues.map(i => i.type);
410
- if (!itemTypes.some(type => refTypes.includes(type))) {
411
- matches = false;
412
- }
413
- }
414
- if (matches) {
415
- actions.push({
416
- type: action.type,
417
- filePath: item.filePath,
418
- target: action.target,
419
- reason: `Batch ${action.type} - similar to ${action.filePath}`,
420
- });
421
- }
422
- }
423
- return actions;
424
- }
425
- /**
426
- * Save approval preferences for future use
427
- */
428
- export async function saveApprovalPreferences(actions, configPath = '.smartgit-approvals.json') {
429
- try {
430
- const preferences = {
431
- timestamp: new Date().toISOString(),
432
- actions: actions.map(action => ({
433
- pattern: action.filePath.replace(/[^/]+$/, '*'), // Replace filename with wildcard
434
- type: action.type,
435
- reason: action.reason,
436
- })),
437
- };
438
- writeFileSync(configPath, JSON.stringify(preferences, null, 2));
439
- console.log(`\n💾 Approval preferences saved to ${configPath}`);
440
- }
441
- catch (error) {
442
- console.log(`\n⚠️ Could not save preferences: ${error instanceof Error ? error.message : String(error)}`);
443
- }
444
- }
445
- //# sourceMappingURL=interactive-approval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive-approval.js","sourceRoot":"","sources":["../../../src/utils/interactive-approval.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Enterprise Location-based filtering system with Tree-sitter intelligence
3
- *
4
- * Determines if files are in appropriate locations based on their type and content
5
- * Enhanced with AI-powered code analysis for multi-language DevOps stacks
6
- */
7
- import { type CodeAnalysisResult } from './tree-sitter-analyzer.js';
8
- /**
9
- * Rule for validating file locations based on type and content
10
- */
11
- export interface LocationRule {
12
- /** Name of the location rule */
13
- name: string;
14
- /** Description of what the rule validates */
15
- description: string;
16
- /** Pattern to match file names */
17
- filePattern: RegExp;
18
- /** Optional pattern to match file content */
19
- contentPattern?: RegExp;
20
- /** Paths where files matching this rule are allowed */
21
- allowedPaths: string[];
22
- /** Paths where files matching this rule are blocked */
23
- blockedPaths: string[];
24
- /** Severity level of violations */
25
- severity: 'error' | 'warning' | 'info';
26
- /** Category of the rule */
27
- category: 'development' | 'security' | 'temporary' | 'testing';
28
- }
29
- /**
30
- * Result of location validation for a file
31
- */
32
- export interface LocationValidationResult {
33
- /** Whether the file location is valid */
34
- isValid: boolean;
35
- /** Rule that was matched (if any) */
36
- rule?: LocationRule;
37
- /** Current path of the file */
38
- currentPath: string;
39
- /** Suggested alternative paths */
40
- suggestedPaths: string[];
41
- /** Severity of the validation result */
42
- severity: 'error' | 'warning' | 'info';
43
- /** Human-readable validation message */
44
- message: string;
45
- /** Tree-sitter analysis results (if available) */
46
- treeSitterAnalysis?: CodeAnalysisResult;
47
- /** AI-powered intelligent reasons for the validation */
48
- intelligentReasons?: string[];
49
- }
50
- /**
51
- * Default location rules for common development artifacts
52
- */
53
- export declare const DEFAULT_LOCATION_RULES: LocationRule[];
54
- /**
55
- * Enhanced file location validation with tree-sitter intelligence
56
- */
57
- export declare function validateFileLocationIntelligent(filePath: string, content?: string, customRules?: LocationRule[]): Promise<LocationValidationResult>;
58
- /**
59
- * Legacy function for backward compatibility
60
- * Validate file location against rules
61
- */
62
- export declare function validateFileLocation(filePath: string, content?: string, customRules?: LocationRule[]): LocationValidationResult;
63
- /**
64
- * Get location suggestions for a file (backward compatible overloads)
65
- */
66
- export declare function getLocationSuggestions(filePath: string, categoryOrDescription?: 'development' | 'security' | 'temporary' | 'testing' | string): string[] | {
67
- suggestions: string[];
68
- category: string;
69
- };
70
- /**
71
- * Check if a file should be ignored based on common patterns
72
- */
73
- export declare function shouldIgnoreFile(filePath: string): {
74
- shouldIgnore: boolean;
75
- reason: string;
76
- severity: 'error' | 'warning' | 'info';
77
- };
78
- /**
79
- * Create a custom location rule
80
- */
81
- export declare function createLocationRule(name: string, description: string, filePattern: string, allowedPaths: string[], blockedPaths?: string[], severity?: 'error' | 'warning' | 'info', category?: 'development' | 'security' | 'temporary' | 'testing', contentPattern?: string): LocationRule;
82
- /**
83
- * Load location rules from project configuration
84
- */
85
- export declare function loadLocationRules(_projectPath: string): LocationRule[];
86
- /**
87
- * Validate multiple files at once
88
- */
89
- export declare function validateMultipleFiles(filePaths: string[], fileContents?: string[], customRules?: LocationRule[]): LocationValidationResult[];
90
- /**
91
- * Get summary statistics for location validation
92
- */
93
- export declare function getLocationValidationSummary(results: Array<LocationValidationResult & {
94
- filePath: string;
95
- }>): {
96
- totalFiles: number;
97
- validFiles: number;
98
- invalidFiles: number;
99
- errorCount: number;
100
- warningCount: number;
101
- infoCount: number;
102
- categorySummary: Record<string, number>;
103
- };
104
- //# sourceMappingURL=location-filter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"location-filter.d.ts","sourceRoot":"","sources":["../../../src/utils/location-filter.ts"],"names":[],"mappings":"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"}