mcp-adr-analysis-server 2.0.12 โ 2.0.13
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/README.md +45 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +132 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +23 -0
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -0
- package/dist/src/tools/deployment-readiness-tool.js +696 -0
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -0
- package/dist/src/tools/smart-git-push-tool-v2.d.ts +14 -0
- package/dist/src/tools/smart-git-push-tool-v2.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.js +415 -20
- package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
- package/dist/src/tools/todo-management-tool-v2.d.ts +39 -0
- package/dist/src/tools/todo-management-tool-v2.d.ts.map +1 -1
- package/dist/src/tools/todo-management-tool-v2.js +229 -5
- package/dist/src/tools/todo-management-tool-v2.js.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-readiness-tool.js","sourceRoot":"","sources":["../../../src/tools/deployment-readiness-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,12 @@ interface SmartGitPushArgs {
|
|
|
28
28
|
dryRun?: boolean;
|
|
29
29
|
projectPath?: string;
|
|
30
30
|
forceUnsafe?: boolean;
|
|
31
|
+
humanOverrides?: HumanOverride[];
|
|
32
|
+
requestHumanConfirmation?: boolean;
|
|
33
|
+
checkDeploymentReadiness?: boolean;
|
|
34
|
+
targetEnvironment?: 'staging' | 'production' | 'integration';
|
|
35
|
+
enforceDeploymentReadiness?: boolean;
|
|
36
|
+
strictDeploymentMode?: boolean;
|
|
31
37
|
}
|
|
32
38
|
interface TestResults {
|
|
33
39
|
success: boolean;
|
|
@@ -43,6 +49,14 @@ interface TestResults {
|
|
|
43
49
|
failed: number;
|
|
44
50
|
}>;
|
|
45
51
|
}
|
|
52
|
+
interface HumanOverride {
|
|
53
|
+
path: string;
|
|
54
|
+
purpose: string;
|
|
55
|
+
userConfirmed: boolean;
|
|
56
|
+
timestamp: string;
|
|
57
|
+
overrideReason: 'security-exception' | 'business-requirement' | 'deployment-necessity' | 'temporary-debug' | 'other';
|
|
58
|
+
additionalContext?: string;
|
|
59
|
+
}
|
|
46
60
|
/**
|
|
47
61
|
* Exported smart git push function
|
|
48
62
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-git-push-tool-v2.d.ts","sourceRoot":"","sources":["../../../src/tools/smart-git-push-tool-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"smart-git-push-tool-v2.d.ts","sourceRoot":"","sources":["../../../src/tools/smart-git-push-tool-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAGnC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC;IAC7D,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAwBD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,iBAAiB,GAAG,OAAO,CAAC;IACrH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAglCD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAa9E"}
|
|
@@ -30,7 +30,7 @@ import { validateMcpResponse } from '../utils/mcp-response-validator.js';
|
|
|
30
30
|
* Main smart git push function - Security and Metrics Focused
|
|
31
31
|
*/
|
|
32
32
|
async function smartGitPushV2(args) {
|
|
33
|
-
const { branch, message, testResults, skipSecurity = false, dryRun = false, projectPath = process.cwd(), forceUnsafe = false } = args;
|
|
33
|
+
const { branch, message, testResults, skipSecurity = false, dryRun = false, projectPath = process.cwd(), forceUnsafe = false, humanOverrides = [], requestHumanConfirmation = false, checkDeploymentReadiness = false, targetEnvironment = 'production', enforceDeploymentReadiness = false, strictDeploymentMode = true } = args;
|
|
34
34
|
try {
|
|
35
35
|
// Step 1: Get staged files
|
|
36
36
|
const stagedFiles = await getStagedFiles(projectPath);
|
|
@@ -50,15 +50,61 @@ async function smartGitPushV2(args) {
|
|
|
50
50
|
}
|
|
51
51
|
// Step 3: Check for irrelevant files
|
|
52
52
|
const irrelevantFiles = await checkIrrelevantFiles(stagedFiles);
|
|
53
|
-
// Step 4:
|
|
54
|
-
const
|
|
53
|
+
// Step 4: Apply human overrides to security issues and irrelevant files
|
|
54
|
+
const { filteredSecurityIssues, filteredIrrelevantFiles, confirmationRequests } = await applyHumanOverrides(securityIssues, irrelevantFiles, humanOverrides, requestHumanConfirmation);
|
|
55
|
+
// Step 5: Check for confirmation requests
|
|
56
|
+
if (confirmationRequests.length > 0 && requestHumanConfirmation) {
|
|
57
|
+
return {
|
|
58
|
+
content: [{
|
|
59
|
+
type: 'text',
|
|
60
|
+
text: generateConfirmationRequestResponse(confirmationRequests, stagedFiles)
|
|
61
|
+
}]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Step 5.5: Deployment Readiness Check (NEW)
|
|
65
|
+
if (checkDeploymentReadiness || enforceDeploymentReadiness) {
|
|
66
|
+
const { deploymentReadiness } = await import('./deployment-readiness-tool.js');
|
|
67
|
+
const readinessCheck = await deploymentReadiness({
|
|
68
|
+
operation: 'full_audit',
|
|
69
|
+
projectPath,
|
|
70
|
+
targetEnvironment,
|
|
71
|
+
strictMode: strictDeploymentMode,
|
|
72
|
+
// Test Gates - Zero tolerance for failures
|
|
73
|
+
maxTestFailures: 0,
|
|
74
|
+
requireTestCoverage: 80,
|
|
75
|
+
blockOnFailingTests: true,
|
|
76
|
+
// Deployment History Gates
|
|
77
|
+
maxRecentFailures: 2,
|
|
78
|
+
deploymentSuccessThreshold: 80,
|
|
79
|
+
blockOnRecentFailures: true,
|
|
80
|
+
rollbackFrequencyThreshold: 20,
|
|
81
|
+
// Integration with existing systems
|
|
82
|
+
integrateTodoTasks: true,
|
|
83
|
+
updateHealthScoring: true
|
|
84
|
+
});
|
|
85
|
+
// Hard block if deployment is not ready and enforcement is enabled
|
|
86
|
+
if (!readinessCheck.isDeploymentReady && (enforceDeploymentReadiness || strictDeploymentMode)) {
|
|
87
|
+
return {
|
|
88
|
+
content: [{
|
|
89
|
+
type: 'text',
|
|
90
|
+
text: generateDeploymentReadinessBlockResponse(readinessCheck, stagedFiles, targetEnvironment)
|
|
91
|
+
}]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Soft warning if just checking but not enforcing
|
|
95
|
+
if (!readinessCheck.isDeploymentReady && checkDeploymentReadiness && !enforceDeploymentReadiness) {
|
|
96
|
+
// Continue with push but include warning in success response
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Step 6: Check blocking conditions (after overrides)
|
|
100
|
+
const hasCriticalSecurity = filteredSecurityIssues.some(issue => issue.severity === 'critical');
|
|
55
101
|
const hasFailedTests = testResults && !testResults.success;
|
|
56
102
|
const shouldBlock = (hasCriticalSecurity || hasFailedTests) && !forceUnsafe;
|
|
57
103
|
if (shouldBlock) {
|
|
58
104
|
return {
|
|
59
105
|
content: [{
|
|
60
106
|
type: 'text',
|
|
61
|
-
text: generateBlockedResponse(
|
|
107
|
+
text: generateBlockedResponse(filteredSecurityIssues, filteredIrrelevantFiles, testResults, humanOverrides)
|
|
62
108
|
}]
|
|
63
109
|
};
|
|
64
110
|
}
|
|
@@ -74,7 +120,7 @@ async function smartGitPushV2(args) {
|
|
|
74
120
|
return {
|
|
75
121
|
content: [{
|
|
76
122
|
type: 'text',
|
|
77
|
-
text: generateSuccessResponse(stagedFiles,
|
|
123
|
+
text: generateSuccessResponse(stagedFiles, filteredSecurityIssues, filteredIrrelevantFiles, testResults, pushResult, branch, humanOverrides)
|
|
78
124
|
}]
|
|
79
125
|
};
|
|
80
126
|
}
|
|
@@ -83,7 +129,7 @@ async function smartGitPushV2(args) {
|
|
|
83
129
|
return {
|
|
84
130
|
content: [{
|
|
85
131
|
type: 'text',
|
|
86
|
-
text: generateDryRunResponse(stagedFiles,
|
|
132
|
+
text: generateDryRunResponse(stagedFiles, filteredSecurityIssues, filteredIrrelevantFiles, testResults, branch)
|
|
87
133
|
}]
|
|
88
134
|
};
|
|
89
135
|
}
|
|
@@ -393,6 +439,142 @@ function getIrrelevantFileRecommendation(reason) {
|
|
|
393
439
|
default: return 'Consider adding to .gitignore';
|
|
394
440
|
}
|
|
395
441
|
}
|
|
442
|
+
// Human Override Functions
|
|
443
|
+
/**
|
|
444
|
+
* Apply human overrides to security issues and irrelevant files
|
|
445
|
+
*/
|
|
446
|
+
async function applyHumanOverrides(securityIssues, irrelevantFiles, humanOverrides, requestConfirmation) {
|
|
447
|
+
const confirmationRequests = [];
|
|
448
|
+
// Filter security issues based on human overrides
|
|
449
|
+
const filteredSecurityIssues = securityIssues.filter(issue => {
|
|
450
|
+
const override = humanOverrides.find(o => o.path === issue.file && o.userConfirmed);
|
|
451
|
+
if (override) {
|
|
452
|
+
return false; // Remove from blocking issues
|
|
453
|
+
}
|
|
454
|
+
// If requesting confirmation and no override exists, create confirmation request
|
|
455
|
+
if (requestConfirmation && !humanOverrides.find(o => o.path === issue.file)) {
|
|
456
|
+
confirmationRequests.push({
|
|
457
|
+
path: issue.file,
|
|
458
|
+
detectedIssue: issue,
|
|
459
|
+
suggestedPurpose: analyzeFilePurpose(issue.file),
|
|
460
|
+
riskLevel: issue.severity,
|
|
461
|
+
alternatives: generateAlternatives(issue)
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
return true; // Keep issue if no override
|
|
465
|
+
});
|
|
466
|
+
// Filter irrelevant files based on human overrides
|
|
467
|
+
const filteredIrrelevantFiles = irrelevantFiles.filter(file => {
|
|
468
|
+
const override = humanOverrides.find(o => o.path === file.path && o.userConfirmed);
|
|
469
|
+
if (override) {
|
|
470
|
+
return false; // Remove from irrelevant files
|
|
471
|
+
}
|
|
472
|
+
// If requesting confirmation and no override exists, create confirmation request
|
|
473
|
+
if (requestConfirmation && !humanOverrides.find(o => o.path === file.path)) {
|
|
474
|
+
confirmationRequests.push({
|
|
475
|
+
path: file.path,
|
|
476
|
+
detectedIssue: file,
|
|
477
|
+
suggestedPurpose: analyzeFilePurpose(file.path),
|
|
478
|
+
riskLevel: 'medium',
|
|
479
|
+
alternatives: generateAlternatives(file)
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
return true; // Keep file if no override
|
|
483
|
+
});
|
|
484
|
+
return {
|
|
485
|
+
filteredSecurityIssues,
|
|
486
|
+
filteredIrrelevantFiles,
|
|
487
|
+
confirmationRequests
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Analyze file purpose using LLM-style heuristics
|
|
492
|
+
*/
|
|
493
|
+
function analyzeFilePurpose(filePath) {
|
|
494
|
+
const fileName = filePath.toLowerCase();
|
|
495
|
+
// Configuration files
|
|
496
|
+
if (fileName.includes('config') || fileName.endsWith('.config.js') || fileName.endsWith('.config.ts')) {
|
|
497
|
+
return 'Configuration file - may contain environment-specific settings';
|
|
498
|
+
}
|
|
499
|
+
// Build/deployment files
|
|
500
|
+
if (fileName.includes('build') || fileName.includes('dist') || fileName.includes('deploy')) {
|
|
501
|
+
return 'Build or deployment artifact - usually not committed to source control';
|
|
502
|
+
}
|
|
503
|
+
// Development/debug files
|
|
504
|
+
if (fileName.includes('debug') || fileName.includes('test') || fileName.includes('temp')) {
|
|
505
|
+
return 'Development or debugging file - may be temporary';
|
|
506
|
+
}
|
|
507
|
+
// IDE/editor files
|
|
508
|
+
if (fileName.includes('.vscode') || fileName.includes('.idea') || fileName.includes('.settings')) {
|
|
509
|
+
return 'IDE/editor configuration - user-specific preferences';
|
|
510
|
+
}
|
|
511
|
+
// Log files
|
|
512
|
+
if (fileName.includes('log') || fileName.endsWith('.log')) {
|
|
513
|
+
return 'Log file - runtime data that changes frequently';
|
|
514
|
+
}
|
|
515
|
+
// Security-related
|
|
516
|
+
if (fileName.includes('key') || fileName.includes('secret') || fileName.includes('credential')) {
|
|
517
|
+
return 'Security-sensitive file - may contain credentials or keys';
|
|
518
|
+
}
|
|
519
|
+
// Cache/temporary
|
|
520
|
+
if (fileName.includes('cache') || fileName.includes('node_modules') || fileName.includes('.cache')) {
|
|
521
|
+
return 'Cache or temporary data - generated content';
|
|
522
|
+
}
|
|
523
|
+
return 'Unknown purpose - manual review recommended';
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Generate alternatives for problematic files
|
|
527
|
+
*/
|
|
528
|
+
function generateAlternatives(issue) {
|
|
529
|
+
const alternatives = [];
|
|
530
|
+
if ('severity' in issue) {
|
|
531
|
+
// Security issue alternatives
|
|
532
|
+
switch (issue.type) {
|
|
533
|
+
case 'api-key':
|
|
534
|
+
alternatives.push('Move to environment variables (.env file)');
|
|
535
|
+
alternatives.push('Use secure credential management service');
|
|
536
|
+
alternatives.push('Store in CI/CD pipeline secrets');
|
|
537
|
+
break;
|
|
538
|
+
case 'private-key':
|
|
539
|
+
alternatives.push('Use key management service (AWS KMS, Azure Key Vault)');
|
|
540
|
+
alternatives.push('Store locally and reference by path');
|
|
541
|
+
alternatives.push('Use certificate-based authentication');
|
|
542
|
+
break;
|
|
543
|
+
case 'token':
|
|
544
|
+
alternatives.push('Generate token at runtime');
|
|
545
|
+
alternatives.push('Use OAuth flow instead of static tokens');
|
|
546
|
+
alternatives.push('Store in secure credential store');
|
|
547
|
+
break;
|
|
548
|
+
default:
|
|
549
|
+
alternatives.push('Use environment variables');
|
|
550
|
+
alternatives.push('External configuration management');
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
// Irrelevant file alternatives
|
|
555
|
+
switch (issue.reason) {
|
|
556
|
+
case 'build-artifact':
|
|
557
|
+
alternatives.push('Add to .gitignore and rebuild on deployment');
|
|
558
|
+
alternatives.push('Use CI/CD pipeline to generate artifacts');
|
|
559
|
+
alternatives.push('Store in artifact repository (npm, Docker registry)');
|
|
560
|
+
break;
|
|
561
|
+
case 'temp-file':
|
|
562
|
+
alternatives.push('Delete file after use');
|
|
563
|
+
alternatives.push('Add to .gitignore');
|
|
564
|
+
alternatives.push('Use system temp directory');
|
|
565
|
+
break;
|
|
566
|
+
case 'ide-config':
|
|
567
|
+
alternatives.push('Add to .gitignore');
|
|
568
|
+
alternatives.push('Create shared .vscode/settings.json for team settings');
|
|
569
|
+
alternatives.push('Document setup instructions in README');
|
|
570
|
+
break;
|
|
571
|
+
default:
|
|
572
|
+
alternatives.push('Add to .gitignore');
|
|
573
|
+
alternatives.push('Review if file is necessary');
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return alternatives;
|
|
577
|
+
}
|
|
396
578
|
// Response generators
|
|
397
579
|
function createNoChangesResponse(metricsText) {
|
|
398
580
|
return '# Smart Git Push - No Changes\n\n' +
|
|
@@ -400,12 +582,70 @@ function createNoChangesResponse(metricsText) {
|
|
|
400
582
|
'No staged files found. Use git add to stage files before pushing.\n\n' +
|
|
401
583
|
'## Deployment Metrics\n' +
|
|
402
584
|
metricsText + '\n\n' +
|
|
403
|
-
'##
|
|
404
|
-
'
|
|
405
|
-
'
|
|
406
|
-
'
|
|
585
|
+
'## โ ๏ธ IMPORTANT: Selective File Staging\n' +
|
|
586
|
+
'**DO NOT USE:** `git add .` or `git add -A` (stages everything including unintended files)\n\n' +
|
|
587
|
+
'**RECOMMENDED APPROACH:**\n' +
|
|
588
|
+
'1. Review changes: `git status` and `git diff`\n' +
|
|
589
|
+
'2. Stage specific files: `git add <specific-file>`\n' +
|
|
590
|
+
'3. Verify staged files: `git diff --cached`\n' +
|
|
591
|
+
'4. Only then commit and push\n\n' +
|
|
592
|
+
'## Safe Commands\n' +
|
|
593
|
+
'- `git status` - Check current status\n' +
|
|
594
|
+
'- `git diff` - See unstaged changes\n' +
|
|
595
|
+
'- `git add <specific-file>` - Stage specific file only\n' +
|
|
596
|
+
'- `git diff --cached` - Review staged changes\n\n' +
|
|
597
|
+
'## ๐ Deployment Readiness Checklist\n' +
|
|
598
|
+
'- [ ] All tests passing locally\n' +
|
|
599
|
+
'- [ ] Code reviewed and approved\n' +
|
|
600
|
+
'- [ ] No sensitive data in changes\n' +
|
|
601
|
+
'- [ ] Documentation updated if needed\n' +
|
|
602
|
+
'- [ ] Deployment strategy confirmed';
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Generate confirmation request response for human override
|
|
606
|
+
*/
|
|
607
|
+
function generateConfirmationRequestResponse(confirmationRequests, stagedFiles) {
|
|
608
|
+
let response = '# Smart Git Push - Human Confirmation Required ๐ค\n\n' +
|
|
609
|
+
'## Files Requiring Manual Review\n\n' +
|
|
610
|
+
`The LLM has detected ${confirmationRequests.length} files that need your confirmation before proceeding.\n\n`;
|
|
611
|
+
confirmationRequests.forEach((request, index) => {
|
|
612
|
+
const isSecurityIssue = 'severity' in request.detectedIssue;
|
|
613
|
+
const riskEmoji = request.riskLevel === 'critical' ? '๐ด' :
|
|
614
|
+
request.riskLevel === 'high' ? '๐ ' :
|
|
615
|
+
request.riskLevel === 'medium' ? '๐ก' : '๐ข';
|
|
616
|
+
response += `### ${index + 1}. ${jsonSafeFilePath(request.path)} ${riskEmoji}\n\n` +
|
|
617
|
+
`**Detected Issue**: ${isSecurityIssue ? 'Security Risk' : 'Irrelevant File'}\n` +
|
|
618
|
+
`**Risk Level**: ${request.riskLevel.toUpperCase()}\n` +
|
|
619
|
+
`**LLM Analysis**: ${request.suggestedPurpose}\n\n` +
|
|
620
|
+
`**Recommended Alternatives**:\n${request.alternatives.map(alt => `- ${alt}`).join('\n')}\n\n` +
|
|
621
|
+
`**To Override**: Confirm this file's purpose and business justification.\n\n`;
|
|
622
|
+
});
|
|
623
|
+
response += '## Override Instructions\n\n' +
|
|
624
|
+
'To proceed with these files, rerun the command with human overrides:\n\n' +
|
|
625
|
+
'```json\n' +
|
|
626
|
+
'{\n' +
|
|
627
|
+
' "operation": "smart_git_push",\n' +
|
|
628
|
+
' "humanOverrides": [\n' +
|
|
629
|
+
confirmationRequests.map(req => ' {\n' +
|
|
630
|
+
` "path": "${req.path}",\n` +
|
|
631
|
+
` "purpose": "YOUR_BUSINESS_JUSTIFICATION_HERE",\n` +
|
|
632
|
+
' "userConfirmed": true,\n' +
|
|
633
|
+
` "timestamp": "${new Date().toISOString()}",\n` +
|
|
634
|
+
' "overrideReason": "business-requirement", // or security-exception, deployment-necessity, etc.\n' +
|
|
635
|
+
' "additionalContext": "EXPLAIN_WHY_THIS_IS_NECESSARY"\n' +
|
|
636
|
+
' }').join(',\n') + '\n' +
|
|
637
|
+
' ]\n' +
|
|
638
|
+
'}\n' +
|
|
639
|
+
'```\n\n' +
|
|
640
|
+
'## โ ๏ธ Important Reminders\n' +
|
|
641
|
+
'- **Only override if you understand the business need**\n' +
|
|
642
|
+
'- **Document the purpose clearly**\n' +
|
|
643
|
+
'- **Consider the security implications**\n' +
|
|
644
|
+
'- **Review alternatives before overriding**\n\n' +
|
|
645
|
+
`**Total staged files**: ${stagedFiles.length} | **Files needing confirmation**: ${confirmationRequests.length}`;
|
|
646
|
+
return response;
|
|
407
647
|
}
|
|
408
|
-
function generateBlockedResponse(securityIssues, _irrelevantFiles, testResults) {
|
|
648
|
+
function generateBlockedResponse(securityIssues, _irrelevantFiles, testResults, humanOverrides) {
|
|
409
649
|
let response = '# Smart Git Push - Blocked ๐ซ\n\n## Push Blocked Due to Critical Issues\n\n';
|
|
410
650
|
if (securityIssues.some(i => i.severity === 'critical')) {
|
|
411
651
|
const criticalIssues = securityIssues.filter(i => i.severity === 'critical').map(issue => '- **' + issue.type + '** in ' + jsonSafeFilePath(issue.file) + (issue.line ? ' (line ' + issue.line + ')' : '') + '\n' +
|
|
@@ -421,14 +661,36 @@ function generateBlockedResponse(securityIssues, _irrelevantFiles, testResults)
|
|
|
421
661
|
jsonSafeUserInput(testResults.output) + '\n' +
|
|
422
662
|
'-------\n\n';
|
|
423
663
|
}
|
|
664
|
+
// Show human override status if provided
|
|
665
|
+
if (humanOverrides && humanOverrides.length > 0) {
|
|
666
|
+
response += '## Human Overrides Applied\n';
|
|
667
|
+
humanOverrides.forEach(override => {
|
|
668
|
+
response += `- **${jsonSafeFilePath(override.path)}**: ${override.purpose}\n` +
|
|
669
|
+
` Reason: ${override.overrideReason} | Confirmed: ${override.userConfirmed ? 'โ
' : 'โ'}\n`;
|
|
670
|
+
});
|
|
671
|
+
response += '\n';
|
|
672
|
+
}
|
|
424
673
|
response += '## Required Actions\n' +
|
|
425
674
|
'1. Fix all critical security issues\n' +
|
|
426
675
|
'2. Ensure all tests pass\n' +
|
|
427
|
-
'3. Review and fix any warnings\n
|
|
428
|
-
'
|
|
676
|
+
'3. Review and fix any warnings\n' +
|
|
677
|
+
'4. OR use human overrides with proper justification\n\n' +
|
|
678
|
+
'## โ ๏ธ IMPORTANT: File Staging Best Practices\n' +
|
|
679
|
+
'**NEVER USE:** `git add .` or `git add -A` when fixing issues\n' +
|
|
680
|
+
'**RECOMMENDED:**\n' +
|
|
681
|
+
'1. Fix specific issues in specific files\n' +
|
|
682
|
+
'2. Stage only the fixed files: `git add <fixed-file>`\n' +
|
|
683
|
+
'3. Verify changes: `git diff --cached`\n' +
|
|
684
|
+
'4. Re-run smart git push\n\n' +
|
|
685
|
+
'## Human Override Option\n' +
|
|
686
|
+
'If these issues are expected and have business justification:\n' +
|
|
687
|
+
'1. Use `requestHumanConfirmation: true` to get guided override instructions\n' +
|
|
688
|
+
'2. Provide detailed justification for each file\n' +
|
|
689
|
+
'3. Consider security implications carefully\n\n' +
|
|
690
|
+
'๐ซ Use --forceUnsafe to override (NOT RECOMMENDED)';
|
|
429
691
|
return response;
|
|
430
692
|
}
|
|
431
|
-
function generateSuccessResponse(stagedFiles, securityIssues, irrelevantFiles, testResults, pushResult, branch) {
|
|
693
|
+
function generateSuccessResponse(stagedFiles, securityIssues, irrelevantFiles, testResults, pushResult, branch, humanOverrides) {
|
|
432
694
|
let response = '# Smart Git Push - Success โ
\n\n' +
|
|
433
695
|
'## Push Summary\n' +
|
|
434
696
|
'- **Branch**: ' + (branch || 'current') + '\n' +
|
|
@@ -451,14 +713,38 @@ function generateSuccessResponse(stagedFiles, securityIssues, irrelevantFiles, t
|
|
|
451
713
|
response += '\n\n## Irrelevant Files (Consider .gitignore)\n' +
|
|
452
714
|
irrelevantFiles.map(f => '- ' + jsonSafeFilePath(f.path) + ' (' + f.reason + '): ' + f.recommendation).join('\n');
|
|
453
715
|
}
|
|
716
|
+
// Show human overrides if any were applied
|
|
717
|
+
if (humanOverrides && humanOverrides.length > 0) {
|
|
718
|
+
response += '\n\n## โ
Human Overrides Applied\n' +
|
|
719
|
+
'The following files were explicitly approved by human override:\n' +
|
|
720
|
+
humanOverrides.filter(o => o.userConfirmed).map(override => `- **${jsonSafeFilePath(override.path)}**: ${override.purpose}\n` +
|
|
721
|
+
` Justification: ${override.additionalContext || 'No additional context'}\n` +
|
|
722
|
+
` Override Reason: ${override.overrideReason}\n` +
|
|
723
|
+
` Timestamp: ${new Date(override.timestamp).toLocaleString()}`).join('\n\n') + '\n\n' +
|
|
724
|
+
'๐ **Note**: These overrides have been logged for audit purposes.';
|
|
725
|
+
}
|
|
454
726
|
response += '\n\n## Git Output\n' +
|
|
455
727
|
'-------\n' +
|
|
456
728
|
jsonSafeUserInput(pushResult.output) + '\n' +
|
|
457
729
|
'-------\n\n' +
|
|
458
|
-
'##
|
|
459
|
-
'
|
|
460
|
-
'-
|
|
461
|
-
'-
|
|
730
|
+
'## ๐ Post-Push Deployment Checklist\n' +
|
|
731
|
+
'### Immediate Actions (Next 5 minutes)\n' +
|
|
732
|
+
'- [ ] Monitor CI/CD pipeline status\n' +
|
|
733
|
+
'- [ ] Check automated test results\n' +
|
|
734
|
+
'- [ ] Verify build completion\n' +
|
|
735
|
+
'- [ ] Review any deployment warnings\n\n' +
|
|
736
|
+
'### Deployment Completion (Next 15 minutes)\n' +
|
|
737
|
+
'- [ ] Confirm deployment to staging/production\n' +
|
|
738
|
+
'- [ ] Verify application health checks\n' +
|
|
739
|
+
'- [ ] Test key functionality post-deployment\n' +
|
|
740
|
+
'- [ ] Monitor error rates and performance metrics\n' +
|
|
741
|
+
'- [ ] Update TODO list with deployment status\n\n' +
|
|
742
|
+
'### Documentation & Communication\n' +
|
|
743
|
+
'- [ ] Update deployment notes\n' +
|
|
744
|
+
'- [ ] Notify team of successful deployment\n' +
|
|
745
|
+
'- [ ] Close related tickets/issues\n' +
|
|
746
|
+
'- [ ] Schedule post-deployment review if needed\n\n' +
|
|
747
|
+
'๐ก **Tip**: Use the TODO management tool to track deployment completion tasks!';
|
|
462
748
|
return response;
|
|
463
749
|
}
|
|
464
750
|
function generateDryRunResponse(stagedFiles, securityIssues, irrelevantFiles, testResults, branch) {
|
|
@@ -485,13 +771,28 @@ function generateDryRunResponse(stagedFiles, securityIssues, irrelevantFiles, te
|
|
|
485
771
|
irrelevantFiles.map(f => '- ' + jsonSafeFilePath(f.path) + ' (' + f.reason + ')\n' +
|
|
486
772
|
' ' + f.recommendation).join('\n');
|
|
487
773
|
}
|
|
488
|
-
response += '\n\n##
|
|
774
|
+
response += '\n\n## โ ๏ธ IMPORTANT: Pre-Push Staging Review\n' +
|
|
775
|
+
'**AVOID:** `git add .` or `git add -A` before this tool\n' +
|
|
776
|
+
'**RECOMMENDED:**\n' +
|
|
777
|
+
'1. Review each staged file individually\n' +
|
|
778
|
+
'2. Verify changes: `git diff --cached`\n' +
|
|
779
|
+
'3. Ensure only intended files are staged\n\n' +
|
|
780
|
+
'## Command to Execute\n' +
|
|
489
781
|
'-------\n' +
|
|
490
782
|
'# Run without dry run to actually push\n' +
|
|
491
783
|
'git push' + (branch ? ' origin ' + branch : '') + '\n' +
|
|
492
784
|
'-------\n\n' +
|
|
493
785
|
'**Note:** This was a dry run. No files were pushed.' +
|
|
494
|
-
(wouldBlock ? '\nโ ๏ธ **Warning**: This push would be BLOCKED due to critical issues.' : '')
|
|
786
|
+
(wouldBlock ? '\nโ ๏ธ **Warning**: This push would be BLOCKED due to critical issues.' : '') + '\n\n' +
|
|
787
|
+
'## ๐ Deployment Readiness Assessment\n' +
|
|
788
|
+
(wouldBlock ?
|
|
789
|
+
'โ **NOT READY** - Fix issues above before deployment' :
|
|
790
|
+
'โ
**READY** - This push appears safe for deployment\n\n' +
|
|
791
|
+
'### Post-Push Checklist\n' +
|
|
792
|
+
'- [ ] Monitor CI/CD pipeline\n' +
|
|
793
|
+
'- [ ] Verify deployment health\n' +
|
|
794
|
+
'- [ ] Update TODO tasks\n' +
|
|
795
|
+
'- [ ] Document deployment notes');
|
|
495
796
|
return response;
|
|
496
797
|
}
|
|
497
798
|
function getDeploymentMetricsUpdate() {
|
|
@@ -499,6 +800,100 @@ function getDeploymentMetricsUpdate() {
|
|
|
499
800
|
'- Test results recorded\n' +
|
|
500
801
|
'- Metrics available in .mcp-adr-cache/deploy-history.json';
|
|
501
802
|
}
|
|
803
|
+
/**
|
|
804
|
+
* Generate deployment readiness block response
|
|
805
|
+
*/
|
|
806
|
+
function generateDeploymentReadinessBlockResponse(readinessResult, stagedFiles, targetEnvironment) {
|
|
807
|
+
return `๐จ **DEPLOYMENT BLOCKED - Critical Readiness Issues**
|
|
808
|
+
|
|
809
|
+
## ๐ฏ Deployment Readiness Assessment
|
|
810
|
+
- **Target Environment**: ${targetEnvironment}
|
|
811
|
+
- **Deployment Ready**: โ **NO**
|
|
812
|
+
- **Readiness Score**: ${readinessResult.overallScore || 0}%
|
|
813
|
+
- **Confidence Level**: ${readinessResult.confidence || 0}%
|
|
814
|
+
|
|
815
|
+
## ๐งช Test Validation Issues
|
|
816
|
+
${readinessResult.testFailureBlockers?.length > 0 ? `
|
|
817
|
+
**Test Failures**: ${readinessResult.testValidationResult?.failureCount || 0} failures detected
|
|
818
|
+
**Test Coverage**: ${readinessResult.testValidationResult?.coveragePercentage || 0}% (Required: 80%)
|
|
819
|
+
|
|
820
|
+
### Critical Test Failures:
|
|
821
|
+
${readinessResult.testValidationResult?.criticalTestFailures?.map((f) => `- โ ${f.testSuite}: ${f.testName}`).join('\n') || 'No critical test failures'}
|
|
822
|
+
` : 'โ
All tests passing'}
|
|
823
|
+
|
|
824
|
+
## ๐ Deployment History Issues
|
|
825
|
+
${readinessResult.deploymentHistoryBlockers?.length > 0 ? `
|
|
826
|
+
**Success Rate**: ${readinessResult.deploymentHistoryAnalysis?.successRate || 0}% (Required: 80%)
|
|
827
|
+
**Rollback Rate**: ${readinessResult.deploymentHistoryAnalysis?.rollbackRate || 0}% (Threshold: 20%)
|
|
828
|
+
|
|
829
|
+
### Recent Failure Patterns:
|
|
830
|
+
${readinessResult.deploymentHistoryAnalysis?.failurePatterns?.map((p) => `- **${p.pattern}**: ${p.frequency} occurrences`).join('\n') || 'No failure patterns detected'}
|
|
831
|
+
` : 'โ
Deployment history stable'}
|
|
832
|
+
|
|
833
|
+
## ๐จ Critical Blockers (Must Fix Before Push)
|
|
834
|
+
${readinessResult.criticalBlockers?.map((blocker) => `
|
|
835
|
+
### ${blocker.category.toUpperCase()}: ${blocker.title}
|
|
836
|
+
- **Impact**: ${blocker.impact}
|
|
837
|
+
- **Resolution Steps**: ${blocker.resolutionSteps?.join(' โ ') || 'See deployment readiness tool for details'}
|
|
838
|
+
- **Estimated Time**: ${blocker.estimatedResolutionTime || 'Unknown'}
|
|
839
|
+
`).join('\n') || 'No critical blockers found'}
|
|
840
|
+
|
|
841
|
+
## ๐ Staged Files (${stagedFiles.length} files ready to push)
|
|
842
|
+
${stagedFiles.slice(0, 10).map(file => `- ${file.status}: ${file.path}`).join('\n')}
|
|
843
|
+
${stagedFiles.length > 10 ? `\n... and ${stagedFiles.length - 10} more files` : ''}
|
|
844
|
+
|
|
845
|
+
## ๐ ๏ธ Required Actions Before Git Push
|
|
846
|
+
|
|
847
|
+
### 1. Fix Test Issues
|
|
848
|
+
\`\`\`bash
|
|
849
|
+
# Run tests and identify failures
|
|
850
|
+
npm test
|
|
851
|
+
|
|
852
|
+
# Check detailed test coverage
|
|
853
|
+
npm run test:coverage
|
|
854
|
+
|
|
855
|
+
# Fix failing tests one by one
|
|
856
|
+
\`\`\`
|
|
857
|
+
|
|
858
|
+
### 2. Address Deployment History
|
|
859
|
+
\`\`\`bash
|
|
860
|
+
# Review recent deployment failures
|
|
861
|
+
# Fix underlying infrastructure issues
|
|
862
|
+
# Improve deployment reliability
|
|
863
|
+
\`\`\`
|
|
864
|
+
|
|
865
|
+
### 3. Re-validate Deployment Readiness
|
|
866
|
+
\`\`\`bash
|
|
867
|
+
# Run comprehensive deployment readiness check
|
|
868
|
+
deployment_readiness --operation full_audit --target-environment ${targetEnvironment}
|
|
869
|
+
\`\`\`
|
|
870
|
+
|
|
871
|
+
### 4. Retry Git Push When Ready
|
|
872
|
+
\`\`\`bash
|
|
873
|
+
# Only retry when all blockers are resolved
|
|
874
|
+
smart_git_push --enforce-deployment-readiness --target-environment ${targetEnvironment}
|
|
875
|
+
\`\`\`
|
|
876
|
+
|
|
877
|
+
## โ ๏ธ Emergency Override (Critical Fixes Only)
|
|
878
|
+
If this is a critical security fix or emergency:
|
|
879
|
+
\`\`\`bash
|
|
880
|
+
# Emergency bypass (requires business justification)
|
|
881
|
+
deployment_readiness --operation emergency_override --business-justification "Critical security patch"
|
|
882
|
+
|
|
883
|
+
# Then retry push with force override
|
|
884
|
+
smart_git_push --force-unsafe
|
|
885
|
+
\`\`\`
|
|
886
|
+
|
|
887
|
+
## ๐ Deployment Checklist Integration
|
|
888
|
+
${readinessResult.todoTasksCreated?.length > 0 ? `
|
|
889
|
+
**Auto-Generated Tasks**: ${readinessResult.todoTasksCreated.length} tasks created
|
|
890
|
+
Use \`manage_todo_v2 --operation get_tasks\` to view blocking tasks.
|
|
891
|
+
` : 'No automatic tasks created'}
|
|
892
|
+
|
|
893
|
+
**โ GIT PUSH BLOCKED UNTIL ALL CRITICAL ISSUES ARE RESOLVED**
|
|
894
|
+
|
|
895
|
+
This blocking is enforced to prevent failed deployments and protect ${targetEnvironment} environment stability.`;
|
|
896
|
+
}
|
|
502
897
|
/**
|
|
503
898
|
* Exported smart git push function
|
|
504
899
|
*/
|