driftdetect-mcp 0.7.1 → 0.8.1

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 (66) hide show
  1. package/LICENSE +121 -21
  2. package/dist/bin/server.js +8 -1
  3. package/dist/bin/server.js.map +1 -1
  4. package/dist/enterprise-server.d.ts +4 -0
  5. package/dist/enterprise-server.d.ts.map +1 -1
  6. package/dist/enterprise-server.js +32 -2
  7. package/dist/enterprise-server.js.map +1 -1
  8. package/dist/infrastructure/index.d.ts +1 -0
  9. package/dist/infrastructure/index.d.ts.map +1 -1
  10. package/dist/infrastructure/index.js +2 -0
  11. package/dist/infrastructure/index.js.map +1 -1
  12. package/dist/infrastructure/startup-warmer.d.ts +65 -0
  13. package/dist/infrastructure/startup-warmer.d.ts.map +1 -0
  14. package/dist/infrastructure/startup-warmer.js +257 -0
  15. package/dist/infrastructure/startup-warmer.js.map +1 -0
  16. package/dist/tools/analysis/coupling.js +181 -63
  17. package/dist/tools/analysis/coupling.js.map +1 -1
  18. package/dist/tools/analysis/cpp.d.ts +51 -0
  19. package/dist/tools/analysis/cpp.d.ts.map +1 -0
  20. package/dist/tools/analysis/cpp.js +224 -0
  21. package/dist/tools/analysis/cpp.js.map +1 -0
  22. package/dist/tools/analysis/error-handling.js +130 -37
  23. package/dist/tools/analysis/error-handling.js.map +1 -1
  24. package/dist/tools/analysis/index.d.ts +3 -0
  25. package/dist/tools/analysis/index.d.ts.map +1 -1
  26. package/dist/tools/analysis/index.js +100 -0
  27. package/dist/tools/analysis/index.js.map +1 -1
  28. package/dist/tools/analysis/quality-gate.d.ts +78 -0
  29. package/dist/tools/analysis/quality-gate.d.ts.map +1 -0
  30. package/dist/tools/analysis/quality-gate.js +164 -0
  31. package/dist/tools/analysis/quality-gate.js.map +1 -0
  32. package/dist/tools/analysis/rust.d.ts +51 -0
  33. package/dist/tools/analysis/rust.d.ts.map +1 -0
  34. package/dist/tools/analysis/rust.js +253 -0
  35. package/dist/tools/analysis/rust.js.map +1 -0
  36. package/dist/tools/analysis/simulate.d.ts +1 -0
  37. package/dist/tools/analysis/simulate.d.ts.map +1 -1
  38. package/dist/tools/analysis/simulate.js +78 -74
  39. package/dist/tools/analysis/simulate.js.map +1 -1
  40. package/dist/tools/analysis/test-topology.js +117 -44
  41. package/dist/tools/analysis/test-topology.js.map +1 -1
  42. package/dist/tools/detail/reachability.d.ts +2 -0
  43. package/dist/tools/detail/reachability.d.ts.map +1 -1
  44. package/dist/tools/detail/reachability.js +42 -32
  45. package/dist/tools/detail/reachability.js.map +1 -1
  46. package/dist/tools/orchestration/index.d.ts +2 -0
  47. package/dist/tools/orchestration/index.d.ts.map +1 -1
  48. package/dist/tools/orchestration/index.js +3 -0
  49. package/dist/tools/orchestration/index.js.map +1 -1
  50. package/dist/tools/orchestration/package-context.d.ts +134 -0
  51. package/dist/tools/orchestration/package-context.d.ts.map +1 -0
  52. package/dist/tools/orchestration/package-context.js +261 -0
  53. package/dist/tools/orchestration/package-context.js.map +1 -0
  54. package/package.json +4 -4
  55. package/dist/server.d.ts +0 -11
  56. package/dist/server.d.ts.map +0 -1
  57. package/dist/server.js +0 -3177
  58. package/dist/server.js.map +0 -1
  59. package/dist/tools/detail/dna-check.d.ts +0 -32
  60. package/dist/tools/detail/dna-check.d.ts.map +0 -1
  61. package/dist/tools/detail/dna-check.js +0 -231
  62. package/dist/tools/detail/dna-check.js.map +0 -1
  63. package/dist/tools/exploration/files-list.d.ts +0 -29
  64. package/dist/tools/exploration/files-list.d.ts.map +0 -1
  65. package/dist/tools/exploration/files-list.js +0 -94
  66. package/dist/tools/exploration/files-list.js.map +0 -1
