driftdetect-mcp 0.7.0 → 0.8.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 (66) hide show
  1. package/dist/bin/server.js +8 -1
  2. package/dist/bin/server.js.map +1 -1
  3. package/dist/enterprise-server.d.ts +4 -0
  4. package/dist/enterprise-server.d.ts.map +1 -1
  5. package/dist/enterprise-server.js +32 -2
  6. package/dist/enterprise-server.js.map +1 -1
  7. package/dist/infrastructure/index.d.ts +1 -0
  8. package/dist/infrastructure/index.d.ts.map +1 -1
  9. package/dist/infrastructure/index.js +2 -0
  10. package/dist/infrastructure/index.js.map +1 -1
  11. package/dist/infrastructure/startup-warmer.d.ts +65 -0
  12. package/dist/infrastructure/startup-warmer.d.ts.map +1 -0
  13. package/dist/infrastructure/startup-warmer.js +257 -0
  14. package/dist/infrastructure/startup-warmer.js.map +1 -0
  15. package/dist/tools/analysis/coupling.js +181 -63
  16. package/dist/tools/analysis/coupling.js.map +1 -1
  17. package/dist/tools/analysis/cpp.d.ts +51 -0
  18. package/dist/tools/analysis/cpp.d.ts.map +1 -0
  19. package/dist/tools/analysis/cpp.js +224 -0
  20. package/dist/tools/analysis/cpp.js.map +1 -0
  21. package/dist/tools/analysis/error-handling.js +130 -37
  22. package/dist/tools/analysis/error-handling.js.map +1 -1
  23. package/dist/tools/analysis/index.d.ts +3 -0
  24. package/dist/tools/analysis/index.d.ts.map +1 -1
  25. package/dist/tools/analysis/index.js +100 -0
  26. package/dist/tools/analysis/index.js.map +1 -1
  27. package/dist/tools/analysis/quality-gate.d.ts +78 -0
  28. package/dist/tools/analysis/quality-gate.d.ts.map +1 -0
  29. package/dist/tools/analysis/quality-gate.js +164 -0
  30. package/dist/tools/analysis/quality-gate.js.map +1 -0
  31. package/dist/tools/analysis/rust.d.ts +51 -0
  32. package/dist/tools/analysis/rust.d.ts.map +1 -0
  33. package/dist/tools/analysis/rust.js +253 -0
  34. package/dist/tools/analysis/rust.js.map +1 -0
  35. package/dist/tools/analysis/simulate.d.ts +1 -0
  36. package/dist/tools/analysis/simulate.d.ts.map +1 -1
  37. package/dist/tools/analysis/simulate.js +78 -74
  38. package/dist/tools/analysis/simulate.js.map +1 -1
  39. package/dist/tools/analysis/test-topology.js +117 -44
  40. package/dist/tools/analysis/test-topology.js.map +1 -1
  41. package/dist/tools/detail/reachability.d.ts +2 -0
  42. package/dist/tools/detail/reachability.d.ts.map +1 -1
  43. package/dist/tools/detail/reachability.js +42 -32
  44. package/dist/tools/detail/reachability.js.map +1 -1
  45. package/dist/tools/orchestration/index.d.ts +2 -0
  46. package/dist/tools/orchestration/index.d.ts.map +1 -1
  47. package/dist/tools/orchestration/index.js +3 -0
  48. package/dist/tools/orchestration/index.js.map +1 -1
  49. package/dist/tools/orchestration/package-context.d.ts +134 -0
  50. package/dist/tools/orchestration/package-context.d.ts.map +1 -0
  51. package/dist/tools/orchestration/package-context.js +261 -0
  52. package/dist/tools/orchestration/package-context.js.map +1 -0
  53. package/package.json +12 -12
  54. package/LICENSE +0 -21
  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
@@ -69,89 +69,207 @@ async function handleStatus(projectRoot) {
69
69
  .buildContent();
70
70
  }
