driftdetect-mcp 0.5.1 → 0.6.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 (36) hide show
  1. package/dist/bin/server.js +0 -0
  2. package/dist/enterprise-server.d.ts.map +1 -1
  3. package/dist/enterprise-server.js +15 -0
  4. package/dist/enterprise-server.js.map +1 -1
  5. package/dist/tools/analysis/constraints.d.ts +40 -0
  6. package/dist/tools/analysis/constraints.d.ts.map +1 -0
  7. package/dist/tools/analysis/constraints.js +236 -0
  8. package/dist/tools/analysis/constraints.js.map +1 -0
  9. package/dist/tools/analysis/decisions.d.ts +54 -0
  10. package/dist/tools/analysis/decisions.d.ts.map +1 -0
  11. package/dist/tools/analysis/decisions.js +307 -0
  12. package/dist/tools/analysis/decisions.js.map +1 -0
  13. package/dist/tools/analysis/go.d.ts +22 -0
  14. package/dist/tools/analysis/go.d.ts.map +1 -0
  15. package/dist/tools/analysis/go.js +214 -0
  16. package/dist/tools/analysis/go.js.map +1 -0
  17. package/dist/tools/analysis/index.d.ts +5 -0
  18. package/dist/tools/analysis/index.d.ts.map +1 -1
  19. package/dist/tools/analysis/index.js +209 -0
  20. package/dist/tools/analysis/index.js.map +1 -1
  21. package/dist/tools/analysis/simulate.d.ts +27 -0
  22. package/dist/tools/analysis/simulate.d.ts.map +1 -0
  23. package/dist/tools/analysis/simulate.js +89 -0
  24. package/dist/tools/analysis/simulate.js.map +1 -0
  25. package/dist/tools/analysis/wpf.d.ts +23 -0
  26. package/dist/tools/analysis/wpf.d.ts.map +1 -0
  27. package/dist/tools/analysis/wpf.js +240 -0
  28. package/dist/tools/analysis/wpf.js.map +1 -0
  29. package/dist/tools/detail/files-list.js +5 -5
  30. package/dist/tools/detail/files-list.js.map +1 -1
  31. package/dist/tools/orchestration/context.d.ts +15 -1
  32. package/dist/tools/orchestration/context.d.ts.map +1 -1
  33. package/dist/tools/orchestration/context.js +248 -4
  34. package/dist/tools/orchestration/context.js.map +1 -1
  35. package/package.json +31 -16
  36. package/LICENSE +0 -21