@@ -0,0 +1,224 @@
1
+ /**
2
+ * C++ Analysis MCP Tool
3
+ *
4
+ * Analyze C++ projects: classes, memory management, templates, virtual functions.
5
+ *
6
+ * @license Apache-2.0
7
+ */
8
+ import { createCppAnalyzer, } from 'driftdetect-core';
9
+ // ============================================================================
10
+ // Tool Implementation
11
+ // ============================================================================
12
+ export async function executeCppTool(args, context) {
13
+ const projectPath = args.path ?? context.projectRoot;
14
+ const limit = args.limit ?? 50;
15
+ const options = {
16
+ rootDir: projectPath,
17
+ verbose: false,
18
+ };
19
+ const analyzer = createCppAnalyzer(options);
20
+ let result;
21
+ switch (args.action) {
22
+ case 'status': {
23
+ const analysisResult = await analyzer.analyze();
24
+ result = formatStatusResult(analysisResult, limit);
25
+ break;
26
+ }
27
+ case 'classes': {
28
+ const classResult = await analyzer.analyzeClasses();
29
+ result = formatClassesResult(classResult, limit);
30
+ break;
31
+ }
32
+ case 'memory': {
33
+ const memoryResult = await analyzer.analyzeMemory();
34
+ result = formatMemoryResult(memoryResult, limit);
35
+ break;
36
+ }
37
+ case 'templates': {
38
+ const templateResult = await analyzer.analyzeTemplates();
39
+ result = formatTemplatesResult(templateResult, limit);
40
+ break;
41
+ }
42
+ case 'virtual': {
43
+ const virtualResult = await analyzer.analyzeVirtual();
44
+ result = formatVirtualResult(virtualResult, limit);
45
+ break;
46
+ }
47
+ default:
48
+ throw new Error(`Unknown action: ${args.action}`);
49
+ }
50
+ return {
51
+ content: [
52
+ {
53
+ type: 'text',
54
+ text: JSON.stringify(result, null, 2),
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ // ============================================================================
60
+ // Result Formatters
61
+ // ============================================================================
62
+ function formatStatusResult(result, _limit) {
63
+ return {
64
+ project: {
65
+ name: result.projectName ?? 'unknown',
66
+ cppStandard: result.cppStandard ?? 'unknown',
67
+ frameworks: result.detectedFrameworks,
68
+ },
69
+ stats: {
70
+ files: result.stats.fileCount,
71
+ headers: result.stats.headerCount,
72
+ sources: result.stats.sourceCount,
73
+ functions: result.stats.functionCount,
74
+ classes: result.stats.classCount,
75
+ structs: result.stats.structCount,
76
+ templates: result.stats.templateCount,
77
+ virtualMethods: result.stats.virtualMethodCount,
78
+ linesOfCode: result.stats.linesOfCode,
79
+ testFiles: result.stats.testFileCount,
80
+ },
81
+ modules: result.modules.map(m => ({
82
+ name: m.name,
83
+ files: m.files.length,
84
+ functions: m.functions.length,
85
+ })),
86
+ analysisTimeMs: result.stats.analysisTimeMs,
87
+ };
88
+ }
89
+ function formatClassesResult(result, limit) {
90
+ return {
91
+ summary: {
92
+ totalClasses: result.byKind['class'] ?? 0,
93
+ totalStructs: result.byKind['struct'] ?? 0,
94
+ },
95
+ classes: result.classes.slice(0, limit).map(c => ({
96
+ name: c.name,
97
+ kind: c.kind,
98
+ file: c.file,
99
+ line: c.line,
100
+ baseClasses: c.baseClasses,
101
+ virtualMethods: c.virtualMethods,
102
+ isTemplate: c.isTemplate,
103
+ })),
104
+ inheritanceDepth: Object.fromEntries(Object.entries(result.inheritanceDepth)
105
+ .filter(([, depth]) => depth > 1)
106
+ .sort((a, b) => b[1] - a[1])
107
+ .slice(0, 20)),
108
+ truncated: result.classes.length > limit,
109
+ };
110
+ }
111
+ function formatMemoryResult(result, limit) {
112
+ return {
113
+ summary: {
114
+ smartPointers: {
115
+ uniquePtr: result.stats.uniquePtrs,
116
+ sharedPtr: result.stats.sharedPtrs,
117
+ weakPtr: result.stats.weakPtrs,
118
+ },
119
+ manualMemory: {
120
+ newCalls: result.stats.newCalls,
121
+ deleteCalls: result.stats.deleteCalls,
122
+ mallocCalls: result.stats.mallocCalls,
123
+ freeCalls: result.stats.freeCalls,
124
+ rawPointers: result.stats.rawPointers,
125
+ },
126
+ },
127
+ raiiClasses: result.raiiClasses.slice(0, limit),
128
+ issues: result.issues.slice(0, limit).map(i => ({
129
+ type: i.type,
130
+ message: i.message,
131
+ file: i.file,
132
+ line: i.line,
133
+ suggestion: i.suggestion,
134
+ })),
135
+ patterns: result.patterns
136
+ .filter(p => p.isIssue)
137
+ .slice(0, limit)
138
+ .map(p => ({
139
+ type: p.type,
140
+ file: p.file,
141
+ line: p.line,
142
+ suggestion: p.suggestion,
143
+ })),
144
+ truncated: result.patterns.length > limit,
145
+ };
146
+ }
147
+ function formatTemplatesResult(result, limit) {
148
+ return {
149
+ summary: {
150
+ templateClasses: result.byKind['class'] ?? 0,
151
+ templateFunctions: result.byKind['function'] ?? 0,
152
+ },
153
+ templates: result.templates.slice(0, limit).map(t => ({
154
+ name: t.name,
155
+ kind: t.kind,
156
+ file: t.file,
157
+ line: t.line,
158
+ parameters: t.parameters,
159
+ })),
160
+ mostSpecialized: result.mostSpecialized,
161
+ truncated: result.templates.length > limit,
162
+ };
163
+ }
164
+ function formatVirtualResult(result, limit) {
165
+ return {
166
+ summary: {
167
+ virtualMethods: result.virtualMethods.length,
168
+ abstractClasses: result.abstractClasses.length,
169
+ polymorphicHierarchies: result.polymorphicHierarchies.length,
170
+ },
171
+ abstractClasses: result.abstractClasses.slice(0, limit),
172
+ polymorphicHierarchies: result.polymorphicHierarchies.slice(0, limit).map(h => ({
173
+ baseClass: h.baseClass,
174
+ derivedClasses: h.derivedClasses,
175
+ depth: h.depth,
176
+ })),
177
+ virtualMethods: result.virtualMethods.slice(0, limit).map(m => ({
178
+ name: m.name,
179
+ className: m.className,
180
+ file: m.file,
181
+ line: m.line,
182
+ isPureVirtual: m.isPureVirtual,
183
+ })),
184
+ truncated: result.virtualMethods.length > limit,
185
+ };
186
+ }
187
+ // ============================================================================
188
+ // Tool Definition
189
+ // ============================================================================
190
+ export const cppToolDefinition = {
191
+ name: 'drift_cpp',
192
+ description: `Analyze C++ projects for patterns, classes, memory management, and polymorphism.
193
+
194
+ Actions:
195
+ - status: Project overview with stats and detected frameworks
196
+ - classes: Class and struct analysis with inheritance
197
+ - memory: Memory management patterns (smart pointers, RAII, manual allocation)
198
+ - templates: Template classes and functions
199
+ - virtual: Virtual functions and polymorphic hierarchies`,
200
+ inputSchema: {
201
+ type: 'object',
202
+ properties: {
203
+ action: {
204
+ type: 'string',
205
+ enum: ['status', 'classes', 'memory', 'templates', 'virtual'],
206
+ description: 'Analysis action to perform',
207
+ },
208
+ path: {
209
+ type: 'string',
210
+ description: 'Project path (defaults to current project)',
211
+ },
212
+ limit: {
213
+ type: 'number',
214
+ description: 'Maximum items to return (default: 50)',
215
+ },
216
+ framework: {
217
+ type: 'string',
218
+ description: 'Filter by framework (Qt, Boost, Unreal Engine)',
219
+ },
220
+ },
221
+ required: ['action'],
222
+ },
223
+ };
224
+ //# sourceMappingURL=cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../../src/tools/analysis/cpp.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ export async function handleErrorHandling(projectRoot, args) {
38
38
  // ============================================================================
39
39
  async function handleStatus(projectRoot) {
40
40
  const builder = createResponseBuilder();
41
+ // First try to load cached data
41
42
  const dataPath = path.join(projectRoot, DRIFT_DIR, ERROR_HANDLING_DIR, 'topology.json');
42
43
  try {
43
44
  const data = JSON.parse(await fs.readFile(dataPath, 'utf-8'));
@@ -67,7 +68,52 @@ async function handleStatus(projectRoot) {
67
68
  .buildContent();
68
69
  }
69
70
  catch {
70
- throw Errors.custom('NO_ERROR_HANDLING_DATA', 'No error handling analysis found. Build it first using the CLI: drift error-handling build', ['drift error-handling build']);
71
+ // No cached data - try to build on-demand from call graph
72
+ try {
73
+ const analyzer = await buildAnalyzer(projectRoot);
74
+ const summary = analyzer.getSummary();
75
+ const metrics = analyzer.getMetrics();
76
+ if (!summary || !metrics) {
77
+ throw new Error('No analysis data available');
78
+ }
79
+ let summaryText = `🛡️ ${summary.totalFunctions} functions. `;
80
+ summaryText += `Coverage: ${summary.coveragePercent}%. `;
81
+ summaryText += `Quality: ${summary.avgQuality}/100. `;
82
+ summaryText += `${summary.unhandledPaths} unhandled paths.`;
83
+ const warnings = [];
84
+ if (summary.criticalUnhandled > 0) {
85
+ warnings.push(`${summary.criticalUnhandled} critical unhandled error paths`);
86
+ }
87
+ if (metrics.swallowedErrorCount > 0) {
88
+ warnings.push(`${metrics.swallowedErrorCount} swallowed errors`);
89
+ }
90
+ const hints = {
91
+ nextActions: summary.unhandledPaths > 0
92
+ ? ['Run drift_error_handling action="gaps" to see specific issues']
93
+ : ['Error handling looks good'],
94
+ warnings: warnings.length > 0 ? warnings : undefined,
95
+ relatedTools: ['drift_error_handling action="gaps"', 'drift_error_handling action="boundaries"'],
96
+ };
97
+ return builder
98
+ .withSummary(summaryText)
99
+ .withData({ summary, metrics })
100
+ .withHints(hints)
101
+ .buildContent();
102
+ }
103
+ catch {
104
+ // No call graph available - return graceful empty state
105
+ return builder
106
+ .withSummary('🛡️ Error handling analysis not available. Run a scan first.')
107
+ .withData({
108
+ summary: { totalFunctions: 0, coveragePercent: 0, avgQuality: 0, unhandledPaths: 0, criticalUnhandled: 0, boundaryCount: 0, avgBoundaryDepth: 0 },
109
+ metrics: { swallowedErrorCount: 0, totalTryCatch: 0, totalThrows: 0, totalFunctions: 0, functionsWithTryCatch: 0, functionsThatThrow: 0, boundaryCount: 0, avgCatchBlockSize: 0, avgThrowsPerFunction: 0, rethrowRate: 0, emptyHandlerCount: 0 }
110
+ })
111
+ .withHints({
112
+ nextActions: ['Run drift scan to analyze the codebase first'],
113
+ relatedTools: ['drift_status'],
114
+ })
115
+ .buildContent();
116
+ }
71
117
  }
72
118
  }
73
119
  async function handleGaps(projectRoot, limit, minSeverity) {
@@ -106,6 +152,7 @@ async function handleGaps(projectRoot, limit, minSeverity) {
106
152
  }
107
153
  async function handleBoundaries(projectRoot) {
108
154
  const builder = createResponseBuilder();
155
+ // First try cached data
109
156
  const dataPath = path.join(projectRoot, DRIFT_DIR, ERROR_HANDLING_DIR, 'topology.json');
110
157
  try {
111
158
  const data = JSON.parse(await fs.readFile(dataPath, 'utf-8'));
@@ -126,53 +173,99 @@ async function handleBoundaries(projectRoot) {
126
173
  .buildContent();
127
174
  }
128
175
  catch {
129
- throw Errors.custom('NO_ERROR_HANDLING_DATA', 'No error handling analysis found. Build it first.', ['drift error-handling build']);
176
+ // Try to build on-demand
177
+ try {
178
+ const analyzer = await buildAnalyzer(projectRoot);
179
+ const boundaries = analyzer.getBoundaries();
180
+ const frameworkBoundaries = boundaries.filter(b => b.isFrameworkBoundary).length;
181
+ let summaryText = `🛡️ ${boundaries.length} error boundaries. `;
182
+ summaryText += `${frameworkBoundaries} framework boundaries.`;
183
+ const hints = {
184
+ nextActions: boundaries.length === 0
185
+ ? ['Consider adding error boundaries to protect critical paths']
186
+ : ['Review boundary coverage'],
187
+ relatedTools: ['drift_error_handling action="unhandled"'],
188
+ };
189
+ return builder
190
+ .withSummary(summaryText)
191
+ .withData({ boundaries, total: boundaries.length, frameworkBoundaries })
192
+ .withHints(hints)
193
+ .buildContent();
194
+ }
195
+ catch {
196
+ // Return empty state
197
+ return builder
198
+ .withSummary('🛡️ No error boundaries detected. Run a scan first.')
199
+ .withData({ boundaries: [], total: 0, frameworkBoundaries: 0 })
200
+ .withHints({
201
+ nextActions: ['Run drift scan to analyze the codebase'],
202
+ relatedTools: ['drift_status'],
203
+ })
204
+ .buildContent();
205
+ }
130
206
  }
131
207
  }
132
208
  async function handleUnhandled(projectRoot, minSeverity) {
133
209
  const builder = createResponseBuilder();
210
+ // First try cached data
134
211
  const dataPath = path.join(projectRoot, DRIFT_DIR, ERROR_HANDLING_DIR, 'topology.json');
212
+ let paths = [];
135
213
  try {
136
214
  const data = JSON.parse(await fs.readFile(dataPath, 'utf-8'));
137
- let paths = data.topology.unhandledPaths;
138
- // Filter by severity
139
- if (minSeverity) {
140
- const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
141
- const minOrder = severityOrder[minSeverity];
142
- paths = paths.filter(p => severityOrder[p.severity] <= minOrder);
215
+ paths = data.topology.unhandledPaths;
216
+ }
217
+ catch {
218
+ // Try to build on-demand
219
+ try {
220
+ const analyzer = await buildAnalyzer(projectRoot);
221
+ paths = analyzer.getUnhandledPaths();
143
222
  }
144
- const bySeverity = {
145
- critical: 0,
146
- high: 0,
147
- medium: 0,
148
- low: 0,
149
- };
150
- for (const p of paths) {
151
- bySeverity[p.severity]++;
223
+ catch {
224
+ // Return empty state
225
+ return builder
226
+ .withSummary('⚠️ No unhandled error path analysis available. Run a scan first.')
227
+ .withData({ paths: [], total: 0, bySeverity: { critical: 0, high: 0, medium: 0, low: 0 } })
228
+ .withHints({
229
+ nextActions: ['Run drift scan to analyze the codebase'],
230
+ relatedTools: ['drift_status'],
231
+ })
232
+ .buildContent();
152
233
  }
153
- let summaryText = `⚠️ ${paths.length} unhandled error paths. `;
154
- if (bySeverity.critical > 0)
155
- summaryText += `🔴 ${bySeverity.critical} critical. `;
156
- if (bySeverity.high > 0)
157
- summaryText += `🟡 ${bySeverity.high} high.`;
158
- const hints = {
159
- nextActions: paths.length > 0
160
- ? [`Add error boundary at: ${paths[0]?.suggestedBoundary ?? 'entry point'}`]
161
- : ['All error paths are handled!'],
162
- warnings: bySeverity.critical > 0
163
- ? ['Critical unhandled paths can cause application crashes']
164
- : undefined,
165
- relatedTools: ['drift_error_handling action="boundaries"'],
166
- };
167
- return builder
168
- .withSummary(summaryText)
169
- .withData({ paths, total: paths.length, bySeverity })
170
- .withHints(hints)
171
- .buildContent();
172
234
  }
173
- catch {
174
- throw Errors.custom('NO_ERROR_HANDLING_DATA', 'No error handling analysis found. Build it first.', ['drift error-handling build']);
235
+ // Filter by severity
236
+ if (minSeverity) {
237
+ const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
238
+ const minOrder = severityOrder[minSeverity];
239
+ paths = paths.filter(p => severityOrder[p.severity] <= minOrder);
175
240
  }
241
+ const bySeverity = {
242
+ critical: 0,
243
+ high: 0,
244
+ medium: 0,
245
+ low: 0,
246
+ };
247
+ for (const p of paths) {
248
+ bySeverity[p.severity]++;
249
+ }
250
+ let summaryText = `⚠️ ${paths.length} unhandled error paths. `;
251
+ if (bySeverity.critical > 0)
252
+ summaryText += `🔴 ${bySeverity.critical} critical. `;
253
+ if (bySeverity.high > 0)
254
+ summaryText += `🟡 ${bySeverity.high} high.`;
255
+ const hints = {
256
+ nextActions: paths.length > 0
257
+ ? [`Add error boundary at: ${paths[0]?.suggestedBoundary ?? 'entry point'}`]
258
+ : ['All error paths are handled!'],
259
+ warnings: bySeverity.critical > 0
260
+ ? ['Critical unhandled paths can cause application crashes']
261
+ : undefined,
262
+ relatedTools: ['drift_error_handling action="boundaries"'],
263
+ };
264
+ return builder
265
+ .withSummary(summaryText)
266
+ .withData({ paths, total: paths.length, bySeverity })
267
+ .withHints(hints)
268
+ .buildContent();
176
269
  }
177
270
  async function handleAnalyze(projectRoot, funcPath) {
178
271
  const builder = createResponseBuilder();
@@ -1 +1 @@
1
- {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../../src/tools/analysis/error-handling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../../src/tools/analysis/error-handling.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,8 @@ export { handleSimulate, type SimulateArgs } from './simulate.js';
13
13
  export { handleConstraints, type ConstraintsArgs, type ConstraintsAction } from './constraints.js';
14
14
  export { executeWpfTool, type WpfArgs, type WpfAction } from './wpf.js';
15
15
  export { executeGoTool, type GoArgs, type GoAction } from './go.js';
16
+ export { executeRustTool, type RustArgs, type RustAction } from './rust.js';
16
17
  export { handleConstants, type ConstantsArgs, type ConstantsAction } from './constants.js';
18
+ export { handleQualityGate, qualityGateTool, type QualityGateArgs } from './quality-gate.js';
19
+ export { executeCppTool, type CppArgs, type CppAction } from './cpp.js';
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA8B/D,eAAO,MAAM,cAAc,EAAE,IAAI,EA4VhC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAoC/D,eAAO,MAAM,cAAc,EAAE,IAAI,EAybhC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -11,6 +11,8 @@ const CONSTRAINTS_ACTIONS = ['list', 'show', 'extract', 'approve', 'ignore', 've
11
11
  const WPF_ACTIONS = ['status', 'bindings', 'mvvm', 'datacontext', 'commands'];
12
12
  const GO_ACTIONS = ['status', 'routes', 'errors', 'interfaces', 'data-access', 'goroutines'];
13
13
  const CONSTANTS_ACTIONS = ['status', 'list', 'get', 'usages', 'magic', 'dead', 'secrets', 'inconsistent'];
14
+ const RUST_ACTIONS = ['status', 'routes', 'errors', 'traits', 'data-access', 'async'];
15
+ const CPP_ACTIONS = ['status', 'classes', 'memory', 'templates', 'virtual'];
14
16
  const DECISION_CATEGORIES = [
15
17
  'technology-adoption', 'technology-removal', 'pattern-introduction',
16
18
  'pattern-migration', 'architecture-change', 'api-change',
@@ -29,7 +31,48 @@ const CONSTANT_CATEGORIES = [
29
31
  const CONSTANT_LANGUAGES = [
30
32
  'typescript', 'javascript', 'python', 'java', 'csharp', 'php', 'go'
31
33
  ];
34
+ const QUALITY_GATE_GATES = ['pattern-compliance', 'constraint-verification', 'regression-detection', 'impact-simulation', 'security-boundary', 'custom-rules'];
35
+ const QUALITY_GATE_FORMATS = ['text', 'json', 'github', 'gitlab', 'sarif'];
32
36
  export const ANALYSIS_TOOLS = [
37
+ {
38
+ name: 'drift_quality_gate',
39
+ description: 'Run quality gates on code changes. Checks pattern compliance, constraint verification, regression detection, impact simulation, security boundaries, and custom rules. Use before merging PRs to catch architectural drift.',
40
+ inputSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ files: {
44
+ type: 'array',
45
+ items: { type: 'string' },
46
+ description: 'Files to check (optional - defaults to all changed files)',
47
+ },
48
+ policy: {
49
+ type: 'string',
50
+ description: 'Policy to use: default, strict, relaxed, ci-fast, or custom ID',
51
+ },
52
+ gates: {
53
+ type: 'string',
54
+ description: `Specific gates to run (comma-separated): ${QUALITY_GATE_GATES.join(', ')}`,
55
+ },
56
+ format: {
57
+ type: 'string',
58
+ enum: QUALITY_GATE_FORMATS,
59
+ description: 'Output format (default: json)',
60
+ },
61
+ verbose: {
62
+ type: 'boolean',
63
+ description: 'Include detailed output',
64
+ },
65
+ branch: {
66
+ type: 'string',
67
+ description: 'Current branch name',
68
+ },
69
+ baseBranch: {
70
+ type: 'string',
71
+ description: 'Base branch for comparison (for PRs)',
72
+ },
73
+ },
74
+ },
75
+ },
33
76
  {
34
77
  name: 'drift_simulate',
35
78
  description: 'Speculative Execution Engine: Simulates multiple implementation approaches BEFORE code generation, scoring them by friction, impact, and pattern alignment. Returns ranked approaches with trade-off analysis.',
@@ -377,6 +420,60 @@ export const ANALYSIS_TOOLS = [
377
420
  },
378
421
  },
379
422
  },
423
+ {
424
+ name: 'drift_rust',
425
+ description: 'Analyze Rust projects: routes, error handling, traits, data access, async patterns. Actions: status (project overview), routes (HTTP routes - Actix, Axum, Rocket, Warp), errors (error handling - Result, thiserror, anyhow), traits (trait definitions and implementations), data-access (database patterns - SQLx, Diesel, SeaORM), async (async patterns and runtime analysis).',
426
+ inputSchema: {
427
+ type: 'object',
428
+ properties: {
429
+ action: {
430
+ type: 'string',
431
+ enum: RUST_ACTIONS,
432
+ description: 'Action to perform: status, routes, errors, traits, data-access, async',
433
+ },
434
+ path: {
435
+ type: 'string',
436
+ description: 'File or directory path (defaults to project root)',
437
+ },
438
+ framework: {
439
+ type: 'string',
440
+ description: 'Filter by framework (for routes and data-access): actix, axum, rocket, warp, sqlx, diesel, sea-orm',
441
+ },
442
+ limit: {
443
+ type: 'number',
444
+ description: 'Limit number of results (default: 50)',
445
+ },
446
+ },
447
+ required: ['action'],
448
+ },
449
+ },
450
+ {
451
+ name: 'drift_cpp',
452
+ description: 'Analyze C++ projects: classes, memory management, templates, virtual functions. Actions: status (project overview), classes (class/struct analysis with inheritance), memory (smart pointers, RAII, manual allocation), templates (template classes and functions), virtual (virtual functions and polymorphic hierarchies).',
453
+ inputSchema: {
454
+ type: 'object',
455
+ properties: {
456
+ action: {
457
+ type: 'string',
458
+ enum: CPP_ACTIONS,
459
+ description: 'Action to perform: status, classes, memory, templates, virtual',
460
+ },
461
+ path: {
462
+ type: 'string',
463
+ description: 'File or directory path (defaults to project root)',
464
+ },
465
+ framework: {
466
+ type: 'string',
467
+ description: 'Filter by framework: Qt, Boost, Unreal Engine',
468
+ },
469
+ limit: {
470
+ type: 'number',
471
+ description: 'Limit number of results (default: 50)',
472
+ },
473
+ },
474
+ required: ['action'],
475
+ },
476
+ },
380
477
  ];
381
478
  export { handleTestTopology } from './test-topology.js';
382
479
  export { handleCoupling } from './coupling.js';
@@ -386,5 +483,8 @@ export { handleSimulate } from './simulate.js';
386
483
  export { handleConstraints } from './constraints.js';
387
484
  export { executeWpfTool } from './wpf.js';
388
485
  export { executeGoTool } from './go.js';
486
+ export { executeRustTool } from './rust.js';
389
487
  export { handleConstants } from './constants.js';
488
+ export { handleQualityGate, qualityGateTool } from './quality-gate.js';
489
+ export { executeCppTool } from './cpp.js';
390
490
  //# sourceMappingURL=index.js.map