driftdetect-mcp 0.4.4 → 0.5.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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin/server.js +0 -0
  3. package/dist/enterprise-server.d.ts +7 -0
  4. package/dist/enterprise-server.d.ts.map +1 -1
  5. package/dist/enterprise-server.js +77 -7
  6. package/dist/enterprise-server.js.map +1 -1
  7. package/dist/infrastructure/index.d.ts +2 -0
  8. package/dist/infrastructure/index.d.ts.map +1 -1
  9. package/dist/infrastructure/index.js +3 -0
  10. package/dist/infrastructure/index.js.map +1 -1
  11. package/dist/infrastructure/project-resolver.d.ts +43 -0
  12. package/dist/infrastructure/project-resolver.d.ts.map +1 -0
  13. package/dist/infrastructure/project-resolver.js +108 -0
  14. package/dist/infrastructure/project-resolver.js.map +1 -0
  15. package/dist/tools/analysis/coupling.d.ts +56 -0
  16. package/dist/tools/analysis/coupling.d.ts.map +1 -0
  17. package/dist/tools/analysis/coupling.js +248 -0
  18. package/dist/tools/analysis/coupling.js.map +1 -0
  19. package/dist/tools/analysis/error-handling.d.ts +45 -0
  20. package/dist/tools/analysis/error-handling.d.ts.map +1 -0
  21. package/dist/tools/analysis/error-handling.js +220 -0
  22. package/dist/tools/analysis/error-handling.js.map +1 -0
  23. package/dist/tools/analysis/index.d.ts +11 -0
  24. package/dist/tools/analysis/index.d.ts.map +1 -0
  25. package/dist/tools/analysis/index.js +111 -0
  26. package/dist/tools/analysis/index.js.map +1 -0
  27. package/dist/tools/analysis/test-topology.d.ts +43 -0
  28. package/dist/tools/analysis/test-topology.d.ts.map +1 -0
  29. package/dist/tools/analysis/test-topology.js +294 -0
  30. package/dist/tools/analysis/test-topology.js.map +1 -0
  31. package/dist/tools/detail/code-examples.d.ts +20 -3
  32. package/dist/tools/detail/code-examples.d.ts.map +1 -1
  33. package/dist/tools/detail/code-examples.js +104 -0
  34. package/dist/tools/detail/code-examples.js.map +1 -1
  35. package/dist/tools/detail/index.d.ts +6 -4
  36. package/dist/tools/detail/index.d.ts.map +1 -1
  37. package/dist/tools/detail/index.js +44 -6
  38. package/dist/tools/detail/index.js.map +1 -1
  39. package/dist/tools/detail/pattern-get.d.ts +20 -3
  40. package/dist/tools/detail/pattern-get.d.ts.map +1 -1
  41. package/dist/tools/detail/pattern-get.js +87 -0
  42. package/dist/tools/detail/pattern-get.js.map +1 -1
  43. package/dist/tools/detail/wrappers.d.ts +97 -0
  44. package/dist/tools/detail/wrappers.d.ts.map +1 -0
  45. package/dist/tools/detail/wrappers.js +124 -0
  46. package/dist/tools/detail/wrappers.js.map +1 -0
  47. package/dist/tools/discovery/index.d.ts +3 -1
  48. package/dist/tools/discovery/index.d.ts.map +1 -1
  49. package/dist/tools/discovery/index.js +36 -3
  50. package/dist/tools/discovery/index.js.map +1 -1
  51. package/dist/tools/discovery/projects.d.ts +7 -1
  52. package/dist/tools/discovery/projects.d.ts.map +1 -1
  53. package/dist/tools/discovery/projects.js +55 -1
  54. package/dist/tools/discovery/projects.js.map +1 -1
  55. package/dist/tools/discovery/status.d.ts +16 -3
  56. package/dist/tools/discovery/status.d.ts.map +1 -1
  57. package/dist/tools/discovery/status.js +83 -1
  58. package/dist/tools/discovery/status.js.map +1 -1
  59. package/dist/tools/exploration/index.d.ts +2 -2
  60. package/dist/tools/exploration/index.d.ts.map +1 -1
  61. package/dist/tools/exploration/index.js +1 -5
  62. package/dist/tools/exploration/index.js.map +1 -1
  63. package/dist/tools/exploration/patterns-list.d.ts +21 -4
  64. package/dist/tools/exploration/patterns-list.d.ts.map +1 -1
  65. package/dist/tools/exploration/patterns-list.js +70 -0
  66. package/dist/tools/exploration/patterns-list.js.map +1 -1
  67. package/dist/tools/generation/__tests__/generation-tools.test.d.ts +6 -0
  68. package/dist/tools/generation/__tests__/generation-tools.test.d.ts.map +1 -0
  69. package/dist/tools/generation/__tests__/generation-tools.test.js +119 -0
  70. package/dist/tools/generation/__tests__/generation-tools.test.js.map +1 -0
  71. package/dist/tools/generation/explain.d.ts +75 -0
  72. package/dist/tools/generation/explain.d.ts.map +1 -0
  73. package/dist/tools/generation/explain.js +238 -0
  74. package/dist/tools/generation/explain.js.map +1 -0
  75. package/dist/tools/generation/index.d.ts +12 -0
  76. package/dist/tools/generation/index.d.ts.map +1 -0
  77. package/dist/tools/generation/index.js +90 -0
  78. package/dist/tools/generation/index.js.map +1 -0
  79. package/dist/tools/generation/suggest-changes.d.ts +64 -0
  80. package/dist/tools/generation/suggest-changes.d.ts.map +1 -0
  81. package/dist/tools/generation/suggest-changes.js +342 -0
  82. package/dist/tools/generation/suggest-changes.js.map +1 -0
  83. package/dist/tools/generation/validate-change.d.ts +76 -0
  84. package/dist/tools/generation/validate-change.d.ts.map +1 -0
  85. package/dist/tools/generation/validate-change.js +415 -0
  86. package/dist/tools/generation/validate-change.js.map +1 -0
  87. package/dist/tools/orchestration/context.d.ts +41 -0
  88. package/dist/tools/orchestration/context.d.ts.map +1 -1
  89. package/dist/tools/orchestration/context.js +215 -14
  90. package/dist/tools/orchestration/context.js.map +1 -1
  91. package/dist/tools/orchestration/index.d.ts.map +1 -1
  92. package/dist/tools/orchestration/index.js +13 -1
  93. package/dist/tools/orchestration/index.js.map +1 -1
  94. package/dist/tools/registry.d.ts +5 -1
  95. package/dist/tools/registry.d.ts.map +1 -1
  96. package/dist/tools/registry.js +12 -0
  97. package/dist/tools/registry.js.map +1 -1
  98. package/package.json +11 -11
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Geoffrey Fernald
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
File without changes
@@ -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,8 +188,16 @@ 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':
@@ -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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"}
@@ -8,6 +8,7 @@
8
8
  * - Caching with invalidation
