driftdetect-mcp 0.4.6 → 0.5.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 (85) hide show
  1. package/dist/enterprise-server.d.ts +7 -0
  2. package/dist/enterprise-server.d.ts.map +1 -1
  3. package/dist/enterprise-server.js +79 -9
  4. package/dist/enterprise-server.js.map +1 -1
  5. package/dist/tools/analysis/coupling.d.ts +56 -0
  6. package/dist/tools/analysis/coupling.d.ts.map +1 -0
  7. package/dist/tools/analysis/coupling.js +248 -0
  8. package/dist/tools/analysis/coupling.js.map +1 -0
  9. package/dist/tools/analysis/error-handling.d.ts +45 -0
  10. package/dist/tools/analysis/error-handling.d.ts.map +1 -0
  11. package/dist/tools/analysis/error-handling.js +220 -0
  12. package/dist/tools/analysis/error-handling.js.map +1 -0
  13. package/dist/tools/analysis/index.d.ts +11 -0
  14. package/dist/tools/analysis/index.d.ts.map +1 -0
  15. package/dist/tools/analysis/index.js +111 -0
  16. package/dist/tools/analysis/index.js.map +1 -0
  17. package/dist/tools/analysis/test-topology.d.ts +43 -0
  18. package/dist/tools/analysis/test-topology.d.ts.map +1 -0
  19. package/dist/tools/analysis/test-topology.js +294 -0
  20. package/dist/tools/analysis/test-topology.js.map +1 -0
  21. package/dist/tools/detail/code-examples.d.ts +20 -3
  22. package/dist/tools/detail/code-examples.d.ts.map +1 -1
  23. package/dist/tools/detail/code-examples.js +104 -0
  24. package/dist/tools/detail/code-examples.js.map +1 -1
  25. package/dist/tools/detail/file-patterns.d.ts +3 -2
  26. package/dist/tools/detail/file-patterns.d.ts.map +1 -1
  27. package/dist/tools/detail/file-patterns.js +20 -12
  28. package/dist/tools/detail/file-patterns.js.map +1 -1
  29. package/dist/tools/detail/files-list.d.ts +3 -3
  30. package/dist/tools/detail/files-list.d.ts.map +1 -1
  31. package/dist/tools/detail/files-list.js +33 -16
  32. package/dist/tools/detail/files-list.js.map +1 -1
  33. package/dist/tools/detail/index.d.ts +6 -4
  34. package/dist/tools/detail/index.d.ts.map +1 -1
  35. package/dist/tools/detail/index.js +44 -2
  36. package/dist/tools/detail/index.js.map +1 -1
  37. package/dist/tools/detail/pattern-get.d.ts +20 -3
  38. package/dist/tools/detail/pattern-get.d.ts.map +1 -1
  39. package/dist/tools/detail/pattern-get.js +87 -0
  40. package/dist/tools/detail/pattern-get.js.map +1 -1
  41. package/dist/tools/detail/wrappers.d.ts +97 -0
  42. package/dist/tools/detail/wrappers.d.ts.map +1 -0
  43. package/dist/tools/detail/wrappers.js +124 -0
  44. package/dist/tools/detail/wrappers.js.map +1 -0
  45. package/dist/tools/discovery/index.d.ts +3 -1
  46. package/dist/tools/discovery/index.d.ts.map +1 -1
  47. package/dist/tools/discovery/index.js +36 -1
  48. package/dist/tools/discovery/index.js.map +1 -1
  49. package/dist/tools/discovery/status.d.ts +16 -3
  50. package/dist/tools/discovery/status.d.ts.map +1 -1
  51. package/dist/tools/discovery/status.js +83 -1
  52. package/dist/tools/discovery/status.js.map +1 -1
  53. package/dist/tools/exploration/index.d.ts +2 -2
  54. package/dist/tools/exploration/index.d.ts.map +1 -1
  55. package/dist/tools/exploration/index.js +1 -1
  56. package/dist/tools/exploration/index.js.map +1 -1
  57. package/dist/tools/exploration/patterns-list.d.ts +21 -4
  58. package/dist/tools/exploration/patterns-list.d.ts.map +1 -1
  59. package/dist/tools/exploration/patterns-list.js +70 -0
  60. package/dist/tools/exploration/patterns-list.js.map +1 -1
  61. package/dist/tools/generation/__tests__/generation-tools.test.d.ts +6 -0
  62. package/dist/tools/generation/__tests__/generation-tools.test.d.ts.map +1 -0
  63. package/dist/tools/generation/__tests__/generation-tools.test.js +119 -0
  64. package/dist/tools/generation/__tests__/generation-tools.test.js.map +1 -0
  65. package/dist/tools/generation/explain.d.ts +75 -0
  66. package/dist/tools/generation/explain.d.ts.map +1 -0
  67. package/dist/tools/generation/explain.js +238 -0
  68. package/dist/tools/generation/explain.js.map +1 -0
  69. package/dist/tools/generation/index.d.ts +12 -0
  70. package/dist/tools/generation/index.d.ts.map +1 -0
  71. package/dist/tools/generation/index.js +90 -0
  72. package/dist/tools/generation/index.js.map +1 -0
  73. package/dist/tools/generation/suggest-changes.d.ts +64 -0
  74. package/dist/tools/generation/suggest-changes.d.ts.map +1 -0
  75. package/dist/tools/generation/suggest-changes.js +342 -0
  76. package/dist/tools/generation/suggest-changes.js.map +1 -0
  77. package/dist/tools/generation/validate-change.d.ts +76 -0
  78. package/dist/tools/generation/validate-change.d.ts.map +1 -0
  79. package/dist/tools/generation/validate-change.js +415 -0
  80. package/dist/tools/generation/validate-change.js.map +1 -0
  81. package/dist/tools/registry.d.ts +5 -1
  82. package/dist/tools/registry.d.ts.map +1 -1
  83. package/dist/tools/registry.js +12 -0
  84. package/dist/tools/registry.js.map +1 -1
  85. package/package.json +3 -3
