mcp-adr-analysis-server 2.0.6 → 2.0.8

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.
Files changed (29) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +70 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/tools/smart-git-push-tool.d.ts +24 -0
  6. package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -0
  7. package/dist/src/tools/smart-git-push-tool.js +480 -0
  8. package/dist/src/tools/smart-git-push-tool.js.map +1 -0
  9. package/dist/src/utils/enhanced-sensitive-detector.d.ts +61 -0
  10. package/dist/src/utils/enhanced-sensitive-detector.d.ts.map +1 -0
  11. package/dist/src/utils/enhanced-sensitive-detector.js +437 -0
  12. package/dist/src/utils/enhanced-sensitive-detector.js.map +1 -0
  13. package/dist/src/utils/interactive-approval.d.ts +63 -0
  14. package/dist/src/utils/interactive-approval.d.ts.map +1 -0
  15. package/dist/src/utils/interactive-approval.js +441 -0
  16. package/dist/src/utils/interactive-approval.js.map +1 -0
  17. package/dist/src/utils/llm-artifact-detector.d.ts +76 -0
  18. package/dist/src/utils/llm-artifact-detector.d.ts.map +1 -0
  19. package/dist/src/utils/llm-artifact-detector.js +422 -0
  20. package/dist/src/utils/llm-artifact-detector.js.map +1 -0
  21. package/dist/src/utils/location-filter.d.ts +79 -0
  22. package/dist/src/utils/location-filter.d.ts.map +1 -0
  23. package/dist/src/utils/location-filter.js +327 -0
  24. package/dist/src/utils/location-filter.js.map +1 -0
  25. package/dist/src/utils/release-readiness-detector.d.ts +47 -0
  26. package/dist/src/utils/release-readiness-detector.d.ts.map +1 -0
  27. package/dist/src/utils/release-readiness-detector.js +413 -0
  28. package/dist/src/utils/release-readiness-detector.js.map +1 -0
  29. package/package.json +1 -1
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Release Readiness Detector for Smart Git Push
3
+ *
4
+ * Analyzes TODO.md, project state, and commit patterns to determine
5
+ * if a release is ready, preventing endless development cycles
6
+ */
7
+ import { readFileSync, existsSync } from 'fs';
8
+ import { join } from 'path';
9
+ /**
10
+ * Main release readiness analysis function
11
+ */
12
+ export async function analyzeReleaseReadiness(options) {
13
+ const { projectPath, todoPath = join(projectPath, 'TODO.md'), minCompletionRate = 0.8, maxCriticalTodos = 0, includeAnalysis: _includeAnalysis = true, releaseType = 'minor' } = options;
14
+ const result = {
15
+ isReady: false,
16
+ score: 0,
17
+ confidence: 0,
18
+ blockers: [],
19
+ recommendations: [],
20
+ milestones: [],
21
+ summary: ''
22
+ };
23
+ try {
24
+ // 1. Analyze TODO.md if it exists
25
+ if (existsSync(todoPath)) {
26
+ const todoAnalysis = await analyzeTodoFile(todoPath, minCompletionRate);
27
+ result.milestones = todoAnalysis.milestones;
28
+ result.blockers.push(...todoAnalysis.blockers);
29
+ }
30
+ // 2. Analyze project state
31
+ const projectAnalysis = await analyzeProjectState(projectPath);
32
+ result.blockers.push(...projectAnalysis.blockers);
33
+ // 3. Analyze commit patterns
34
+ const commitAnalysis = await analyzeCommitPatterns(projectPath);
35
+ result.blockers.push(...commitAnalysis.blockers);
36
+ // 4. Calculate readiness score
37
+ const scoringResult = calculateReadinessScore(result.milestones, result.blockers, { minCompletionRate, maxCriticalTodos, releaseType });
38
+ result.score = scoringResult.score;
39
+ result.confidence = scoringResult.confidence;
40
+ result.isReady = scoringResult.isReady;
41
+ // 5. Generate recommendations
42
+ result.recommendations = generateReleaseRecommendations(result.blockers, result.milestones, result.score, releaseType);
43
+ // 6. Generate summary
44
+ result.summary = generateSummary(result);
45
+ return result;
46
+ }
47
+ catch (error) {
48
+ console.error('Release readiness analysis failed:', error);
49
+ result.blockers.push({
50
+ type: 'unstable-code',
51
+ severity: 'error',
52
+ message: `Analysis failed: ${error instanceof Error ? error.message : String(error)}`,
53
+ suggestedActions: ['Fix analysis errors before proceeding']
54
+ });
55
+ return result;
56
+ }
57
+ }
58
+ /**
59
+ * Analyze TODO.md file for completion status
60
+ */
61
+ async function analyzeTodoFile(todoPath, minCompletionRate = 0.7) {
62
+ const content = readFileSync(todoPath, 'utf8');
63
+ const milestones = [];
64
+ const blockers = [];
65
+ // Parse TODO.md structure
66
+ const sections = parseTodoSections(content);
67
+ for (const section of sections) {
68
+ const milestone = analyzeTodoSection(section);
69
+ milestones.push(milestone);
70
+ // Check for release blockers
71
+ if (milestone.criticalTodos > 0) {
72
+ blockers.push({
73
+ type: 'critical-todos',
74
+ severity: 'error',
75
+ message: `${milestone.name} has ${milestone.criticalTodos} critical TODO items`,
76
+ todoItems: milestone.blockers,
77
+ suggestedActions: [
78
+ 'Complete critical TODO items before release',
79
+ 'Reassess priority of TODO items',
80
+ 'Consider moving non-critical items to next release'
81
+ ]
82
+ });
83
+ }
84
+ if (milestone.completionRate < minCompletionRate) {
85
+ blockers.push({
86
+ type: 'incomplete-features',
87
+ severity: milestone.completionRate < 0.5 ? 'error' : 'warning',
88
+ message: `${milestone.name} is only ${(milestone.completionRate * 100).toFixed(1)}% complete`,
89
+ suggestedActions: [
90
+ 'Complete remaining tasks in this milestone',
91
+ 'Consider deferring incomplete features to next release',
92
+ 'Review milestone scope and priorities'
93
+ ]
94
+ });
95
+ }
96
+ }
97
+ return { milestones, blockers };
98
+ }
99
+ /**
100
+ * Parse TODO.md into sections/milestones
101
+ */
102
+ function parseTodoSections(content) {
103
+ const sections = [];
104
+ const lines = content.split('\n');
105
+ let currentSection = null;
106
+ for (const line of lines) {
107
+ const trimmed = line.trim();
108
+ // Detect section headers (## Header)
109
+ if (trimmed.startsWith('## ')) {
110
+ if (currentSection) {
111
+ sections.push(currentSection);
112
+ }
113
+ currentSection = {
114
+ name: trimmed.substring(3).trim(),
115
+ todos: []
116
+ };
117
+ }
118
+ // Detect TODO items
119
+ else if (trimmed.startsWith('- [') && currentSection) {
120
+ const isCompleted = trimmed.startsWith('- [x]') || trimmed.startsWith('- [X]');
121
+ const text = trimmed.substring(isCompleted ? 6 : 5).trim();
122
+ const priority = extractPriority(text);
123
+ const isCritical = priority === 'high' || text.toLowerCase().includes('critical') || text.toLowerCase().includes('blocker');
124
+ currentSection.todos.push({
125
+ text,
126
+ completed: isCompleted,
127
+ priority,
128
+ isCritical
129
+ });
130
+ }
131
+ }
132
+ if (currentSection) {
133
+ sections.push(currentSection);
134
+ }
135
+ return sections;
136
+ }
137
+ /**
138
+ * Extract priority from TODO text
139
+ */
140
+ function extractPriority(text) {
141
+ const lower = text.toLowerCase();
142
+ if (lower.includes('high') || lower.includes('urgent') || lower.includes('critical')) {
143
+ return 'high';
144
+ }
145
+ if (lower.includes('medium') || lower.includes('moderate')) {
146
+ return 'medium';
147
+ }
148
+ return 'low';
149
+ }
150
+ /**
151
+ * Analyze a TODO section for completion status
152
+ */
153
+ function analyzeTodoSection(section) {
154
+ const total = section.todos.length;
155
+ const completed = section.todos.filter(t => t.completed).length;
156
+ const criticalTodos = section.todos.filter(t => t.isCritical && !t.completed).length;
157
+ const blockers = section.todos
158
+ .filter(t => t.isCritical && !t.completed)
159
+ .map(t => t.text);
160
+ return {
161
+ name: section.name,
162
+ completed,
163
+ total,
164
+ completionRate: total > 0 ? completed / total : 1,
165
+ criticalTodos,
166
+ blockers
167
+ };
168
+ }
169
+ /**
170
+ * Analyze project state for release readiness
171
+ */
172
+ async function analyzeProjectState(projectPath) {
173
+ const blockers = [];
174
+ try {
175
+ // Check if tests are configured (look for test scripts)
176
+ const packageJsonPath = join(projectPath, 'package.json');
177
+ if (existsSync(packageJsonPath)) {
178
+ try {
179
+ const packageJsonContent = readFileSync(packageJsonPath, 'utf8');
180
+ const packageJson = JSON.parse(packageJsonContent);
181
+ if (packageJson.scripts && packageJson.scripts.test) {
182
+ // In a real implementation, we'd run the tests
183
+ // For now, we'll just note that tests should be run
184
+ blockers.push({
185
+ type: 'test-failures',
186
+ severity: 'warning',
187
+ message: 'Tests should be run before release',
188
+ suggestedActions: [
189
+ 'Run test suite: npm test',
190
+ 'Ensure all tests pass',
191
+ 'Review test coverage'
192
+ ]
193
+ });
194
+ }
195
+ }
196
+ catch (parseError) {
197
+ // Invalid package.json, skip test analysis
198
+ }
199
+ }
200
+ // Check for common unstable indicators
201
+ const unstablePatterns = [
202
+ 'TODO.md', 'FIXME.md', 'debug_*.js', 'temp_*.js', 'test_*.js'
203
+ ];
204
+ // This would be expanded to check for actual unstable files
205
+ if (unstablePatterns.length > 0) {
206
+ // Use the patterns for analysis
207
+ }
208
+ }
209
+ catch (error) {
210
+ blockers.push({
211
+ type: 'unstable-code',
212
+ severity: 'error',
213
+ message: `Project analysis failed: ${error instanceof Error ? error.message : String(error)}`,
214
+ suggestedActions: ['Fix project structure issues']
215
+ });
216
+ }
217
+ return { blockers };
218
+ }
219
+ /**
220
+ * Analyze commit patterns for release readiness
221
+ */
222
+ async function analyzeCommitPatterns(projectPath) {
223
+ const blockers = [];
224
+ try {
225
+ // Check recent commit activity
226
+ const { execSync } = await import('child_process');
227
+ // Get recent commits
228
+ const recentCommits = execSync('git log --oneline -n 10', {
229
+ cwd: projectPath,
230
+ encoding: 'utf8'
231
+ }).trim();
232
+ // Look for concerning patterns
233
+ const commitLines = recentCommits.split('\n');
234
+ const concerningPatterns = [
235
+ /debug/i, /temp/i, /test/i, /wip/i, /work in progress/i, /fixme/i
236
+ ];
237
+ const concerningCommits = commitLines.filter((line) => concerningPatterns.some(pattern => pattern.test(line)));
238
+ if (concerningCommits.length > 0) {
239
+ blockers.push({
240
+ type: 'unstable-code',
241
+ severity: 'warning',
242
+ message: `Recent commits contain concerning patterns: ${concerningCommits.length} commits`,
243
+ suggestedActions: [
244
+ 'Review recent commits for temporary/debug code',
245
+ 'Clean up any experimental or debug commits',
246
+ 'Ensure commits represent stable, production-ready code'
247
+ ]
248
+ });
249
+ }
250
+ // Check for uncommitted changes
251
+ const status = execSync('git status --porcelain', {
252
+ cwd: projectPath,
253
+ encoding: 'utf8'
254
+ }).trim();
255
+ if (status) {
256
+ blockers.push({
257
+ type: 'unstable-code',
258
+ severity: 'warning',
259
+ message: 'Uncommitted changes detected',
260
+ suggestedActions: [
261
+ 'Commit or stash uncommitted changes',
262
+ 'Ensure working directory is clean before release'
263
+ ]
264
+ });
265
+ }
266
+ }
267
+ catch (error) {
268
+ // Git commands failed - likely not a git repository
269
+ blockers.push({
270
+ type: 'unstable-code',
271
+ severity: 'info',
272
+ message: 'Could not analyze git history',
273
+ suggestedActions: ['Ensure project is under version control']
274
+ });
275
+ }
276
+ return { blockers };
277
+ }
278
+ /**
279
+ * Calculate overall readiness score
280
+ */
281
+ function calculateReadinessScore(milestones, blockers, options) {
282
+ let score = 1.0;
283
+ let confidence = 1.0;
284
+ // Factor in milestone completion
285
+ if (milestones.length > 0) {
286
+ const avgCompletion = milestones.reduce((sum, m) => sum + m.completionRate, 0) / milestones.length;
287
+ score *= avgCompletion;
288
+ // Reduce confidence if completion rates vary widely
289
+ const completionVariance = milestones.reduce((sum, m) => sum + Math.pow(m.completionRate - avgCompletion, 2), 0) / milestones.length;
290
+ confidence *= Math.max(0.5, 1 - completionVariance);
291
+ }
292
+ // Factor in blockers (excluding test-failures warnings for base scoring)
293
+ const errorCount = blockers.filter(b => b.severity === 'error').length;
294
+ const warningCount = blockers.filter(b => b.severity === 'warning' && b.type !== 'test-failures').length;
295
+ score *= Math.max(0, 1 - (errorCount * 0.3 + warningCount * 0.1));
296
+ // Critical todos are show-stoppers
297
+ const criticalTodos = milestones.reduce((sum, m) => sum + m.criticalTodos, 0);
298
+ if (criticalTodos > options.maxCriticalTodos) {
299
+ score *= 0.3; // Heavily penalize critical todos
300
+ }
301
+ // Determine readiness (ignore test-failures warnings for readiness check)
302
+ const criticalBlockers = blockers.filter(b => b.severity === 'error' || (b.severity === 'warning' && b.type !== 'test-failures'));
303
+ const isReady = score >= options.minCompletionRate && criticalBlockers.length === 0 && criticalTodos <= options.maxCriticalTodos;
304
+ return { score, confidence, isReady };
305
+ }
306
+ /**
307
+ * Generate release recommendations
308
+ */
309
+ function generateReleaseRecommendations(blockers, milestones, score, _releaseType) {
310
+ const recommendations = [];
311
+ if (score >= 0.9) {
312
+ recommendations.push('✅ Project appears ready for release');
313
+ recommendations.push('🚀 Consider creating a release candidate');
314
+ recommendations.push('📋 Run final pre-release checklist');
315
+ }
316
+ else if (score >= 0.7) {
317
+ recommendations.push('⚠️ Project is mostly ready with minor issues');
318
+ recommendations.push('🔧 Address remaining blockers before release');
319
+ recommendations.push('📊 Review milestone completion status');
320
+ }
321
+ else if (score >= 0.5) {
322
+ recommendations.push('🚧 Project needs significant work before release');
323
+ recommendations.push('📝 Focus on completing critical TODO items');
324
+ recommendations.push('🔍 Consider reducing scope for this release');
325
+ }
326
+ else {
327
+ recommendations.push('❌ Project is not ready for release');
328
+ recommendations.push('🛠️ Substantial development work required');
329
+ recommendations.push('📋 Review and prioritize TODO items');
330
+ }
331
+ // Add specific recommendations based on blockers
332
+ const criticalBlockers = blockers.filter(b => b.severity === 'error');
333
+ if (criticalBlockers.length > 0) {
334
+ recommendations.push('🚨 Critical blockers must be resolved:');
335
+ criticalBlockers.forEach(blocker => {
336
+ recommendations.push(` - ${blocker.message}`);
337
+ // Add specific TODO items if available
338
+ if (blocker.todoItems && blocker.todoItems.length > 0) {
339
+ blocker.todoItems.forEach(todo => {
340
+ recommendations.push(` • ${todo}`);
341
+ });
342
+ }
343
+ });
344
+ }
345
+ // Add milestone-specific recommendations
346
+ const incompleteMilestones = milestones.filter(m => m.completionRate < 0.8);
347
+ if (incompleteMilestones.length > 0) {
348
+ recommendations.push('📈 Focus on completing these milestones:');
349
+ incompleteMilestones.forEach(milestone => {
350
+ recommendations.push(` - ${milestone.name}: ${(milestone.completionRate * 100).toFixed(1)}% complete`);
351
+ });
352
+ }
353
+ return recommendations;
354
+ }
355
+ /**
356
+ * Generate summary of release readiness
357
+ */
358
+ function generateSummary(result) {
359
+ const scorePercentage = (result.score * 100).toFixed(1);
360
+ const confidencePercentage = (result.confidence * 100).toFixed(1);
361
+ let summary = `## Release Readiness: ${result.isReady ? '✅ READY' : '❌ NOT READY'}\n\n`;
362
+ summary += `**Score**: ${scorePercentage}% (Confidence: ${confidencePercentage}%)\n\n`;
363
+ if (result.milestones.length > 0) {
364
+ summary += `### Milestone Status\n`;
365
+ result.milestones.forEach(milestone => {
366
+ const status = milestone.completionRate >= 0.8 ? '✅' :
367
+ milestone.completionRate >= 0.5 ? '⚠️' : '❌';
368
+ summary += `- ${status} **${milestone.name}**: ${milestone.completed}/${milestone.total} (${(milestone.completionRate * 100).toFixed(1)}%)\n`;
369
+ });
370
+ summary += '\n';
371
+ }
372
+ if (result.blockers.length > 0) {
373
+ summary += `### Release Blockers (${result.blockers.length})\n`;
374
+ result.blockers.forEach(blocker => {
375
+ const icon = blocker.severity === 'error' ? '🚨' :
376
+ blocker.severity === 'warning' ? '⚠️' : '💡';
377
+ summary += `- ${icon} **${blocker.type}**: ${blocker.message}\n`;
378
+ });
379
+ summary += '\n';
380
+ }
381
+ return summary;
382
+ }
383
+ /**
384
+ * Integration with existing MCP tools
385
+ */
386
+ export async function integrateWithMcpTools(projectPath, options = {}) {
387
+ try {
388
+ // Use existing manage_todo tool if available
389
+ // const { manageTodo } = await import('../tools/manage-todo-tool.js');
390
+ // Get current TODO status
391
+ // const todoStatus = await manageTodo({
392
+ // action: 'analyze_progress',
393
+ // projectPath
394
+ // });
395
+ // Enhance analysis with TODO tool data
396
+ const enhancedOptions = {
397
+ projectPath,
398
+ includeAnalysis: true,
399
+ ...options
400
+ };
401
+ return await analyzeReleaseReadiness(enhancedOptions);
402
+ }
403
+ catch (error) {
404
+ console.error('MCP tool integration failed:', error);
405
+ // Fallback to standalone analysis
406
+ return await analyzeReleaseReadiness({
407
+ projectPath,
408
+ includeAnalysis: true,
409
+ ...options
410
+ });
411
+ }
412
+ }
413
+ //# sourceMappingURL=release-readiness-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-readiness-detector.js","sourceRoot":"","sources":["../../../src/utils/release-readiness-detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-adr-analysis-server",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "MCP server for analyzing Architectural Decision Records and project architecture",
5
5
  "main": "dist/src/index.js",
6
6
  "type": "module",