9
9
  * - Rate limiting
10
10
  * - Metrics collection
11
+ * - Multi-project resolution
11
12
  */
12
13
  export { ResponseBuilder, createResponseBuilder, type MCPResponse, type MCPResponseMeta, type PaginationInfo, type ResponseHints, type ResponseBuilderConfig, } from './response-builder.js';
13
14
  export { TokenEstimator, tokenEstimator, type TokenEstimate, } from './token-estimator.js';
@@ -16,4 +17,5 @@ export { DriftError, DriftErrorCode, Errors, handleError, type DriftErrorDetails
16
17
  export { ResponseCache, createCache, type CachedResponse, type CacheConfig, } from './cache.js';
17
18
  export { RateLimiter, rateLimiter, type RateLimitConfig, } from './rate-limiter.js';
18
19
  export { MetricsCollector, metrics, type Metric, type MetricLabels, type HistogramBuckets, } from './metrics.js';
20
+ export { resolveProject, formatProjectContext, ProjectNotFoundError, ProjectInvalidError, type ProjectResolution, } from './project-resolver.js';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -8,6 +8,7 @@
8
8
  * - Caching with invalidation
9
9
  * - Rate limiting
10
10
  * - Metrics collection
11
+ * - Multi-project resolution
11
12
  */
12
13
  // Response Building
13
14
  export { ResponseBuilder, createResponseBuilder, } from './response-builder.js';
@@ -23,4 +24,6 @@ export { ResponseCache, createCache, } from './cache.js';
23
24
  export { RateLimiter, rateLimiter, } from './rate-limiter.js';
24
25
  // Metrics
25
26
  export { MetricsCollector, metrics, } from './metrics.js';
27
+ // Project Resolution
28
+ export { resolveProject, formatProjectContext, ProjectNotFoundError, ProjectInvalidError, } from './project-resolver.js';
26
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,qBAAqB,GAMtB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,GAGZ,MAAM,oBAAoB,CAAC;AAE5B,UAAU;AACV,OAAO,EACL,aAAa,EACb,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,WAAW,GAEZ,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,OAAO,GAIR,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,qBAAqB,GAMtB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,GAGZ,MAAM,oBAAoB,CAAC;AAE5B,UAAU;AACV,OAAO,EACL,aAAa,EACb,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,WAAW,GAEZ,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,OAAO,GAIR,MAAM,cAAc,CAAC;AAEtB,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Project Resolver - Resolves project names to paths for MCP tools
3
+ *
4
+ * Enables AI agents to work across multiple registered projects
5
+ * by resolving project names/IDs to their actual paths.
6
+ */
7
+ import { type RegisteredProject } from 'driftdetect-core';
8
+ export interface ProjectResolution {
9
+ /** Resolved project root path */
10
+ projectRoot: string;
11
+ /** Project metadata if resolved from registry */
12
+ project?: RegisteredProject;
13
+ /** Whether this was resolved from registry or used default */
14
+ fromRegistry: boolean;
15
+ }
16
+ /**
17
+ * Resolve a project name/ID to its path
18
+ *
19
+ * @param projectNameOrId - Project name, ID, or undefined for default
20
+ * @param defaultRoot - Default project root to use if no project specified
21
+ * @returns Resolved project path and metadata
22
+ */
23
+ export declare function resolveProject(projectNameOrId: string | undefined, defaultRoot: string): Promise<ProjectResolution>;
24
+ /**
25
+ * Error thrown when a project is not found in the registry
26
+ */
27
+ export declare class ProjectNotFoundError extends Error {
28
+ readonly searchTerm: string;
29
+ readonly partialMatches: RegisteredProject[];
30
+ constructor(searchTerm: string, partialMatches?: RegisteredProject[]);
31
+ }
32
+ /**
33
+ * Error thrown when a project path no longer exists
34
+ */
35
+ export declare class ProjectInvalidError extends Error {
36
+ readonly project: RegisteredProject;
37
+ constructor(project: RegisteredProject);
38
+ }
39
+ /**
40
+ * Format project resolution result for MCP response
41
+ */
42
+ export declare function formatProjectContext(resolution: ProjectResolution): Record<string, unknown>;
43
+ //# sourceMappingURL=project-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-resolver.d.ts","sourceRoot":"","sources":["../../src/infrastructure/project-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAyD5B;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,UAAU,EAAE,MAAM;aAClB,cAAc,EAAE,iBAAiB,EAAE;gBADnC,UAAU,EAAE,MAAM,EAClB,cAAc,GAAE,iBAAiB,EAAO;CAQ3D;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAChB,OAAO,EAAE,iBAAiB;gBAA1B,OAAO,EAAE,iBAAiB;CAIvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY3F"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Project Resolver - Resolves project names to paths for MCP tools
3
+ *
4
+ * Enables AI agents to work across multiple registered projects
5
+ * by resolving project names/IDs to their actual paths.
6
+ */
7
+ import { getProjectRegistry } from 'driftdetect-core';
8
+ /**
9
+ * Resolve a project name/ID to its path
10
+ *
11
+ * @param projectNameOrId - Project name, ID, or undefined for default
12
+ * @param defaultRoot - Default project root to use if no project specified
13
+ * @returns Resolved project path and metadata
14
+ */
15
+ export async function resolveProject(projectNameOrId, defaultRoot) {
16
+ // No project specified - use default
17
+ if (!projectNameOrId) {
18
+ return {
19
+ projectRoot: defaultRoot,
20
+ fromRegistry: false,
21
+ };
22
+ }
23
+ try {
24
+ const registry = await getProjectRegistry();
25
+ // Try to find by name first, then by ID, then by path
26
+ const project = registry.findByName(projectNameOrId) ??
27
+ registry.get(projectNameOrId) ??
28
+ registry.findByPath(projectNameOrId);
29
+ if (!project) {
30
+ // Try partial match
31
+ const matches = registry.search(projectNameOrId);
32
+ if (matches.length === 1 && matches[0]) {
33
+ await registry.updateLastAccessed(matches[0].id);
34
+ return {
35
+ projectRoot: matches[0].path,
36
+ project: matches[0],
37
+ fromRegistry: true,
38
+ };
39
+ }
40
+ // No match found - throw with helpful error
41
+ throw new ProjectNotFoundError(projectNameOrId, matches);
42
+ }
43
+ // Validate project path still exists
44
+ if (project.isValid === false) {
45
+ throw new ProjectInvalidError(project);
46
+ }
47
+ // Update last accessed
48
+ await registry.updateLastAccessed(project.id);
49
+ return {
50
+ projectRoot: project.path,
51
+ project,
52
+ fromRegistry: true,
53
+ };
54
+ }
55
+ catch (error) {
56
+ if (error instanceof ProjectNotFoundError || error instanceof ProjectInvalidError) {
57
+ throw error;
58
+ }
59
+ // Registry not available - fall back to default
60
+ return {
61
+ projectRoot: defaultRoot,
62
+ fromRegistry: false,
63
+ };
64
+ }
65
+ }
66
+ /**
67
+ * Error thrown when a project is not found in the registry
68
+ */
69
+ export class ProjectNotFoundError extends Error {
70
+ searchTerm;
71
+ partialMatches;
72
+ constructor(searchTerm, partialMatches = []) {
73
+ const message = partialMatches.length > 0
74
+ ? `Project "${searchTerm}" not found. Did you mean: ${partialMatches.map(p => p.name).join(', ')}?`
75
+ : `Project "${searchTerm}" not found. Use drift_projects action="list" to see available projects.`;
76
+ super(message);
77
+ this.searchTerm = searchTerm;
78
+ this.partialMatches = partialMatches;
79
+ this.name = 'ProjectNotFoundError';
80
+ }
81
+ }
82
+ /**
83
+ * Error thrown when a project path no longer exists
84
+ */
85
+ export class ProjectInvalidError extends Error {
86
+ project;
87
+ constructor(project) {
88
+ super(`Project "${project.name}" path no longer exists: ${project.path}`);
89
+ this.project = project;
90
+ this.name = 'ProjectInvalidError';
91
+ }
92
+ }
93
+ /**
94
+ * Format project resolution result for MCP response
95
+ */
96
+ export function formatProjectContext(resolution) {
97
+ if (!resolution.fromRegistry || !resolution.project) {
98
+ return { projectRoot: resolution.projectRoot };
99
+ }
100
+ return {
101
+ projectRoot: resolution.projectRoot,
102
+ projectName: resolution.project.name,
103
+ projectId: resolution.project.id,
104
+ language: resolution.project.language,
105
+ framework: resolution.project.framework,
106
+ };
107
+ }
108
+ //# sourceMappingURL=project-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-resolver.js","sourceRoot":"","sources":["../../src/infrastructure/project-resolver.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"}