71
71
  catch {
72
- throw Errors.custom('NO_COUPLING_GRAPH', 'No coupling graph found. Build it first using the CLI: drift coupling build', ['drift coupling build']);
72
+ // No cached data - try to build on-demand from call graph
73
+ try {
74
+ const analyzer = await buildAnalyzer(projectRoot);
75
+ const hotspots = analyzer.getHotspots({ limit: 100 });
76
+ const cycles = analyzer.getCycles();
77
+ // Calculate aggregate metrics from hotspots
78
+ const totalModules = hotspots.length;
79
+ const totalEdges = hotspots.reduce((sum, h) => sum + h.coupling, 0);
80
+ const cycleCount = cycles.length;
81
+ const avgInstability = hotspots.length > 0
82
+ ? hotspots.reduce((sum, h) => sum + h.metrics.instability, 0) / hotspots.length
83
+ : 0;
84
+ const avgDistance = hotspots.length > 0
85
+ ? hotspots.reduce((sum, h) => sum + h.metrics.distance, 0) / hotspots.length
86
+ : 0;
87
+ let summaryText = `🔗 ${totalModules} modules, ${totalEdges} dependencies. `;
88
+ summaryText += `${cycleCount} cycles. `;
89
+ summaryText += `Avg instability: ${avgInstability.toFixed(2)}, distance: ${avgDistance.toFixed(2)}.`;
90
+ const warnings = [];
91
+ if (cycleCount > 0) {
92
+ warnings.push(`${cycleCount} dependency cycles detected`);
93
+ }
94
+ const hints = {
95
+ nextActions: cycleCount > 0
96
+ ? ['Run drift_coupling action="cycles" to see cycle details']
97
+ : ['Coupling looks healthy'],
98
+ warnings: warnings.length > 0 ? warnings : undefined,
99
+ relatedTools: ['drift_coupling action="cycles"', 'drift_coupling action="hotspots"'],
100
+ };
101
+ return builder
102
+ .withSummary(summaryText)
103
+ .withData({
104
+ metrics: {
105
+ totalModules,
106
+ totalEdges,
107
+ cycleCount,
108
+ avgInstability,
109
+ avgDistance,
110
+ zoneOfPain: [],
111
+ zoneOfUselessness: [],
112
+ hotspots: [],
113
+ isolatedModules: []
114
+ }
115
+ })
116
+ .withHints(hints)
117
+ .buildContent();
118
+ }
119
+ catch {
120
+ // No call graph available - return graceful empty state
121
+ return builder
122
+ .withSummary('🔗 Coupling analysis not available. Run a scan first.')
123
+ .withData({
124
+ metrics: {
125
+ totalModules: 0,
126
+ totalEdges: 0,
127
+ cycleCount: 0,
128
+ avgInstability: 0,
129
+ avgDistance: 0,
130
+ zoneOfPain: [],
131
+ zoneOfUselessness: [],
132
+ hotspots: [],
133
+ isolatedModules: []
134
+ }
135
+ })
136
+ .withHints({
137
+ nextActions: ['Run drift scan to analyze the codebase first'],
138
+ relatedTools: ['drift_status'],
139
+ })
140
+ .buildContent();
141
+ }
73
142
  }
74
143
  }
