@stackguide/mcp-server 2.4.0 → 3.0.0

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 (38) hide show
  1. package/README.md +82 -16
  2. package/dist/config/healthWeights.d.ts +87 -0
  3. package/dist/config/healthWeights.d.ts.map +1 -0
  4. package/dist/config/healthWeights.js +238 -0
  5. package/dist/config/healthWeights.js.map +1 -0
  6. package/dist/config/types.d.ts +104 -0
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/config/types.js.map +1 -1
  9. package/dist/handlers/generate.d.ts +6 -0
  10. package/dist/handlers/generate.d.ts.map +1 -1
  11. package/dist/handlers/generate.js +81 -5
  12. package/dist/handlers/generate.js.map +1 -1
  13. package/dist/handlers/health.d.ts +7 -0
  14. package/dist/handlers/health.d.ts.map +1 -1
  15. package/dist/handlers/health.js +151 -69
  16. package/dist/handlers/health.js.map +1 -1
  17. package/dist/handlers/review.d.ts +12 -0
  18. package/dist/handlers/review.d.ts.map +1 -1
  19. package/dist/handlers/review.js +220 -21
  20. package/dist/handlers/review.js.map +1 -1
  21. package/dist/services/analysisCache.d.ts +110 -0
  22. package/dist/services/analysisCache.d.ts.map +1 -0
  23. package/dist/services/analysisCache.js +233 -0
  24. package/dist/services/analysisCache.js.map +1 -0
  25. package/dist/services/codeAnalyzer.d.ts +73 -30
  26. package/dist/services/codeAnalyzer.d.ts.map +1 -1
  27. package/dist/services/codeAnalyzer.js +384 -36
  28. package/dist/services/codeAnalyzer.js.map +1 -1
  29. package/dist/services/conventionDetector.d.ts +40 -0
  30. package/dist/services/conventionDetector.d.ts.map +1 -0
  31. package/dist/services/conventionDetector.js +465 -0
  32. package/dist/services/conventionDetector.js.map +1 -0
  33. package/dist/services/cursorDirectory.d.ts +29 -2
  34. package/dist/services/cursorDirectory.d.ts.map +1 -1
  35. package/dist/services/cursorDirectory.js +260 -9
  36. package/dist/services/cursorDirectory.js.map +1 -1
  37. package/dist/utils/validation.d.ts +2 -2
  38. package/package.json +1 -1
@@ -1,9 +1,61 @@
1
1
  /**
2
2
  * Generate handler - Generate boilerplate code from templates
3
3
  * Phase 6: Advanced Features
4
+ *
5
+ * Improvements:
6
+ * - Detects project conventions (quotes, semicolons, indentation)
7
+ * - Adapts templates based on state management in use
8
+ * - Respects existing code patterns
4
9
  */
5
10
  import { jsonResponse } from './types.js';
6
11
  import { logger } from '../utils/logger.js';
12
+ import { detectConventions } from '../services/conventionDetector.js';
13
+ // Cached conventions
14
+ let cachedConventions = null;
15
+ let cachedProjectPath = null;
16
+ /**
17
+ * Get conventions for current project (with caching)
18
+ */
19
+ function getProjectConventions() {
20
+ const projectPath = process.cwd();
21
+ if (cachedConventions && cachedProjectPath === projectPath) {
22
+ return cachedConventions;
23
+ }
24
+ cachedConventions = detectConventions(projectPath);
25
+ cachedProjectPath = projectPath;
26
+ return cachedConventions;
27
+ }
28
+ /**
29
+ * Apply conventions to generated code
30
+ */
31
+ function applyConventions(code, conventions) {
32
+ let result = code;
33
+ // Apply indentation
34
+ if (conventions.indentation === 'tabs') {
35
+ result = result.replace(/^( {2})/gm, '\t');
36
+ result = result.replace(/^( {4})/gm, '\t\t');
37
+ result = result.replace(/^( {6})/gm, '\t\t\t');
38
+ result = result.replace(/^( {8})/gm, '\t\t\t\t');
39
+ }
40
+ else if (conventions.indentSize !== 2) {
41
+ const spaces = ' '.repeat(conventions.indentSize);
42
+ result = result.replace(/^ /gm, spaces);
43
+ result = result.replace(/^ /gm, spaces + spaces);
44
+ result = result.replace(/^ /gm, spaces + spaces + spaces);
45
+ }
46
+ // Apply quote style (careful with JSX)
47
+ if (conventions.quotes === 'double') {
48
+ // Only change quotes outside of JSX attributes
49
+ result = result.replace(/(?<!=)'([^']*)'(?!>)/g, '"$1"');
50
+ }
51
+ // Apply semicolons
52
+ if (!conventions.semicolons) {
53
+ // Remove trailing semicolons (simple cases)
54
+ result = result.replace(/;(\s*\n)/g, '$1');
55
+ result = result.replace(/;(\s*$)/g, '$1');
56
+ }
57
+ return result;
58
+ }
7
59
  // Template generators by type