@@ -13,6 +13,9 @@
13
13
  * - Response caching
14
14
  * - Rate limiting
15
15
  * - Metrics collection
16
+ *
17
+ * MIGRATION: Now uses IPatternService for pattern operations.
18
+ * The service provides a unified interface with caching and business logic.
16
19
  */
17
20
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
18
21
  export interface EnterpriseMCPConfig {
@@ -21,6 +24,8 @@ export interface EnterpriseMCPConfig {
21
24
  enableRateLimiting?: boolean;
22
25
  enableMetrics?: boolean;
23
26
  maxRequestsPerMinute?: number;
27
+ /** Use the new IPatternService instead of direct PatternStore access */
28
+ usePatternService?: boolean;
24
29
  }
25
30
  export declare function createEnterpriseMCPServer(config: EnterpriseMCPConfig): Server;
26
31
  /**
@@ -31,6 +36,8 @@ export declare function getToolCategories(): {
31
36
  discovery: string[];
32
37
  exploration: string[];
33
38
  detail: string[];
39
+ analysis: string[];
40
+ generation: string[];
34
41
  };
35
42
  /**
36
43
  * Get all tools
@@ -1 +1 @@
1
- {"version":3,"file":"enterprise-server.d.ts","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAkDnE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAwF7E;AAgHD;;GAEG;AACH,wBAAgB,iBAAiB;;;;;EAEhC;AAED;;GAEG;AACH,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE1B"}
1
+ {"version":3,"file":"enterprise-server.d.ts","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAkEnE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAwG7E;AAoMD;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;EAEhC;AAED;;GAEG;AACH,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE1B"}
@@ -13,32 +13,46 @@
13
13
  * - Response caching
14
14
  * - Rate limiting
15
15
  * - Metrics collection
16
+ *
17
+ * MIGRATION: Now uses IPatternService for pattern operations.
18
+ * The service provides a unified interface with caching and business logic.
16
19
  */
17
20
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
18
21
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
19
- import { PatternStore, ManifestStore, HistoryStore, DNAStore, BoundaryStore, ContractStore, CallGraphStore, createDataLake, } from 'driftdetect-core';
22
+ import { PatternStore, ManifestStore, HistoryStore, DNAStore, BoundaryStore, ContractStore, CallGraphStore, createDataLake, createPatternServiceFromStore, } from 'driftdetect-core';
20
23
  // Infrastructure
21
24
  import { handleError, rateLimiter, metrics, createCache, } from './infrastructure/index.js';
22
25
  // Tool definitions
23
26
  import { ALL_TOOLS, TOOL_CATEGORIES } from './tools/registry.js';
24
27
  // Discovery handlers
25
- import { handleStatus } from './tools/discovery/status.js';
28
+ import { handleStatus, handleStatusWithService } from './tools/discovery/status.js';
26
29
  import { handleCapabilities } from './tools/discovery/capabilities.js';
27
30
  // Exploration handlers
28
- import { handlePatternsList } from './tools/exploration/patterns-list.js';
31
+ import { handlePatternsList, handlePatternsListWithService } from './tools/exploration/patterns-list.js';
29
32
  import { handleSecuritySummary } from './tools/exploration/security-summary.js';
30
33
  import { handleContractsList } from './tools/exploration/contracts-list.js';
31
34
  import { handleTrends } from './tools/exploration/trends.js';
32
35
  // Detail handlers
33
- import { handlePatternGet } from './tools/detail/pattern-get.js';
34
- import { handleCodeExamples } from './tools/detail/code-examples.js';
36
+ import { handlePatternGet, handlePatternGetWithService } from './tools/detail/pattern-get.js';
37
+ import { handleCodeExamples, handleCodeExamplesWithService } from './tools/detail/code-examples.js';
35
38
  import { handleFilesList } from './tools/detail/files-list.js';
36
39
  import { handleFilePatterns } from './tools/detail/file-patterns.js';
37
40
  import { handleImpactAnalysis } from './tools/detail/impact-analysis.js';
38
41
  import { handleReachability } from './tools/detail/reachability.js';
39
42
  import { handleDNAProfile } from './tools/detail/dna-profile.js';
43
+ import { handleWrappers } from './tools/detail/wrappers.js';
44
+ // Discovery handlers (additional)
45
+ import { handleProjects } from './tools/discovery/projects.js';
40
46
  // Orchestration handlers
41
47
  import { handleContext } from './tools/orchestration/index.js';
48
+ // Generation handlers (new AI-powered tools)
49
+ import { handleSuggestChanges } from './tools/generation/suggest-changes.js';
50
+ import { handleValidateChange } from './tools/generation/validate-change.js';
51
+ import { handleExplain } from './tools/generation/explain.js';
52
+ // Analysis handlers (L5-L7 layers)
53
+ import { handleTestTopology } from './tools/analysis/test-topology.js';
54
+ import { handleCoupling } from './tools/analysis/coupling.js';
55
+ import { handleErrorHandling } from './tools/analysis/error-handling.js';
42
56
  export function createEnterpriseMCPServer(config) {
43
57
  const server = new Server({ name: 'drift-enterprise', version: '2.0.0' }, { capabilities: { tools: {} } });
44
58
  // Initialize stores
@@ -51,6 +65,14 @@ export function createEnterpriseMCPServer(config) {
51
65
  contract: new ContractStore({ rootDir: config.projectRoot }),
52
66
  callGraph: new CallGraphStore({ rootDir: config.projectRoot }),
53
67
  };
68
+ // Initialize pattern service (wraps PatternStore with unified interface)
69
+ // Default to using the new service for better abstraction
70
+ const usePatternService = config.usePatternService !== false;
71
+ const patternService = usePatternService
72
+ ? createPatternServiceFromStore(stores.pattern, config.projectRoot, {
73
+ enableCache: config.enableCache !== false,
74
+ })
75
+ : null;
54
76
  // Initialize data lake for optimized queries
55
77
  const dataLake = createDataLake({ rootDir: config.projectRoot });
56
78
  // Initialize cache if enabled
@@ -97,7 +119,7 @@ export function createEnterpriseMCPServer(config) {
97
119
  }
98
120
  }
99
121
  // Route to handler
100
- const result = await routeToolCall(name, args, stores, config.projectRoot, dataLake);
122
+ const result = await routeToolCall(name, args, stores, config.projectRoot, dataLake, patternService);
101
123
  // Cache result
102
124
  if (cache && cacheKey && result && !('isError' in result && result.isError)) {
103
125
  await cache.set(cacheKey, result);
@@ -114,7 +136,7 @@ export function createEnterpriseMCPServer(config) {
114
136
  });
115
137
  return server;
116
138
  }