@@ -0,0 +1,307 @@
1
+ /**
2
+ * drift_decisions - Decision Mining Analysis
3
+ *
4
+ * Analysis tool for mining architectural decisions from git history.
5
+ * Answers: "What architectural decisions were made?" and "Why was this code structured this way?"
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import { createDecisionMiningAnalyzer, } from 'driftdetect-core';
10
+ import { createResponseBuilder, Errors } from '../../infrastructure/index.js';
11
+ // ============================================================================
12
+ // Constants
13
+ // ============================================================================
14
+ const DRIFT_DIR = '.drift';
15
+ const DECISIONS_DIR = 'decisions';
16
+ // ============================================================================
17
+ // Handler
18
+ // ============================================================================
19
+ export async function handleDecisions(projectRoot, args) {
20
+ const { action } = args;
21
+ switch (action) {
22
+ case 'status':
23
+ return handleStatus(projectRoot);
24
+ case 'list':
25
+ return handleList(projectRoot, args.category, args.limit);
26
+ case 'get':
27
+ return handleGet(projectRoot, args.id);
28
+ case 'for-file':
29
+ return handleForFile(projectRoot, args.file);
30
+ case 'timeline':
31
+ return handleTimeline(projectRoot, args.limit);
32
+ case 'search':
33
+ return handleSearch(projectRoot, args.query, args.limit);
34
+ case 'mine':
35
+ return handleMine(projectRoot, args.since, args.until, args.minConfidence);
36
+ default:
37
+ throw Errors.invalidArgument('action', `Invalid action: ${action}. Valid actions: status, list, get, for-file, timeline, search, mine`);
38
+ }
39
+ }
40
+ // ============================================================================
41
+ // Action Handlers
42
+ // ============================================================================
43
+ async function handleStatus(projectRoot) {
44
+ const builder = createResponseBuilder();
45
+ const indexPath = path.join(projectRoot, DRIFT_DIR, DECISIONS_DIR, 'index.json');
46
+ try {
47
+ const data = JSON.parse(await fs.readFile(indexPath, 'utf-8'));
48
+ const { summary } = data;
49
+ let summaryText = `📜 ${summary.totalDecisions} decisions mined. `;
50
+ summaryText += `${summary.byStatus.draft} draft, ${summary.byStatus.confirmed} confirmed. `;
51
+ summaryText += `${summary.byConfidence.high} high confidence.`;
52
+ const hints = {
53
+ nextActions: [
54
+ summary.byStatus.draft > 0
55
+ ? 'Review draft decisions with drift_decisions action="list"'
56
+ : 'All decisions confirmed',
57
+ ],
58
+ relatedTools: ['drift_decisions action="list"', 'drift_decisions action="timeline"'],
59
+ };
60
+ return builder
61
+ .withSummary(summaryText)
62
+ .withData({ summary, generatedAt: data.lastUpdated })
63
+ .withHints(hints)
64
+ .buildContent();
65
+ }
66
+ catch {
67
+ throw Errors.custom('NO_DECISIONS', 'No decisions found. Mine them first using the CLI: drift decisions mine', ['drift decisions mine']);
68
+ }
69
+ }
70
+ async function handleList(projectRoot, category, limit) {
71
+ const builder = createResponseBuilder();
72
+ const decisions = await loadDecisions(projectRoot);
73
+ if (!decisions) {
74
+ throw Errors.custom('NO_DECISIONS', 'No decisions found. Mine them first.', ['drift decisions mine']);
75
+ }
76
+ let filtered = decisions;
77
+ // Filter by category
78
+ if (category) {
79
+ filtered = filtered.filter(d => d.category === category);
80
+ }
81
+ // Sort by confidence
82
+ filtered.sort((a, b) => b.confidenceScore - a.confidenceScore);
83
+ // Apply limit
84
+ const limitedDecisions = filtered.slice(0, limit ?? 20);
85
+ let summaryText = `📜 ${limitedDecisions.length} decisions`;
86
+ if (category) {
87
+ summaryText += ` in ${category}`;
88
+ }
89
+ summaryText += `. Showing top by confidence.`;
90
+ const hints = {
91
+ nextActions: limitedDecisions.length > 0
92
+ ? [`View details: drift_decisions action="get" id="${limitedDecisions[0]?.id}"`]
93
+ : ['Mine decisions first'],
94
+ relatedTools: ['drift_decisions action="get"', 'drift_decisions action="for-file"'],
95
+ };
96
+ return builder
97
+ .withSummary(summaryText)
98
+ .withData({ decisions: limitedDecisions, total: filtered.length })
99
+ .withHints(hints)
100
+ .buildContent();
101
+ }
102
+ async function handleGet(projectRoot, id) {
103
+ const builder = createResponseBuilder();
104
+ if (!id) {
105
+ throw Errors.missingParameter('id');
106
+ }
107
+ try {
108
+ const decisionPath = path.join(projectRoot, DRIFT_DIR, DECISIONS_DIR, `${id}.json`);
109
+ const decision = JSON.parse(await fs.readFile(decisionPath, 'utf-8'));
110
+ let summaryText = `📜 ${decision.id}: ${decision.title}. `;
111
+ summaryText += `${decision.status} | ${decision.confidence} confidence | ${decision.category}.`;
112
+ const hints = {
113
+ nextActions: decision.status === 'draft'
114
+ ? ['Confirm with: drift decisions confirm ' + id]
115
+ : ['View related decisions'],
116
+ relatedTools: ['drift_decisions action="for-file"', 'drift_decisions action="timeline"'],
117
+ };
118
+ return builder
119
+ .withSummary(summaryText)
120
+ .withData({ decision })
121
+ .withHints(hints)
122
+ .buildContent();
123
+ }
124
+ catch {
125
+ throw Errors.custom('DECISION_NOT_FOUND', `Decision not found: ${id}`, ['drift_decisions action="list"']);
126
+ }
127
+ }
128
+ async function handleForFile(projectRoot, file) {
129
+ const builder = createResponseBuilder();
130
+ if (!file) {
131
+ throw Errors.missingParameter('file');
132
+ }
133
+ const decisions = await loadDecisions(projectRoot);
134
+ if (!decisions) {
135
+ throw Errors.custom('NO_DECISIONS', 'No decisions found. Mine them first.', ['drift decisions mine']);
136
+ }
137
+ // Find decisions affecting this file
138
+ const matching = decisions.filter(d => d.cluster.filesAffected.some(f => f.includes(file) || file.includes(f)));
139
+ let summaryText = `📜 ${matching.length} decisions affect ${file}.`;
140
+ const hints = {
141
+ nextActions: matching.length > 0
142
+ ? [`View decision: drift_decisions action="get" id="${matching[0]?.id}"`]
143
+ : ['No decisions found for this file'],
144
+ relatedTools: ['drift_decisions action="get"', 'drift_impact_analysis'],
145
+ };
146
+ return builder
147
+ .withSummary(summaryText)
148
+ .withData({ file, decisions: matching })
149
+ .withHints(hints)
150
+ .buildContent();
151
+ }
152
+ async function handleTimeline(projectRoot, limit) {
153
+ const builder = createResponseBuilder();
154
+ const decisions = await loadDecisions(projectRoot);
155
+ if (!decisions) {
156
+ throw Errors.custom('NO_DECISIONS', 'No decisions found. Mine them first.', ['drift decisions mine']);
157
+ }
158
+ // Sort by date (newest first)
159
+ const sorted = [...decisions].sort((a, b) => new Date(b.dateRange.end).getTime() - new Date(a.dateRange.end).getTime()).slice(0, limit ?? 20);
160
+ // Group by month
161
+ const byMonth = new Map();
162
+ for (const decision of sorted) {
163
+ const date = new Date(decision.dateRange.end);
164
+ const month = date.toLocaleDateString('en-US', { year: 'numeric', month: 'long' });
165
+ if (!byMonth.has(month)) {
166
+ byMonth.set(month, []);
167
+ }
168
+ byMonth.get(month).push(decision);
169
+ }
170
+ const timeline = Array.from(byMonth.entries()).map(([month, decisions]) => ({
171
+ month,
172
+ decisions,
173
+ }));
174
+ let summaryText = `📅 ${sorted.length} decisions across ${timeline.length} months.`;
175
+ const hints = {
176
+ nextActions: ['View specific decision for details'],
177
+ relatedTools: ['drift_decisions action="get"', 'drift_trends'],
178
+ };
179
+ return builder
180
+ .withSummary(summaryText)
181
+ .withData({ timeline })
182
+ .withHints(hints)
183
+ .buildContent();
184
+ }
185
+ async function handleSearch(projectRoot, query, limit) {
186
+ const builder = createResponseBuilder();
187
+ if (!query) {
188
+ throw Errors.missingParameter('query');
189
+ }
190
+ const decisions = await loadDecisions(projectRoot);
191
+ if (!decisions) {
192
+ throw Errors.custom('NO_DECISIONS', 'No decisions found. Mine them first.', ['drift decisions mine']);
193
+ }
194
+ const queryLower = query.toLowerCase();
195
+ // Search in title, ADR content, and tags
196
+ const results = decisions.filter(d => d.title.toLowerCase().includes(queryLower) ||
197
+ d.adr.context.toLowerCase().includes(queryLower) ||
198
+ d.adr.decision.toLowerCase().includes(queryLower) ||
199
+ d.tags.some(t => t.toLowerCase().includes(queryLower)) ||
200
+ d.category.toLowerCase().includes(queryLower)).slice(0, limit ?? 10);
201
+ let summaryText = `🔍 ${results.length} decisions match "${query}".`;
202
+ const hints = {
203
+ nextActions: results.length > 0
204
+ ? [`View: drift_decisions action="get" id="${results[0]?.id}"`]
205
+ : ['Try a different search term'],
206
+ relatedTools: ['drift_decisions action="list"'],
207
+ };
208
+ return builder
209
+ .withSummary(summaryText)
210
+ .withData({ query, results })
211
+ .withHints(hints)
212
+ .buildContent();
213
+ }
214
+ async function handleMine(projectRoot, since, until, minConfidence) {
215
+ const builder = createResponseBuilder();
216
+ // Build options conditionally to satisfy exactOptionalPropertyTypes
217
+ const options = {
218
+ rootDir: projectRoot,
219
+ minConfidence: minConfidence ?? 0.5,
220
+ };
221
+ if (since) {
222
+ options.since = new Date(since);
223
+ }
224
+ if (until) {
225
+ options.until = new Date(until);
226
+ }
227
+ // Create analyzer
228
+ const analyzer = createDecisionMiningAnalyzer(options);
229
+ // Run mining
230
+ const result = await analyzer.mine();
231
+ // Save results
232
+ await saveDecisions(projectRoot, result);
233
+ let summaryText = `📜 Mined ${result.decisions.length} decisions from ${result.summary.totalCommitsAnalyzed} commits. `;
234
+ summaryText += `${result.summary.byConfidence.high} high confidence.`;
235
+ const hints = {
236
+ nextActions: result.decisions.length > 0
237
+ ? ['View decisions with drift_decisions action="list"']
238
+ : ['Try adjusting date range or confidence threshold'],
239
+ warnings: result.errors.length > 0
240
+ ? [`${result.errors.length} errors during mining`]
241
+ : undefined,
242
+ relatedTools: ['drift_decisions action="status"', 'drift_decisions action="timeline"'],
243
+ };
244
+ return builder
245
+ .withSummary(summaryText)
246
+ .withData({ result })
247
+ .withHints(hints)
248
+ .buildContent();
249
+ }
250
+ // ============================================================================
251
+ // Helpers
252
+ // ============================================================================
253
+ async function loadDecisions(projectRoot) {
254
+ try {
255
+ const indexPath = path.join(projectRoot, DRIFT_DIR, DECISIONS_DIR, 'index.json');
256
+ const indexData = JSON.parse(await fs.readFile(indexPath, 'utf-8'));
257
+ const decisions = [];
258
+ for (const id of indexData.decisionIds) {
259
+ const decisionPath = path.join(projectRoot, DRIFT_DIR, DECISIONS_DIR, `${id}.json`);
260
+ try {
261
+ const decision = JSON.parse(await fs.readFile(decisionPath, 'utf-8'));
262
+ decisions.push(decision);
263
+ }
264
+ catch {
265
+ // Skip missing decisions
266
+ }
267
+ }
268
+ return decisions;
269
+ }
270
+ catch {
271
+ return null;
272
+ }
273
+ }
274
+ async function saveDecisions(projectRoot, result) {
275
+ const decisionsDir = path.join(projectRoot, DRIFT_DIR, DECISIONS_DIR);
276
+ await fs.mkdir(decisionsDir, { recursive: true });
277
+ // Save each decision
278
+ for (const decision of result.decisions) {
279
+ const decisionPath = path.join(decisionsDir, `${decision.id}.json`);
280
+ await fs.writeFile(decisionPath, JSON.stringify(decision, null, 2));
281
+ }
282
+ // Build and save index
283
+ const index = {
284
+ version: '1.0.0',
285
+ decisionIds: result.decisions.map(d => d.id),
286
+ byStatus: {
287
+ draft: result.decisions.filter(d => d.status === 'draft').map(d => d.id),
288
+ confirmed: result.decisions.filter(d => d.status === 'confirmed').map(d => d.id),
289
+ superseded: result.decisions.filter(d => d.status === 'superseded').map(d => d.id),
290
+ rejected: result.decisions.filter(d => d.status === 'rejected').map(d => d.id),
291
+ },
292
+ byCategory: {},
293
+ summary: result.summary,
294
+ lastUpdated: new Date().toISOString(),
295
+ };
296
+ const categories = [
297
+ 'technology-adoption', 'technology-removal', 'pattern-introduction',
298
+ 'pattern-migration', 'architecture-change', 'api-change',
299
+ 'security-enhancement', 'performance-optimization', 'refactoring',
300
+ 'testing-strategy', 'infrastructure', 'other'
301
+ ];
302
+ for (const category of categories) {
303
+ index.byCategory[category] = result.decisions.filter(d => d.category === category).map(d => d.id);
304
+ }
305
+ await fs.writeFile(path.join(decisionsDir, 'index.json'), JSON.stringify(index, null, 2));
306
+ }
307
+ //# sourceMappingURL=decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../../src/tools/analysis/decisions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Go Analysis MCP Tool
3
+ *
4
+ * Analyze Go projects: routes, error handling, interfaces, data access, goroutines.
5
+ */
6
+ export type GoAction = 'status' | 'routes' | 'errors' | 'interfaces' | 'data-access' | 'goroutines';
7
+ export interface GoArgs {
8
+ action: GoAction;
9
+ path?: string;
10
+ framework?: string;
11
+ limit?: number;
12
+ }
13
+ export interface ToolContext {
14
+ projectRoot: string;
15
+ }
16
+ export declare function executeGoTool(args: GoArgs, context: ToolContext): Promise<{
17
+ content: Array<{
18
+ type: string;
19
+ text: string;
20
+ }>;
21
+ }>;
22
+ //# sourceMappingURL=go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/go.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,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,CA0D7D"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Go Analysis MCP Tool
3
+ *
4
+ * Analyze Go projects: routes, error handling, interfaces, data access, goroutines.
5
+ */
6
+ import { createGoAnalyzer, } from 'driftdetect-core';
7
+ // ============================================================================
8
+ // Tool Implementation
9
+ // ============================================================================
10
+ export async function executeGoTool(args, context) {
11
+ const projectPath = args.path ?? context.projectRoot;
12
+ const limit = args.limit ?? 50;
13
+ const analyzer = createGoAnalyzer({
14
+ rootDir: projectPath,
15
+ verbose: false,
16
+ });
17
+ let result;
18
+ switch (args.action) {
19
+ case 'status': {
20
+ const analysisResult = await analyzer.analyze();
21
+ result = formatStatusResult(analysisResult, limit);
22
+ break;
23
+ }
24
+ case 'routes': {
25
+ const routesResult = await analyzer.analyzeRoutes();
26
+ result = formatRoutesResult(routesResult, args.framework, limit);
27
+ break;
28
+ }
29
+ case 'errors': {
30
+ const errorsResult = await analyzer.analyzeErrorHandling();
31
+ result = formatErrorsResult(errorsResult, limit);
32
+ break;
33
+ }
34
+ case 'interfaces': {
35
+ const interfacesResult = await analyzer.analyzeInterfaces();
36
+ result = formatInterfacesResult(interfacesResult, limit);
37
+ break;
38
+ }
39
+ case 'data-access': {
40
+ const dataAccessResult = await analyzer.analyzeDataAccess();
41
+ result = formatDataAccessResult(dataAccessResult, limit);
42
+ break;
43
+ }
44
+ case 'goroutines': {
45
+ const goroutinesResult = await analyzer.analyzeGoroutines();
46
+ result = formatGoroutinesResult(goroutinesResult, limit);
47
+ break;
48
+ }
49
+ default:
50
+ throw new Error(`Unknown action: ${args.action}`);
51
+ }
52
+ return {
53
+ content: [{
54
+ type: 'text',
55
+ text: JSON.stringify(result, null, 2),
56
+ }],
57
+ };
58
+ }
59
+ // ============================================================================
60
+ // Result Formatters
61
+ // ============================================================================
62
+ function formatStatusResult(result, limit) {
63
+ return {
64
+ project: {
65
+ moduleName: result.moduleName,
66
+ goVersion: result.goVersion,
67
+ packages: result.packages.length,
68
+ files: result.stats.fileCount,
69
+ functions: result.stats.functionCount,
70
+ structs: result.stats.structCount,
71
+ interfaces: result.stats.interfaceCount,
72
+ },
73
+ frameworks: result.detectedFrameworks,
74
+ stats: {
75
+ linesOfCode: result.stats.linesOfCode,
76
+ testFiles: result.stats.testFileCount,
77
+ testFunctions: result.stats.testFunctionCount,
78
+ analysisTimeMs: Math.round(result.stats.analysisTimeMs),
79
+ },
80
+ topPackages: result.packages
81
+ .slice(0, limit)
82
+ .map((pkg) => ({
83
+ name: pkg.name,
84
+ path: pkg.path,
85
+ files: pkg.files.length,
86
+ functions: pkg.functions.length,
87
+ })),
88
+ summary: `Go project with ${result.stats.fileCount} files, ${result.stats.functionCount} functions, ${result.stats.structCount} structs`,
89
+ };
90
+ }
91
+ function formatRoutesResult(result, framework, limit) {
92
+ let routes = result.routes;
93
+ if (framework) {
94
+ routes = routes.filter((r) => r.framework === framework);
95
+ }
96
+ return {
97
+ total: routes.length,
98
+ byFramework: result.byFramework,
99
+ routes: routes.slice(0, limit).map((r) => ({
100
+ method: r.method,
101
+ path: r.path,
102
+ handler: r.handler,
103
+ framework: r.framework,
104
+ file: r.file,
105
+ line: r.line,
106
+ middleware: r.middleware,
107
+ })),
108
+ truncated: routes.length > limit,
109
+ summary: `${routes.length} HTTP routes across ${Object.keys(result.byFramework).length} framework(s)`,
110
+ };
111
+ }
112
+ function formatErrorsResult(result, limit) {
113
+ return {
114
+ stats: {
115
+ errorChecks: result.stats.errorChecks,
116
+ wrappedErrors: result.stats.wrappedErrors,
117
+ sentinelErrors: result.stats.sentinelErrors,
118
+ customErrorTypes: result.stats.customErrorTypes,
119
+ uncheckedErrors: result.stats.uncheckedErrors,
120
+ },
121
+ patterns: {
122
+ propagated: result.patterns.filter((p) => p.type === 'propagated').length,
123
+ wrapped: result.patterns.filter((p) => p.type === 'wrapped').length,
124
+ logged: result.patterns.filter((p) => p.type === 'logged').length,
125
+ ignored: result.patterns.filter((p) => p.type === 'ignored').length,
126
+ },
127
+ issues: result.issues.slice(0, limit).map((i) => ({
128
+ type: i.type,
129
+ file: i.file,
130
+ line: i.line,
131
+ message: i.message,
132
+ suggestion: i.suggestion,
133
+ })),
134
+ sentinelErrors: result.sentinelErrors.slice(0, limit).map((e) => ({
135
+ name: e.name,
136
+ message: e.message,
137
+ file: e.file,
138
+ line: e.line,
139
+ })),
140
+ customErrors: result.customErrors.slice(0, limit).map((e) => ({
141
+ name: e.name,
142
+ implementsError: e.implementsError,
143
+ file: e.file,
144
+ line: e.line,
145
+ })),
146
+ summary: `${result.stats.errorChecks} error checks, ${result.issues.length} potential issues`,
147
+ };
148
+ }
149
+ function formatInterfacesResult(result, limit) {
150
+ return {
151
+ total: result.interfaces.length,
152
+ interfaces: result.interfaces.slice(0, limit).map((i) => ({
153
+ name: i.name,
154
+ package: i.package,
155
+ methods: i.methods,
156
+ implementations: i.implementations,
157
+ file: i.file,
158
+ line: i.line,
159
+ })),
160
+ implementations: result.implementations.slice(0, limit).map((impl) => ({
161
+ struct: impl.struct,
162
+ interface: impl.interface,
163
+ file: impl.file,
164
+ line: impl.line,
165
+ })),
166
+ truncated: result.interfaces.length > limit,
167
+ summary: `${result.interfaces.length} interfaces with ${result.implementations.length} implementations`,
168
+ };
169
+ }
170
+ function formatDataAccessResult(result, limit) {
171
+ return {
172
+ total: result.accessPoints.length,
173
+ byFramework: result.byFramework,
174
+ byOperation: result.byOperation,
175
+ tables: result.tables,
176
+ accessPoints: result.accessPoints.slice(0, limit).map((a) => ({
177
+ table: a.table,
178
+ operation: a.operation,
179
+ framework: a.framework,
180
+ file: a.file,
181
+ line: a.line,
182
+ isRawSql: a.isRawSql,
183
+ })),
184
+ truncated: result.accessPoints.length > limit,
185
+ summary: `${result.accessPoints.length} data access points across ${result.tables.length} tables`,
186
+ };
187
+ }
188
+ function formatGoroutinesResult(result, limit) {
189
+ return {
190
+ total: result.goroutines.length,
191
+ stats: {
192
+ goStatements: result.stats.goStatements,
193
+ channels: result.stats.channels,
194
+ mutexes: result.stats.mutexes,
195
+ waitGroups: result.stats.waitGroups,
196
+ },
197
+ goroutines: result.goroutines.slice(0, limit).map((g) => ({
198
+ file: g.file,
199
+ line: g.line,
200
+ function: g.function,
201
+ hasRecover: g.hasRecover,
202
+ channelOps: g.channelOps,
203
+ })),
204
+ potentialIssues: result.issues.slice(0, limit).map((i) => ({
205
+ type: i.type,
206
+ file: i.file,
207
+ line: i.line,
208
+ message: i.message,
209
+ })),
210
+ truncated: result.goroutines.length > limit,
211
+ summary: `${result.goroutines.length} goroutines, ${result.issues.length} potential concurrency issues`,
212
+ };
213
+ }
214
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../src/tools/analysis/go.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,9 @@ export declare const ANALYSIS_TOOLS: Tool[];
8
8
  export { handleTestTopology, type TestTopologyArgs, type TestTopologyAction } from './test-topology.js';
9
9
  export { handleCoupling, type CouplingArgs, type CouplingAction } from './coupling.js';
10
10
  export { handleErrorHandling, type ErrorHandlingArgs, type ErrorHandlingAction } from './error-handling.js';
11
+ export { handleDecisions, type DecisionsArgs, type DecisionsAction } from './decisions.js';
12
+ export { handleSimulate, type SimulateArgs } from './simulate.js';
13
+ export { handleConstraints, type ConstraintsArgs, type ConstraintsAction } from './constraints.js';
14
+ export { executeWpfTool, type WpfArgs, type WpfAction } from './wpf.js';
15
+ export { executeGoTool, type GoArgs, type GoAction } from './go.js';
11
16
  //# 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;AAM/D,eAAO,MAAM,cAAc,EAAE,IAAI,EAkGhC,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"}
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;AAsB/D,eAAO,MAAM,cAAc,EAAE,IAAI,EA+RhC,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"}