75
144
  async function handleCycles(projectRoot, maxCycleLength, minSeverity) {
76
145
  const builder = createResponseBuilder();
146
+ // First try cached data
77
147
  const graphPath = path.join(projectRoot, DRIFT_DIR, COUPLING_DIR, 'graph.json');
148
+ let cycles = [];
78
149
  try {
79
150
  const data = JSON.parse(await fs.readFile(graphPath, 'utf-8'));
80
- let cycles = data.cycles;
81
- // Filter by length
82
- if (maxCycleLength) {
83
- cycles = cycles.filter(c => c.length <= maxCycleLength);
151
+ cycles = data.cycles;
152
+ }
153
+ catch {
154
+ // Try to build on-demand
155
+ try {
156
+ const analyzer = await buildAnalyzer(projectRoot);
157
+ cycles = analyzer.getCycles();
84
158
  }
85
- // Filter by severity
86
- if (minSeverity) {
87
- const severityOrder = { critical: 0, warning: 1, info: 2 };
88
- const minOrder = severityOrder[minSeverity];
89
- cycles = cycles.filter(c => severityOrder[c.severity] <= minOrder);
159
+ catch {
160
+ // Return empty state
161
+ return builder
162
+ .withSummary('🔄 No cycle analysis available. Run a scan first.')
163
+ .withData({ cycles: [], total: 0, bySeverity: { critical: 0, warning: 0, info: 0 } })
164
+ .withHints({
165
+ nextActions: ['Run drift scan to analyze the codebase'],
166
+ relatedTools: ['drift_status'],
167
+ })
168
+ .buildContent();
90
169
  }
91
- const bySeverity = {
92
- critical: cycles.filter(c => c.severity === 'critical').length,
93
- warning: cycles.filter(c => c.severity === 'warning').length,
94
- info: cycles.filter(c => c.severity === 'info').length,
95
- };
96
- let summaryText = `🔄 ${cycles.length} cycles. `;
97
- if (bySeverity.critical > 0)
98
- summaryText += `🔴 ${bySeverity.critical} critical. `;
99
- if (bySeverity.warning > 0)
100
- summaryText += `🟡 ${bySeverity.warning} warning. `;
101
- if (bySeverity.info > 0)
102
- summaryText += `⚪ ${bySeverity.info} info.`;
103
- const hints = {
104
- nextActions: bySeverity.critical > 0
105
- ? ['Focus on breaking critical cycles first']
106
- : cycles.length > 0
107
- ? ['Consider breaking cycles to improve maintainability']
108
- : ['No cycles - good architecture!'],
109
- relatedTools: ['drift_coupling action="analyze" module="<path>"'],
110
- };
111
- return builder
112
- .withSummary(summaryText)
113
- .withData({ cycles, total: cycles.length, bySeverity })
114
- .withHints(hints)
115
- .buildContent();
116
170
  }
117
- catch {
118
- throw Errors.custom('NO_COUPLING_GRAPH', 'No coupling graph found. Build it first.', ['drift coupling build']);
171
+ // Filter by length
172
+ if (maxCycleLength) {
173
+ cycles = cycles.filter(c => c.length <= maxCycleLength);
119
174
  }
175
+ // Filter by severity
176
+ if (minSeverity) {
177
+ const severityOrder = { critical: 0, warning: 1, info: 2 };
178
+ const minOrder = severityOrder[minSeverity];
179
+ cycles = cycles.filter(c => severityOrder[c.severity] <= minOrder);
180
+ }
181
+ const bySeverity = {
182
+ critical: cycles.filter(c => c.severity === 'critical').length,
183
+ warning: cycles.filter(c => c.severity === 'warning').length,
184
+ info: cycles.filter(c => c.severity === 'info').length,
185
+ };
186
+ let summaryText = `🔄 ${cycles.length} cycles. `;
187
+ if (bySeverity.critical > 0)
188
+ summaryText += `🔴 ${bySeverity.critical} critical. `;
189
+ if (bySeverity.warning > 0)
190
+ summaryText += `🟡 ${bySeverity.warning} warning. `;
191
+ if (bySeverity.info > 0)
192
+ summaryText += `⚪ ${bySeverity.info} info.`;
193
+ const hints = {
194
+ nextActions: bySeverity.critical > 0
195
+ ? ['Focus on breaking critical cycles first']
196
+ : cycles.length > 0
197
+ ? ['Consider breaking cycles to improve maintainability']
198
+ : ['No cycles - good architecture!'],
199
+ relatedTools: ['drift_coupling action="analyze" module="<path>"'],
200
+ };
201
+ return builder
202
+ .withSummary(summaryText)
203
+ .withData({ cycles, total: cycles.length, bySeverity })
204
+ .withHints(hints)
205
+ .buildContent();
120
206
  }
121
207
  async function handleHotspots(projectRoot, limit, minCoupling) {
122
208
  const builder = createResponseBuilder();
209
+ // First try cached data
123
210
  const graphPath = path.join(projectRoot, DRIFT_DIR, COUPLING_DIR, 'graph.json');
211
+ let modules = [];
124
212
  try {
125
213
  const data = JSON.parse(await fs.readFile(graphPath, 'utf-8'));
126
- const modules = Object.entries(data.modules);
127
- const hotspots = modules
128
- .map(([modPath, mod]) => ({
129
- path: modPath,
130
- coupling: mod.metrics.Ca + mod.metrics.Ce,
131
- metrics: mod.metrics,
132
- }))
133
- .filter(h => h.coupling >= (minCoupling ?? 3))
134
- .sort((a, b) => b.coupling - a.coupling)
135
- .slice(0, limit ?? 15);
136
- let summaryText = `🔥 ${hotspots.length} coupling hotspots. `;
137
- if (hotspots.length > 0) {
138
- summaryText += `Top: ${hotspots[0].path} (${hotspots[0].coupling} connections).`;
139
- }
140
- const hints = {
141
- nextActions: hotspots.length > 0
142
- ? [`Analyze top hotspot: drift_coupling action="analyze" module="${hotspots[0].path}"`]
143
- : ['No hotspots - coupling is well distributed'],
144
- relatedTools: ['drift_coupling action="refactor-impact"'],
145
- };
146
- return builder
147
- .withSummary(summaryText)
148
- .withData({ hotspots, total: hotspots.length })
149
- .withHints(hints)
150
- .buildContent();
214
+ modules = Object.entries(data.modules);
151
215
  }
152
216
  catch {
153
- throw Errors.custom('NO_COUPLING_GRAPH', 'No coupling graph found. Build it first.', ['drift coupling build']);
217
+ // Try to build on-demand
218
+ try {
219
+ const analyzer = await buildAnalyzer(projectRoot);
220
+ const hotspots = analyzer.getHotspots({ limit: limit ?? 15, minCoupling: minCoupling ?? 3 });
221
+ let summaryText = `🔥 ${hotspots.length} coupling hotspots. `;
222
+ if (hotspots.length > 0) {
223
+ summaryText += `Top: ${hotspots[0].path} (${hotspots[0].coupling} connections).`;
224
+ }
225
+ const hints = {
226
+ nextActions: hotspots.length > 0
227
+ ? [`Analyze top hotspot: drift_coupling action="analyze" module="${hotspots[0].path}"`]
228
+ : ['No hotspots - coupling is well distributed'],
229
+ relatedTools: ['drift_coupling action="refactor-impact"'],
230
+ };
231
+ return builder
232
+ .withSummary(summaryText)
233
+ .withData({ hotspots, total: hotspots.length })
234
+ .withHints(hints)
235
+ .buildContent();
236
+ }
237
+ catch {
238
+ // Return empty state
239
+ return builder
240
+ .withSummary('🔥 No coupling hotspots analysis available. Run a scan first.')
241
+ .withData({ hotspots: [], total: 0 })
242
+ .withHints({
243
+ nextActions: ['Run drift scan to analyze the codebase'],
244
+ relatedTools: ['drift_status'],
245
+ })
246
+ .buildContent();
247
+ }
248
+ }
249
+ const hotspots = modules
250
+ .map(([modPath, mod]) => ({
251
+ path: modPath,
252
+ coupling: mod.metrics.Ca + mod.metrics.Ce,
253
+ metrics: mod.metrics,
254
+ }))
255
+ .filter(h => h.coupling >= (minCoupling ?? 3))
256
+ .sort((a, b) => b.coupling - a.coupling)
257
+ .slice(0, limit ?? 15);
258
+ let summaryText = `🔥 ${hotspots.length} coupling hotspots. `;
259
+ if (hotspots.length > 0) {
260
+ summaryText += `Top: ${hotspots[0].path} (${hotspots[0].coupling} connections).`;
154
261
  }
262
+ const hints = {
263
+ nextActions: hotspots.length > 0
264
+ ? [`Analyze top hotspot: drift_coupling action="analyze" module="${hotspots[0].path}"`]
265
+ : ['No hotspots - coupling is well distributed'],
266
+ relatedTools: ['drift_coupling action="refactor-impact"'],
267
+ };
268
+ return builder
269
+ .withSummary(summaryText)
270
+ .withData({ hotspots, total: hotspots.length })
271
+ .withHints(hints)
272
+ .buildContent();
155
273
  }
156
274
  async function handleAnalyze(projectRoot, modulePath) {
157
275
  const builder = createResponseBuilder();
@@ -1 +1 @@
1
- {"version":3,"file":"coupling.js","sourceRoot":"","sources":["../../../src/tools/analysis/coupling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coupling.js","sourceRoot":"","sources":["../../../src/tools/analysis/coupling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
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
+ export type CppAction = 'status' | 'classes' | 'memory' | 'templates' | 'virtual';
9
+ export interface CppArgs {
10
+ action: CppAction;
11
+ path?: string;
12
+ limit?: number;
13
+ framework?: string;
14
+ }
15
+ export interface ToolContext {
16
+ projectRoot: string;
17
+ }
18
+ export declare function executeCppTool(args: CppArgs, context: ToolContext): Promise<{
19
+ content: Array<{
20
+ type: string;
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ export declare const cppToolDefinition: {
25
+ name: string;
26
+ description: string;
27
+ inputSchema: {
28
+ type: string;
29
+ properties: {
30
+ action: {
31
+ type: string;
32
+ enum: string[];
33
+ description: string;
34
+ };
35
+ path: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ limit: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ framework: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ };
48
+ required: string[];
49
+ };
50
+ };
51
+ //# sourceMappingURL=cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/cpp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAwD7D;AA6JD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC7B,CAAC"}
@@ -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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"}