117
- async function routeToolCall(name, args, stores, projectRoot, dataLake) {
139
+ async function routeToolCall(name, args, stores, projectRoot, dataLake, patternService) {
118
140
  // ============================================================================
119
141
  // Orchestration Tools (Meta Layer - Start Here)
120
142
  // ============================================================================
@@ -133,15 +155,25 @@ async function routeToolCall(name, args, stores, projectRoot, dataLake) {
133
155
  // ============================================================================
134
156
  switch (name) {
135
157
  case 'drift_status':
158
+ // Use new service if available, otherwise fall back to legacy store
159
+ if (patternService) {
160
+ return handleStatusWithService(patternService, args, dataLake);
161
+ }
136
162
  return handleStatus(stores.pattern, args, dataLake);
137
163
  case 'drift_capabilities':
138
164
  return handleCapabilities(args);
165
+ case 'drift_projects':
166
+ return handleProjects(args);
139
167
  }
140
168
  // ============================================================================
141
169
  // Exploration Tools (Layer 2)
142
170
  // ============================================================================
143
171
  switch (name) {
144
172
  case 'drift_patterns_list':
173
+ // Use new service if available, otherwise fall back to legacy store
174
+ if (patternService) {
175
+ return handlePatternsListWithService(patternService, args, dataLake);
176
+ }
145
177
  return handlePatternsList(stores.pattern, args, dataLake);
146
178
  case 'drift_security_summary':
147
179
  return handleSecuritySummary(stores.boundary, args);
@@ -156,14 +188,22 @@ async function routeToolCall(name, args, stores, projectRoot, dataLake) {
156
188
  switch (name) {
157
189
  // Pattern detail tools
158
190
  case 'drift_pattern_get':
191
+ // Use new service if available, otherwise fall back to legacy store
192
+ if (patternService) {
193
+ return handlePatternGetWithService(patternService, args);
194
+ }
159
195
  return handlePatternGet(stores.pattern, args);
160
196
  case 'drift_code_examples':
197
+ // Use new service if available, otherwise fall back to legacy store
198
+ if (patternService) {
199
+ return handleCodeExamplesWithService(patternService, projectRoot, args);
200
+ }
161
201
  return handleCodeExamples(stores.pattern, projectRoot, args);
162
202
  // File detail tools
163
203
  case 'drift_files_list':
164
- return handleFilesList(stores.manifest, args);
204
+ return handleFilesList(projectRoot, args);
165
205
  case 'drift_file_patterns':
166
- return handleFilePatterns(stores.manifest, args);
206
+ return handleFilePatterns(projectRoot, args);
167
207
  // Call graph analysis tools
168
208
  case 'drift_impact_analysis':
169
209
  return handleImpactAnalysis(projectRoot, args);
@@ -172,6 +212,36 @@ async function routeToolCall(name, args, stores, projectRoot, dataLake) {
172
212
  // DNA tools
173
213
  case 'drift_dna_profile':
174
214
  return handleDNAProfile(stores.dna, args);
215
+ // Wrapper detection tools
216
+ case 'drift_wrappers':
217
+ return handleWrappers(args, projectRoot);
218
+ }
219
+ // ============================================================================
220
+ // Analysis Tools (L5-L7 Layers)
221
+ // ============================================================================
222
+ switch (name) {
223
+ case 'drift_test_topology':
224
+ return handleTestTopology(projectRoot, args);
225
+ case 'drift_coupling':
226
+ return handleCoupling(projectRoot, args);
227
+ case 'drift_error_handling':
228
+ return handleErrorHandling(projectRoot, args);
229
+ }
230
+ // ============================================================================
231
+ // Generation Tools (AI-Powered Code Intelligence)
232
+ // ============================================================================
233
+ switch (name) {
234
+ case 'drift_suggest_changes':
235
+ return handleSuggestChanges({ pattern: stores.pattern, boundary: stores.boundary }, projectRoot, args);
236
+ case 'drift_validate_change':
237
+ return handleValidateChange(stores.pattern, projectRoot, args);
238
+ case 'drift_explain':
239
+ return handleExplain({
240
+ pattern: stores.pattern,
241
+ manifest: stores.manifest,
242
+ boundary: stores.boundary,
243
+ callGraph: stores.callGraph,
244
+ }, projectRoot, args);
175
245
  }
176
246
  // Unknown tool
177
247
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"enterprise-server.js","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enterprise-server.js","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * drift_coupling - Module Coupling Analysis
3
+ *
4
+ * Analysis tool for module dependencies, cycles, and coupling metrics.
5
+ * Based on Robert C. Martin's coupling metrics (Ca, Ce, Instability, Abstractness, Distance).
6
+ */
7
+ import { type AggregateCouplingMetrics, type DependencyCycle, type ModuleCouplingAnalysis, type RefactorImpact, type UnusedExportAnalysis, type CouplingMetrics } from 'driftdetect-core';
8
+ export type CouplingAction = 'status' | 'cycles' | 'hotspots' | 'analyze' | 'refactor-impact' | 'unused-exports';
9
+ export interface CouplingArgs {
10
+ action: CouplingAction;
11
+ module?: string;
12
+ limit?: number;
13
+ minCoupling?: number;
14
+ maxCycleLength?: number;
15
+ minSeverity?: 'info' | 'warning' | 'critical';
16
+ }
17
+ export interface CouplingStatusData {
18
+ metrics: AggregateCouplingMetrics;
19
+ generatedAt?: string;
20
+ }
21
+ export interface CouplingCyclesData {
22
+ cycles: DependencyCycle[];
23
+ total: number;
24
+ bySeverity: {
25
+ critical: number;
26
+ warning: number;
27
+ info: number;
28
+ };
29
+ }
30
+ export interface CouplingHotspotsData {
31
+ hotspots: Array<{
32
+ path: string;
33
+ coupling: number;
34
+ metrics: CouplingMetrics;
35
+ }>;
36
+ total: number;
37
+ }
38
+ export interface CouplingAnalyzeData {
39
+ module: string;
40
+ analysis: ModuleCouplingAnalysis;
41
+ }
42
+ export interface CouplingRefactorData {
43
+ module: string;
44
+ impact: RefactorImpact;
45
+ }
46
+ export interface CouplingUnusedData {
47
+ unused: UnusedExportAnalysis[];
48
+ total: number;
49
+ }
50
+ export declare function handleCoupling(projectRoot: string, args: CouplingArgs): Promise<{
51
+ content: Array<{
52
+ type: string;
53
+ text: string;
54
+ }>;
55
+ }>;
56
+ //# sourceMappingURL=coupling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coupling.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/coupling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,SAAS,GACT,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,wBAAwB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAC9E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAaD,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmB7D"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * drift_coupling - Module Coupling Analysis
3
+ *
4
+ * Analysis tool for module dependencies, cycles, and coupling metrics.
5
+ * Based on Robert C. Martin's coupling metrics (Ca, Ce, Instability, Abstractness, Distance).
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import { createModuleCouplingAnalyzer, createCallGraphAnalyzer, } from 'driftdetect-core';
10
+ import { createResponseBuilder, Errors } from '../../infrastructure/index.js';
11
+ // ============================================================================
12
+ // Constants
13
+ // ============================================================================
14
+ const DRIFT_DIR = '.drift';
15
+ const COUPLING_DIR = 'module-coupling';
16
+ // ============================================================================
17
+ // Handler
18
+ // ============================================================================
19
+ export async function handleCoupling(projectRoot, args) {
20
+ const { action } = args;
21
+ switch (action) {
22
+ case 'status':
23
+ return handleStatus(projectRoot);
24
+ case 'cycles':
25
+ return handleCycles(projectRoot, args.maxCycleLength, args.minSeverity);
26
+ case 'hotspots':
27
+ return handleHotspots(projectRoot, args.limit, args.minCoupling);
28
+ case 'analyze':
29
+ return handleAnalyze(projectRoot, args.module);
30
+ case 'refactor-impact':
31
+ return handleRefactorImpact(projectRoot, args.module);
32
+ case 'unused-exports':
33
+ return handleUnusedExports(projectRoot, args.limit);
34
+ default:
35
+ throw Errors.invalidArgument('action', `Invalid action: ${action}. Valid: status, cycles, hotspots, analyze, refactor-impact, unused-exports`);
36
+ }
37
+ }
38
+ // ============================================================================
39
+ // Action Handlers
40
+ // ============================================================================
41
+ async function handleStatus(projectRoot) {
42
+ const builder = createResponseBuilder();
43
+ // Try to load cached data first
44
+ const graphPath = path.join(projectRoot, DRIFT_DIR, COUPLING_DIR, 'graph.json');
45
+ try {
46
+ const data = JSON.parse(await fs.readFile(graphPath, 'utf-8'));
47
+ const { metrics, generatedAt } = data;
48
+ let summaryText = `🔗 ${metrics.totalModules} modules, ${metrics.totalEdges} dependencies. `;
49
+ summaryText += `${metrics.cycleCount} cycles. `;
50
+ summaryText += `Avg instability: ${metrics.avgInstability}, distance: ${metrics.avgDistance}.`;
51
+ const warnings = [];
52
+ if (metrics.cycleCount > 0) {
53
+ warnings.push(`${metrics.cycleCount} dependency cycles detected`);
54
+ }
55
+ if (metrics.zoneOfPain.length > 0) {
56
+ warnings.push(`${metrics.zoneOfPain.length} modules in zone of pain`);
57
+ }
58
+ const hints = {
59
+ nextActions: metrics.cycleCount > 0
60
+ ? ['Run drift_coupling action="cycles" to see cycle details']
61
+ : ['Coupling looks healthy'],
62
+ warnings: warnings.length > 0 ? warnings : undefined,
63
+ relatedTools: ['drift_coupling action="cycles"', 'drift_coupling action="hotspots"'],
64
+ };
65
+ return builder
66
+ .withSummary(summaryText)
67
+ .withData({ metrics, generatedAt })
68
+ .withHints(hints)
69
+ .buildContent();
70
+ }
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']);
73
+ }
74
+ }
75
+ async function handleCycles(projectRoot, maxCycleLength, minSeverity) {
76
+ const builder = createResponseBuilder();
77
+ const graphPath = path.join(projectRoot, DRIFT_DIR, COUPLING_DIR, 'graph.json');
78
+ try {
79
+ 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);
84
+ }
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);
90
+ }
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
+ }
117
+ catch {
118
+ throw Errors.custom('NO_COUPLING_GRAPH', 'No coupling graph found. Build it first.', ['drift coupling build']);
119
+ }
120
+ }
121
+ async function handleHotspots(projectRoot, limit, minCoupling) {
122
+ const builder = createResponseBuilder();
123
+ const graphPath = path.join(projectRoot, DRIFT_DIR, COUPLING_DIR, 'graph.json');
124
+ try {
125
+ 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();
151
+ }
152
+ catch {
153
+ throw Errors.custom('NO_COUPLING_GRAPH', 'No coupling graph found. Build it first.', ['drift coupling build']);
154
+ }
155
+ }
156
+ async function handleAnalyze(projectRoot, modulePath) {
157
+ const builder = createResponseBuilder();
158
+ if (!modulePath) {
159
+ throw Errors.missingParameter('module');
160
+ }
161
+ // Build analyzer on-demand
162
+ const analyzer = await buildAnalyzer(projectRoot);
163
+ const analysis = analyzer.analyzeModule(modulePath);
164
+ if (!analysis) {
165
+ throw Errors.custom('MODULE_NOT_FOUND', `Module not found: ${modulePath}`, ['Check the module path and ensure call graph is built']);
166
+ }
167
+ const { module, cyclesInvolved, health } = analysis;
168
+ let summaryText = `📦 ${modulePath}: ${module.role} role. `;
169
+ summaryText += `Ca: ${module.metrics.Ca}, Ce: ${module.metrics.Ce}. `;
170
+ summaryText += `Health: ${health.score}/100.`;
171
+ const warnings = [];
172
+ if (cyclesInvolved.length > 0) {
173
+ warnings.push(`Involved in ${cyclesInvolved.length} cycle(s)`);
174
+ }
175
+ if (health.issues.length > 0) {
176
+ warnings.push(...health.issues);
177
+ }
178
+ const hints = {
179
+ nextActions: health.suggestions,
180
+ warnings: warnings.length > 0 ? warnings : undefined,
181
+ relatedTools: ['drift_coupling action="refactor-impact"', 'drift_impact_analysis'],
182
+ };
183
+ return builder
184
+ .withSummary(summaryText)
185
+ .withData({ module: modulePath, analysis })
186
+ .withHints(hints)
187
+ .buildContent();
188
+ }
189
+ async function handleRefactorImpact(projectRoot, modulePath) {
190
+ const builder = createResponseBuilder();
191
+ if (!modulePath) {
192
+ throw Errors.missingParameter('module');
193
+ }
194
+ const analyzer = await buildAnalyzer(projectRoot);
195
+ const impact = analyzer.analyzeRefactorImpact(modulePath);
196
+ if (!impact) {
197
+ throw Errors.custom('MODULE_NOT_FOUND', `Module not found: ${modulePath}`, ['Check the module path']);
198
+ }
199
+ let summaryText = `🔧 Refactoring ${modulePath}: ${impact.totalAffected} affected modules. `;
200
+ summaryText += `Risk: ${impact.risk.toUpperCase()}.`;
201
+ const hints = {
202
+ nextActions: impact.suggestions,
203
+ warnings: impact.risk === 'critical' || impact.risk === 'high'
204
+ ? [`High risk refactor - ${impact.totalAffected} modules affected`]
205
+ : undefined,
206
+ relatedTools: ['drift_coupling action="analyze"', 'drift_impact_analysis'],
207
+ };
208
+ return builder
209
+ .withSummary(summaryText)
210
+ .withData({ module: modulePath, impact })
211
+ .withHints(hints)
212
+ .buildContent();
213
+ }
214
+ async function handleUnusedExports(projectRoot, limit) {
215
+ const builder = createResponseBuilder();
216
+ const analyzer = await buildAnalyzer(projectRoot);
217
+ const unused = analyzer.getUnusedExports().slice(0, limit ?? 20);
218
+ const totalExports = unused.reduce((sum, u) => sum + u.unusedExports.length, 0);
219
+ let summaryText = `📤 ${unused.length} modules with unused exports. `;
220
+ summaryText += `${totalExports} total unused exports.`;
221
+ const hints = {
222
+ nextActions: unused.length > 0
223
+ ? ['Review unused exports - may be dead code or public API']
224
+ : ['No unused exports found'],
225
+ relatedTools: ['drift_dead_code'],
226
+ };
227
+ return builder
228
+ .withSummary(summaryText)
229
+ .withData({ unused, total: unused.length })
230
+ .withHints(hints)
231
+ .buildContent();
232
+ }
233
+ // ============================================================================
234
+ // Helpers
235
+ // ============================================================================
236
+ async function buildAnalyzer(projectRoot) {
237
+ const callGraphAnalyzer = createCallGraphAnalyzer({ rootDir: projectRoot });
238
+ await callGraphAnalyzer.initialize();
239
+ const callGraph = callGraphAnalyzer.getGraph();
240
+ if (!callGraph) {
241
+ throw Errors.custom('NO_CALL_GRAPH', 'Call graph required for coupling analysis', ['drift callgraph build']);
242
+ }
243
+ const analyzer = createModuleCouplingAnalyzer({ rootDir: projectRoot });
244
+ analyzer.setCallGraph(callGraph);
245
+ analyzer.build();
246
+ return analyzer;
247
+ }
248
+ //# sourceMappingURL=coupling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coupling.js","sourceRoot":"","sources":["../../../src/tools/analysis/coupling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * drift_error_handling - Error Handling Analysis
3
+ *
4
+ * Analysis tool for error handling patterns, boundaries, and gaps.
5
+ * Detects unhandled error paths and swallowed exceptions.
6
+ */
7
+ import { type ErrorHandlingSummary, type ErrorHandlingMetrics, type ErrorHandlingGap, type ErrorBoundary, type UnhandledErrorPath, type FunctionErrorAnalysis, type ErrorSeverity } from 'driftdetect-core';
8
+ export type ErrorHandlingAction = 'status' | 'gaps' | 'boundaries' | 'unhandled' | 'analyze';
9
+ export interface ErrorHandlingArgs {
10
+ action: ErrorHandlingAction;
11
+ function?: string;
12
+ limit?: number;
13
+ minSeverity?: ErrorSeverity;
14
+ }
15
+ export interface ErrorHandlingStatusData {
16
+ summary: ErrorHandlingSummary;
17
+ metrics: ErrorHandlingMetrics;
18
+ generatedAt?: string;
19
+ }
20
+ export interface ErrorHandlingGapsData {
21
+ gaps: ErrorHandlingGap[];
22
+ total: number;
23
+ bySeverity: Record<ErrorSeverity, number>;
24
+ }
25
+ export interface ErrorHandlingBoundariesData {
26
+ boundaries: ErrorBoundary[];
27
+ total: number;
28
+ frameworkBoundaries: number;
29
+ }
30
+ export interface ErrorHandlingUnhandledData {
31
+ paths: UnhandledErrorPath[];
32
+ total: number;
33
+ bySeverity: Record<ErrorSeverity, number>;
34
+ }
35
+ export interface ErrorHandlingAnalyzeData {
36
+ function: string;
37
+ analysis: FunctionErrorAnalysis;
38
+ }
39
+ export declare function handleErrorHandling(projectRoot: string, args: ErrorHandlingArgs): Promise<{
40
+ content: Array<{
41
+ type: string;
42
+ text: string;
43
+ }>;
44
+ }>;
45
+ //# sourceMappingURL=error-handling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/error-handling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,MAAM,GACN,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAaD,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAiB7D"}