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.
- package/LICENSE +121 -21
- package/dist/bin/server.js +8 -1
- package/dist/bin/server.js.map +1 -1
- package/dist/enterprise-server.d.ts +4 -0
- package/dist/enterprise-server.d.ts.map +1 -1
- package/dist/enterprise-server.js +32 -2
- package/dist/enterprise-server.js.map +1 -1
- package/dist/infrastructure/index.d.ts +1 -0
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +2 -0
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/infrastructure/startup-warmer.d.ts +65 -0
- package/dist/infrastructure/startup-warmer.d.ts.map +1 -0
- package/dist/infrastructure/startup-warmer.js +257 -0
- package/dist/infrastructure/startup-warmer.js.map +1 -0
- package/dist/tools/analysis/coupling.js +181 -63
- package/dist/tools/analysis/coupling.js.map +1 -1
- package/dist/tools/analysis/cpp.d.ts +51 -0
- package/dist/tools/analysis/cpp.d.ts.map +1 -0
- package/dist/tools/analysis/cpp.js +224 -0
- package/dist/tools/analysis/cpp.js.map +1 -0
- package/dist/tools/analysis/error-handling.js +130 -37
- package/dist/tools/analysis/error-handling.js.map +1 -1
- package/dist/tools/analysis/index.d.ts +3 -0
- package/dist/tools/analysis/index.d.ts.map +1 -1
- package/dist/tools/analysis/index.js +100 -0
- package/dist/tools/analysis/index.js.map +1 -1
- package/dist/tools/analysis/quality-gate.d.ts +78 -0
- package/dist/tools/analysis/quality-gate.d.ts.map +1 -0
- package/dist/tools/analysis/quality-gate.js +164 -0
- package/dist/tools/analysis/quality-gate.js.map +1 -0
- package/dist/tools/analysis/rust.d.ts +51 -0
- package/dist/tools/analysis/rust.d.ts.map +1 -0
- package/dist/tools/analysis/rust.js +253 -0
- package/dist/tools/analysis/rust.js.map +1 -0
- package/dist/tools/analysis/simulate.d.ts +1 -0
- package/dist/tools/analysis/simulate.d.ts.map +1 -1
- package/dist/tools/analysis/simulate.js +78 -74
- package/dist/tools/analysis/simulate.js.map +1 -1
- package/dist/tools/analysis/test-topology.js +117 -44
- package/dist/tools/analysis/test-topology.js.map +1 -1
- package/dist/tools/detail/reachability.d.ts +2 -0
- package/dist/tools/detail/reachability.d.ts.map +1 -1
- package/dist/tools/detail/reachability.js +42 -32
- package/dist/tools/detail/reachability.js.map +1 -1
- package/dist/tools/orchestration/index.d.ts +2 -0
- package/dist/tools/orchestration/index.d.ts.map +1 -1
- package/dist/tools/orchestration/index.js +3 -0
- package/dist/tools/orchestration/index.js.map +1 -1
- package/dist/tools/orchestration/package-context.d.ts +134 -0
- package/dist/tools/orchestration/package-context.d.ts.map +1 -0
- package/dist/tools/orchestration/package-context.js +261 -0
- package/dist/tools/orchestration/package-context.js.map +1 -0
- package/package.json +4 -4
- package/dist/server.d.ts +0 -11
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -3177
- package/dist/server.js.map +0 -1
- package/dist/tools/detail/dna-check.d.ts +0 -32
- package/dist/tools/detail/dna-check.d.ts.map +0 -1
- package/dist/tools/detail/dna-check.js +0 -231
- package/dist/tools/detail/dna-check.js.map +0 -1
- package/dist/tools/exploration/files-list.d.ts +0 -29
- package/dist/tools/exploration/files-list.d.ts.map +0 -1
- package/dist/tools/exploration/files-list.js +0 -94
- 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":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAwB1B,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAa,EACb,OAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAuB;QAClC,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,MAAe,CAAC;IAEpB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,GAAG,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;YACpD,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;YACpD,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM;QACR,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACzD,MAAM,GAAG,qBAAqB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,GAAG,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,SAAS,kBAAkB,CACzB,MAA4E,EAC5E,MAAc;IAEd,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,UAAU,EAAE,MAAM,CAAC,kBAAkB;SACtC;QACD,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;YAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACjC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACjC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;YACrC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YAChC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACjC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;YACrC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,kBAAkB;YAC/C,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACrC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;SACtC;QACD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YACrB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAmF,EACnF,KAAa;IAEb,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YACzC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC3C;QACD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB;QACD,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAkF,EAClF,KAAa;IAEb,OAAO;QACL,OAAO,EAAE;YACP,aAAa,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;gBAClC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;gBAClC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;aAC/B;YACD,YAAY,EAAE;gBACZ,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC/B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;gBACrC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;gBACrC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;aACtC;SACF;QACD,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACtB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACL,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAqF,EACrF,KAAa;IAEb,OAAO;QACL,OAAO,EAAE;YACP,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;SAClD;QACD,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAmF,EACnF,KAAa;IAEb,OAAO;QACL,OAAO,EAAE;YACP,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;YAC5C,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM;YAC9C,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,CAAC,MAAM;SAC7D;QACD,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QACvD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;QACH,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,aAAa,EAAE,CAAC,CAAC,aAAa;SAC/B,CAAC,CAAC;QACH,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK;KAChD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE;;;;;;;yDAO0C;IACvD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;gBAC7D,WAAW,EAAE,4BAA4B;aAC1C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4CAA4C;aAC1D;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;CACF,CAAC"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
174
|
-
|
|
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;
|
|
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
|