8
60
  const templates = {
9
61
  // React Component
@@ -733,9 +785,22 @@ export async function handleGenerate(args, state) {
733
785
  example: 'generate type:"component" name:"UserCard"'
734
786
  });
735
787
  }
736
- // Infer TypeScript from project type
737
- if (options.typescript === undefined && state.activeProjectType) {
738
- options.typescript = state.activeProjectType.includes('typescript');
788
+ // Detect project conventions
789
+ const conventions = options.scanProject !== false ? getProjectConventions() : null;
790
+ // Infer TypeScript from project type or conventions
791
+ if (options.typescript === undefined) {
792
+ if (state.activeProjectType?.includes('typescript')) {
793
+ options.typescript = true;
794
+ }
795
+ else if (conventions?.strictMode) {
796
+ options.typescript = true;
797
+ }
798
+ }
799
+ // Infer framework from conventions
800
+ if (!options.framework && conventions) {
801
+ if (conventions.stateManagement === 'zustand') {
802
+ options.framework = 'zustand';
803
+ }
739
804
  }
740
805
  const generator = templates[type];
741
806
  if (!generator) {
@@ -744,8 +809,12 @@ export async function handleGenerate(args, state) {
744
809
  availableTypes: Object.keys(templates)
745
810
  });
746
811
  }
747
- logger.info('Generating template', { type, name, options });
748
- const code = generator(name, options);
812
+ logger.info('Generating template', { type, name, options, conventions: conventions?.sources });
813
+ let code = generator(name, options);
814
+ // Apply detected conventions to generated code
815
+ if (conventions && conventions.confidence !== 'low') {
816
+ code = applyConventions(code, conventions);
817
+ }
749
818
  const ext = options.typescript !== false ? 'ts' : 'js';
750
819
  const filename = type === 'test'
751
820
  ? `${name}.test.${ext}`
