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.
- package/dist/.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/resources/adrs-review-resource.d.ts +0 -82
- package/dist/src/resources/adrs-review-resource.d.ts.map +0 -1
- package/dist/src/resources/adrs-review-resource.js +0 -160
- package/dist/src/resources/adrs-review-resource.js.map +0 -1
- package/dist/src/resources/architectural-context-resource.d.ts +0 -95
- package/dist/src/resources/architectural-context-resource.d.ts.map +0 -1
- package/dist/src/resources/architectural-context-resource.js +0 -428
- package/dist/src/resources/architectural-context-resource.js.map +0 -1
- package/dist/src/resources/memory-expand-resource.d.ts +0 -90
- package/dist/src/resources/memory-expand-resource.d.ts.map +0 -1
- package/dist/src/resources/memory-expand-resource.js +0 -176
- package/dist/src/resources/memory-expand-resource.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -9
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -13
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/interactive-approval.d.ts +0 -63
- package/dist/src/utils/interactive-approval.d.ts.map +0 -1
- package/dist/src/utils/interactive-approval.js +0 -445
- package/dist/src/utils/interactive-approval.js.map +0 -1
- package/dist/src/utils/location-filter.d.ts +0 -104
- package/dist/src/utils/location-filter.d.ts.map +0 -1
- package/dist/src/utils/location-filter.js +0 -593
- package/dist/src/utils/location-filter.js.map +0 -1
|
@@ -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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"}
|