@@ -758,6 +827,13 @@ export async function handleGenerate(args, state) {
758
827
  name,
759
828
  filename,
760
829
  code,
830
+ conventions: conventions ? {
831
+ applied: conventions.confidence !== 'low',
832
+ sources: conventions.sources,
833
+ indentation: conventions.indentation,
834
+ quotes: conventions.quotes,
835
+ semicolons: conventions.semicolons
836
+ } : null,
761
837
  instructions: [
762
838
  `1. Create file: ${filename}`,
763
839
  '2. Paste the generated code',
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/handlers/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/handlers/generate.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,18 @@
1
1
  /**
2
2
  * Health handler - Project Health Score Analysis
3
3
  * Phase 6: Advanced Features
4
+ *
5
+ * Improvements:
6
+ * - Configurable weights via stackguide.config.json
7
+ * - Historical tracking of health scores
8
+ * - Project-specific benchmarking
4
9
  */
5
10
  import { ServerState, ToolResponse } from './types.js';
6
11
  interface HealthArgs {
7
12
  projectPath?: string;
8
13
  detailed?: boolean;
14
+ showWeights?: boolean;
15
+ saveHistory?: boolean;
9
16
  }
10
17
  export declare function handleHealth(args: HealthArgs, state: ServerState): Promise<ToolResponse>;
11
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/handlers/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAIrE,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+OD,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CAoFvB"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/handlers/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAWrE,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkUD,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CA+GvB"}
@@ -1,29 +1,20 @@
1
1
  /**
2
2
  * Health handler - Project Health Score Analysis
3
3
  * Phase 6: Advanced Features
4
+ *
5
+ * Improvements:
6
+ * - Configurable weights via stackguide.config.json
7
+ * - Historical tracking of health scores
8
+ * - Project-specific benchmarking
4
9
  */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
5
12
  import { jsonResponse } from './types.js';
6
13
  import { logger } from '../utils/logger.js';
7
14
  import { analyzeCode } from '../services/codeAnalyzer.js';
8
- // Score thresholds for grades
9
- const GRADE_THRESHOLDS = {
10
- A: 90,
11
- B: 80,
12
- C: 70,
13
- D: 60,
14
- F: 0,
15
- };
16
- function getGrade(score) {
17
- if (score >= GRADE_THRESHOLDS.A)
18
- return 'A';
19
- if (score >= GRADE_THRESHOLDS.B)
20
- return 'B';
21
- if (score >= GRADE_THRESHOLDS.C)
22
- return 'C';
23
- if (score >= GRADE_THRESHOLDS.D)
24
- return 'D';
25
- return 'F';
26
- }
15
+ import { getHealthWeights, getGradeFromScore, calculateIssueDeduction, getWeightsDocumentation } from '../config/healthWeights.js';
16
+ const HISTORY_FILE = '.stackguide/health-history.json';
17
+ const MAX_HISTORY_ENTRIES = 100;
27
18
  function getGradeEmoji(grade) {
28
19
  const emojis = {
29
20
  A: '🌟',
@@ -34,64 +25,132 @@ function getGradeEmoji(grade) {
34
25
  };
35
26
  return emojis[grade] || '❓';
36
27
  }
28
+ /**
29
+ * Load health history from disk
30
+ */
31
+ function loadHealthHistory(projectPath) {
32
+ const historyPath = path.join(projectPath, HISTORY_FILE);
33
+ try {
34
+ if (fs.existsSync(historyPath)) {
35
+ const content = fs.readFileSync(historyPath, 'utf-8');
36
+ return JSON.parse(content);
37
+ }
38
+ }
39
+ catch (error) {
40
+ logger.debug('Failed to load health history', { error });
41
+ }
42
+ return { projectPath, entries: [] };
43
+ }
44
+ /**
45
+ * Save health history to disk
46
+ */
47
+ function saveHealthHistory(projectPath, history) {
48
+ const historyPath = path.join(projectPath, HISTORY_FILE);
49
+ const historyDir = path.dirname(historyPath);
50
+ try {
51
+ if (!fs.existsSync(historyDir)) {
52
+ fs.mkdirSync(historyDir, { recursive: true });
53
+ }
54
+ // Limit history entries
55
+ if (history.entries.length > MAX_HISTORY_ENTRIES) {
56
+ history.entries = history.entries.slice(-MAX_HISTORY_ENTRIES);
57
+ }
58
+ fs.writeFileSync(historyPath, JSON.stringify(history, null, 2));
59
+ logger.debug('Saved health history');
60
+ }
61
+ catch (error) {
62
+ logger.debug('Failed to save health history', { error });
63
+ }
64
+ }
65
+ /**
66
+ * Add entry to health history
67
+ */
68
+ function addHistoryEntry(projectPath, score, grade, categories) {
69
+ const history = loadHealthHistory(projectPath);
70
+ history.entries.push({
71
+ timestamp: new Date().toISOString(),
72
+ score,
73
+ grade,
74
+ categories: Object.fromEntries(categories.map(c => [c.name, c.score]))
75
+ });
76
+ saveHealthHistory(projectPath, history);
77
+ }
78
+ /**
79
+ * Get health trend from history
80
+ */
81
+ function getHealthTrend(projectPath) {
82
+ const history = loadHealthHistory(projectPath);
83
+ if (history.entries.length < 2) {
84
+ return null;
85
+ }
86
+ const recent = history.entries.slice(-5);
87
+ const oldest = recent[0].score;
88
+ const newest = recent[recent.length - 1].score;
89
+ const change = newest - oldest;
90
+ if (change > 5)
91
+ return { trend: 'improving', change };
92
+ if (change < -5)
93
+ return { trend: 'declining', change };
94
+ return { trend: 'stable', change };
95
+ }
37
96
  // Analyze configuration quality
38
- function analyzeConfiguration(state) {
97
+ function analyzeConfiguration(state, weights) {
39
98
  const issues = [];
40
99
  const suggestions = [];
41
- let score = 20;
42
- const maxScore = 20;
100
+ const maxScore = weights.categories.configuration.maxScore;
101
+ let score = maxScore;
43
102
  const hasConfig = !!state.activeProjectType;
44
103
  const hasRules = state.loadedRules.length > 0;
45
104
  const hasKnowledge = state.loadedKnowledge.length > 0;
46
105
  if (!hasConfig) {
47
106
  issues.push('No project type configured');
48
107
  suggestions.push('Run setup to configure your project type');
49
- score -= 5;
108
+ score -= maxScore * 0.25;
50
109
  }
51
110
  if (!hasRules) {
52
111
  issues.push('No rules loaded');
53
112
  suggestions.push('Run setup to load rules for your project');
54
- score -= 5;
113
+ score -= maxScore * 0.25;
55
114
  }
56
115
  if (!hasKnowledge) {
57
116
  issues.push('No knowledge base loaded');
58
117
  suggestions.push('Run setup to load knowledge base');
59
- score -= 5;
118
+ score -= maxScore * 0.25;
60
119
  }
61
120
  if (state.activeConfiguration?.customRules?.length === 0) {
62
121
  suggestions.push('Consider adding custom rules for your project');
63
- score -= 2;
122
+ score -= maxScore * 0.1;
64
123
  }
65
124
  return {
66
- name: 'Configuration',
67
- score: Math.max(0, score),
125
+ name: weights.categories.configuration.name,
126
+ score: Math.max(0, Math.round(score)),
68
127
  maxScore,
69
128
  issues,
70
129
  suggestions,
71
130
  };
72
131
  }
73
132
  // Analyze code quality based on review results
74
- function analyzeCodeQuality(analysisResult) {
133
+ function analyzeCodeQuality(analysisResult, weights) {
75
134
  const issues = [];
76
135
  const suggestions = [];
77
- let score = 30;
78
- const maxScore = 30;
136
+ const maxScore = weights.categories.codeQuality.maxScore;
137
+ let score = maxScore;
79
138
  if (!analysisResult) {
80
139
  return {
81
- name: 'Code Quality',
82
- score: 15,
140
+ name: weights.categories.codeQuality.name,
141
+ score: Math.round(maxScore * 0.5),
83
142
  maxScore,
84
143
  issues: ['No code analysis performed'],
85
144
  suggestions: ['Run review tool to analyze code'],
86
145
  };
87
146
  }
88
- // Deduct points based on issues
147
+ // Deduct points based on issues using configurable weights
89
148
  const criticalCount = analysisResult.issues.filter(i => i.severity === 'error').length;
90
149
  const warningCount = analysisResult.issues.filter(i => i.severity === 'warning').length;
91
150
  const infoCount = analysisResult.issues.filter(i => i.severity === 'info').length;
92
- score -= criticalCount * 5;
93
- score -= warningCount * 2;
94
- score -= infoCount * 0.5;
151
+ score -= calculateIssueDeduction('error', criticalCount, weights);
152
+ score -= calculateIssueDeduction('warning', warningCount, weights);
153
+ score -= calculateIssueDeduction('info', infoCount, weights);
95
154
  if (criticalCount > 0) {
96
155
  issues.push(`${criticalCount} critical issue(s) found`);
97
156
  }
@@ -113,93 +172,103 @@ function analyzeCodeQuality(analysisResult) {
113
172
  suggestions.push('Follow framework best practices');
114
173
  }
115
174
  return {
116
- name: 'Code Quality',
117
- score: Math.max(0, Math.min(maxScore, score)),
175
+ name: weights.categories.codeQuality.name,
176
+ score: Math.max(0, Math.min(maxScore, Math.round(score))),
118
177
  maxScore,
119
178
  issues,
120
179
  suggestions,
121
180
  };
122
181
  }
123
182
  // Analyze structure
124
- function analyzeStructure(state) {
183
+ function analyzeStructure(state, weights) {
125
184
  const issues = [];
126
185
  const suggestions = [];
127
- let score = 20;
128
- const maxScore = 20;
186
+ const maxScore = weights.categories.structure.maxScore;
187
+ let score = maxScore;
129
188
  // Check if project type is detected
130
189
  if (!state.activeProjectType) {
131
190
  issues.push('Project structure not analyzed');
132
191
  suggestions.push('Run setup to detect project structure');
133
- score -= 10;
192
+ score -= maxScore * 0.5;
134
193
  }
135
194
  else {
136
195
  // Project type detected - good structure
137
196
  if (state.loadedRules.length < 3) {
138
197
  suggestions.push('Load more rules for comprehensive guidance');
139
- score -= 5;
198
+ score -= maxScore * 0.25;
140
199
  }
141
200
  }
142
201
  return {
143
- name: 'Project Structure',
144
- score: Math.max(0, score),
202
+ name: weights.categories.structure.name,
203
+ score: Math.max(0, Math.round(score)),
145
204
  maxScore,
146
205
  issues,
147
206
  suggestions,
148
207
  };
149
208
  }
150
209
  // Analyze documentation
151
- function analyzeDocumentation(state) {
210
+ function analyzeDocumentation(state, weights) {
152
211
  const issues = [];
153
212
  const suggestions = [];
154
- let score = 15;
155
- const maxScore = 15;
213
+ const maxScore = weights.categories.documentation.maxScore;
214
+ let score = maxScore;
156
215
  if (state.loadedKnowledge.length === 0) {
157
216
  issues.push('No knowledge/documentation loaded');
158
- score -= 5;
217
+ score -= maxScore * 0.33;
159
218
  }
160
219
  if (!state.activeProjectType) {
161
220
  suggestions.push('Configure project type for tailored documentation');
162
- score -= 3;
221
+ score -= maxScore * 0.2;
163
222
  }
164
223
  return {
165
- name: 'Documentation',
166
- score: Math.max(0, score),
224
+ name: weights.categories.documentation.name,
225
+ score: Math.max(0, Math.round(score)),
167
226
  maxScore,
168
227
  issues,
169
228
  suggestions,
170
229
  };
171
230
  }
172
231
  // Analyze testing readiness
173
- function analyzeTestingReadiness(state) {
232
+ function analyzeTestingReadiness(state, weights) {
174
233
  const issues = [];
175
234
  const suggestions = [];
176
- let score = 15;
177
- const maxScore = 15;
235
+ const maxScore = weights.categories.testing.maxScore;
236
+ let score = maxScore;
178
237
  // Check if project has testing setup (inferred from project type)
179
238
  const hasTestingSupport = state.activeProjectType?.includes('typescript') ||
180
239
  state.activeProjectType?.includes('react') ||
181
240
  state.activeProjectType?.includes('node');
182
241
  if (!hasTestingSupport) {
183
242
  suggestions.push('Consider adding a testing framework');
184
- score -= 5;
243
+ score -= maxScore * 0.33;
185
244
  }
186
245
  // Check if any loaded rules mention testing
187
246
  const hasTestingRules = state.loadedRules.some(r => r.content?.toLowerCase().includes('test') || r.name?.toLowerCase().includes('test'));
188
247
  if (!hasTestingRules) {
189
248
  suggestions.push('Add custom rules for testing guidelines');
190
- score -= 2;
249
+ score -= maxScore * 0.13;
191
250
  }
192
251
  return {
193
- name: 'Testing Readiness',
194
- score: Math.max(0, score),
252
+ name: weights.categories.testing.name,
253
+ score: Math.max(0, Math.round(score)),
195
254
  maxScore,
196
255
  issues,
197
256
  suggestions,
198
257
  };
199
258
  }
200
259
  export async function handleHealth(args, state) {
201
- const { detailed = true } = args;
202
- logger.info('Generating health report', { detailed });
260
+ const { detailed = true, showWeights = false, saveHistory = true } = args;
261
+ const projectPath = process.cwd();
262
+ logger.info('Generating health report', { detailed, showWeights });
263
+ // Load configurable weights
264
+ const weights = getHealthWeights(projectPath);
265
+ // Show weights documentation if requested
266
+ if (showWeights) {
267
+ return jsonResponse({
268
+ documentation: getWeightsDocumentation(weights),
269
+ currentWeights: weights
270
+ });
271
+ }
203
272
  // Perform a sample code analysis if rules are loaded
204
273
  let codeAnalysis = null;
205
274
  if (state.loadedRules.length > 0 && state.activeProjectType) {
@@ -212,19 +281,25 @@ export async function handleHealth(args, state) {
212
281
  logger.warn('Code analysis failed', { error: e });
213
282
  }
214
283
  }
215
- // Collect all category scores
284
+ // Collect all category scores using configurable weights
216
285
  const categories = [
217
- analyzeConfiguration(state),
218
- analyzeCodeQuality(codeAnalysis),
219
- analyzeStructure(state),
220
- analyzeDocumentation(state),
221
- analyzeTestingReadiness(state),
286
+ analyzeConfiguration(state, weights),
287
+ analyzeCodeQuality(codeAnalysis, weights),
288
+ analyzeStructure(state, weights),
289
+ analyzeDocumentation(state, weights),
290
+ analyzeTestingReadiness(state, weights),
222
291
  ];
223
292
  // Calculate overall score
224
293
  const totalScore = categories.reduce((sum, cat) => sum + cat.score, 0);
225
294
  const maxTotalScore = categories.reduce((sum, cat) => sum + cat.maxScore, 0);
226
295
  const overallScore = Math.round((totalScore / maxTotalScore) * 100);
227
- const grade = getGrade(overallScore);
296
+ const grade = getGradeFromScore(overallScore, weights);
297
+ // Save to history if enabled
298
+ if (saveHistory) {
299
+ addHistoryEntry(projectPath, overallScore, grade, categories);
300
+ }
301
+ // Get health trend
302
+ const trend = getHealthTrend(projectPath);
228
303
  // Collect critical issues
229
304
  const criticalIssues = categories
230
305
  .flatMap(cat => cat.issues)
@@ -250,6 +325,7 @@ export async function handleHealth(args, state) {
250
325
  score: overallScore,
251
326
  grade: `${getGradeEmoji(grade)} ${grade}`,
252
327
  summary,
328
+ trend: trend ? `${trend.trend} (${trend.change > 0 ? '+' : ''}${trend.change})` : undefined,
253
329
  topRecommendations: recommendations.slice(0, 3),
254
330
  });
255
331
  }
@@ -257,6 +333,11 @@ export async function handleHealth(args, state) {
257
333
  header: `🏥 Project Health Report`,
258
334
  score: `${overallScore}/100`,
259
335
  grade: `${getGradeEmoji(grade)} Grade: ${grade}`,
336
+ trend: trend ? {
337
+ direction: trend.trend,
338
+ change: `${trend.change > 0 ? '+' : ''}${trend.change} points`,
339
+ emoji: trend.trend === 'improving' ? '📈' : trend.trend === 'declining' ? '📉' : '➡️'
340
+ } : undefined,
260
341
  summary,
261
342
  categories: categories.map(cat => ({
262
343
  name: cat.name,
@@ -268,6 +349,7 @@ export async function handleHealth(args, state) {
268
349
  })),
269
350
  criticalIssues: criticalIssues.length > 0 ? criticalIssues : undefined,
270
351
  recommendations,
352
+ weightsUsed: weights.version,
271
353
  nextSteps: generateNextSteps(report),
272
354
  });
273
355
  }
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/handlers/health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/handlers/health.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  /**
2
2
  * Review handler - code review against active rules
3
3
  * Phase 3: Real code analysis with pattern matching
4
+ *
5
+ * Improvements:
6
+ * - Removed file limit (was 50, now unlimited)
7
+ * - Parallel file analysis with batching
8
+ * - Respects .gitignore patterns
9
+ * - Configurable scan depth (default 10)
10
+ * - Incremental mode using git diff
11
+ * - Analysis caching by file hash
4
12
  */
5
13
  import { ServerState, ToolResponse } from './types.js';
6
14
  interface ReviewArgs {
@@ -8,6 +16,10 @@ interface ReviewArgs {
8
16
  url?: string;
9
17
  project?: boolean;
10
18
  focus?: 'all' | 'security' | 'performance' | 'architecture' | 'coding-standards';
19
+ incremental?: boolean;
20
+ maxDepth?: number;
21
+ maxFiles?: number;
22
+ useCache?: boolean;
11
23
  }
12
24
  export declare function handleReview(args: ReviewArgs, state: ServerState): Promise<ToolResponse>;
13
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/handlers/review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,EAAE,WAAW,EAAE,YAAY,EAA8B,MAAM,YAAY,CAAC;AAGnF,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,kBAAkB,CAAC;CAClF;AAID,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CA0JvB"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/handlers/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EAAE,WAAW,EAAE,YAAY,EAA8B,MAAM,YAAY,CAAC;AAGnF,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgJD,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CAuPvB"}