driftdetect-mcp 0.6.0 → 0.7.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin/server.js +0 -0
  3. package/dist/enterprise-server.d.ts +1 -0
  4. package/dist/enterprise-server.d.ts.map +1 -1
  5. package/dist/enterprise-server.js +8 -1
  6. package/dist/enterprise-server.js.map +1 -1
  7. package/dist/tools/analysis/constants.d.ts +99 -0
  8. package/dist/tools/analysis/constants.d.ts.map +1 -0
  9. package/dist/tools/analysis/constants.js +421 -0
  10. package/dist/tools/analysis/constants.js.map +1 -0
  11. package/dist/tools/analysis/index.d.ts +1 -0
  12. package/dist/tools/analysis/index.d.ts.map +1 -1
  13. package/dist/tools/analysis/index.js +70 -0
  14. package/dist/tools/analysis/index.js.map +1 -1
  15. package/dist/tools/exploration/env.d.ts +53 -0
  16. package/dist/tools/exploration/env.d.ts.map +1 -0
  17. package/dist/tools/exploration/env.js +283 -0
  18. package/dist/tools/exploration/env.js.map +1 -0
  19. package/dist/tools/exploration/index.d.ts +2 -0
  20. package/dist/tools/exploration/index.d.ts.map +1 -1
  21. package/dist/tools/exploration/index.js +32 -0
  22. package/dist/tools/exploration/index.js.map +1 -1
  23. package/dist/tools/index.d.ts +6 -1
  24. package/dist/tools/index.d.ts.map +1 -1
  25. package/dist/tools/index.js +6 -1
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/registry.d.ts +7 -5
  28. package/dist/tools/registry.d.ts.map +1 -1
  29. package/dist/tools/registry.js +10 -4
  30. package/dist/tools/registry.js.map +1 -1
  31. package/dist/tools/surgical/callers.d.ts +85 -0
  32. package/dist/tools/surgical/callers.d.ts.map +1 -0
  33. package/dist/tools/surgical/callers.js +239 -0
  34. package/dist/tools/surgical/callers.js.map +1 -0
  35. package/dist/tools/surgical/dependencies.d.ts +96 -0
  36. package/dist/tools/surgical/dependencies.d.ts.map +1 -0
  37. package/dist/tools/surgical/dependencies.js +433 -0
  38. package/dist/tools/surgical/dependencies.js.map +1 -0
  39. package/dist/tools/surgical/errors.d.ts +88 -0
  40. package/dist/tools/surgical/errors.d.ts.map +1 -0
  41. package/dist/tools/surgical/errors.js +275 -0
  42. package/dist/tools/surgical/errors.js.map +1 -0
  43. package/dist/tools/surgical/hooks.d.ts +69 -0
  44. package/dist/tools/surgical/hooks.d.ts.map +1 -0
  45. package/dist/tools/surgical/hooks.js +247 -0
  46. package/dist/tools/surgical/hooks.js.map +1 -0
  47. package/dist/tools/surgical/imports.d.ts +61 -0
  48. package/dist/tools/surgical/imports.d.ts.map +1 -0
  49. package/dist/tools/surgical/imports.js +211 -0
  50. package/dist/tools/surgical/imports.js.map +1 -0
  51. package/dist/tools/surgical/index.d.ts +42 -0
  52. package/dist/tools/surgical/index.d.ts.map +1 -0
  53. package/dist/tools/surgical/index.js +66 -0
  54. package/dist/tools/surgical/index.js.map +1 -0
  55. package/dist/tools/surgical/middleware.d.ts +69 -0
  56. package/dist/tools/surgical/middleware.d.ts.map +1 -0
  57. package/dist/tools/surgical/middleware.js +237 -0
  58. package/dist/tools/surgical/middleware.js.map +1 -0
  59. package/dist/tools/surgical/prevalidate.d.ts +76 -0
  60. package/dist/tools/surgical/prevalidate.d.ts.map +1 -0
  61. package/dist/tools/surgical/prevalidate.js +303 -0
  62. package/dist/tools/surgical/prevalidate.js.map +1 -0
  63. package/dist/tools/surgical/recent.d.ts +66 -0
  64. package/dist/tools/surgical/recent.d.ts.map +1 -0
  65. package/dist/tools/surgical/recent.js +238 -0
  66. package/dist/tools/surgical/recent.js.map +1 -0
  67. package/dist/tools/surgical/signature.d.ts +73 -0
  68. package/dist/tools/surgical/signature.d.ts.map +1 -0
  69. package/dist/tools/surgical/signature.js +190 -0
  70. package/dist/tools/surgical/signature.js.map +1 -0
  71. package/dist/tools/surgical/similar.d.ts +77 -0
  72. package/dist/tools/surgical/similar.d.ts.map +1 -0
  73. package/dist/tools/surgical/similar.js +285 -0
  74. package/dist/tools/surgical/similar.js.map +1 -0
  75. package/dist/tools/surgical/test-template.d.ts +70 -0
  76. package/dist/tools/surgical/test-template.d.ts.map +1 -0
  77. package/dist/tools/surgical/test-template.js +298 -0
  78. package/dist/tools/surgical/test-template.js.map +1 -0
  79. package/dist/tools/surgical/type.d.ts +69 -0
  80. package/dist/tools/surgical/type.d.ts.map +1 -0
  81. package/dist/tools/surgical/type.js +289 -0
  82. package/dist/tools/surgical/type.js.map +1 -0
  83. package/package.json +11 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-template.js","sourceRoot":"","sources":["../../../src/tools/surgical/test-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * drift_type - Expand Type Definitions
3
+ *
4
+ * Layer: Surgical
5
+ * Token Budget: 400 target, 800 max
6
+ * Cache TTL: 5 minutes
7
+ * Invalidation Keys: callgraph, types
8
+ *
9
+ * Expands type definitions to see full structure.
10
+ * Solves: AI sees `user: User` but doesn't know User has 20 fields.
11
+ */
12
+ import type { CallGraphStore } from 'driftdetect-core';
13
+ export interface TypeArgs {
14
+ /** Type name to expand */
15
+ type: string;
16
+ /** How deep to expand nested types (default: 2) */
17
+ depth?: number;
18
+ /** Specific file to look in (optional) */
19
+ file?: string;
20
+ }
21
+ export interface TypeDefinition {
22
+ name: string;
23
+ kind: 'interface' | 'type' | 'class' | 'enum';
24
+ source: string;
25
+ shape: Record<string, string>;
26
+ raw: string;
27
+ }
28
+ export interface RelatedType {
29
+ name: string;
30
+ relationship: 'extends' | 'contains' | 'parameter' | 'return';
31
+ source: string;
32
+ }
33
+ export interface TypeData {
34
+ found: boolean;
35
+ definition?: TypeDefinition | undefined;
36
+ relatedTypes: RelatedType[];
37
+ }
38
+ export declare function handleType(store: CallGraphStore, args: TypeArgs, projectRoot: string): Promise<{
39
+ content: Array<{
40
+ type: string;
41
+ text: string;
42
+ }>;
43
+ }>;
44
+ /**
45
+ * Tool definition for MCP registration
46
+ */
47
+ export declare const typeToolDefinition: {
48
+ name: string;
49
+ description: string;
50
+ inputSchema: {
51
+ type: "object";
52
+ properties: {
53
+ type: {
54
+ type: string;
55
+ description: string;
56
+ };
57
+ depth: {
58
+ type: string;
59
+ description: string;
60
+ };
61
+ file: {
62
+ type: string;
63
+ description: string;
64
+ };
65
+ };
66
+ required: string[];
67
+ };
68
+ };
69
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/tools/surgical/type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAMD,wBAAsB,UAAU,CAC9B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqK7D;AAgID;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAC"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * drift_type - Expand Type Definitions
3
+ *
4
+ * Layer: Surgical
5
+ * Token Budget: 400 target, 800 max
6
+ * Cache TTL: 5 minutes
7
+ * Invalidation Keys: callgraph, types
8
+ *
9
+ * Expands type definitions to see full structure.
10
+ * Solves: AI sees `user: User` but doesn't know User has 20 fields.
11
+ */
12
+ import { createResponseBuilder, Errors, metrics } from '../../infrastructure/index.js';
13
+ import * as fs from 'node:fs/promises';
14
+ import * as path from 'node:path';
15
+ // ============================================================================
16
+ // Handler
17
+ // ============================================================================
18
+ export async function handleType(store, args, projectRoot) {
19
+ const startTime = Date.now();
20
+ const builder = createResponseBuilder();
21
+ // Validate input
22
+ if (!args.type || args.type.trim() === '') {
23
+ throw Errors.missingParameter('type');
24
+ }
25
+ const typeName = args.type.trim();
26
+ // Reserved for future nested type expansion
27
+ void (args.depth ?? 2);
28
+ // Load call graph
29
+ await store.initialize();
30
+ const graph = store.getGraph();
31
+ if (!graph) {
32
+ throw Errors.custom('CALLGRAPH_NOT_BUILT', 'Call graph has not been built. Run "drift callgraph build" first.', ['drift_status']);
33
+ }
34
+ // Find type definition by searching:
35
+ // 1. Function return types
36
+ // 2. Function parameter types
37
+ // 3. Class names
38
+ let foundFile;
39
+ let foundLine;
40
+ const relatedTypes = [];
41
+ // Search for the type in function signatures
42
+ for (const [, func] of graph.functions) {
43
+ // Check if file filter applies
44
+ if (args.file && !func.file.includes(args.file)) {
45
+ continue;
46
+ }
47
+ // Check return type
48
+ if (func.returnType?.includes(typeName)) {
49
+ relatedTypes.push({
50
+ name: func.name,
51
+ relationship: 'return',
52
+ source: `${func.file}:${func.startLine}`,
53
+ });
54
+ // If this looks like a type definition file, note it
55
+ if (func.file.includes('types') || func.file.includes('interfaces')) {
56
+ foundFile = func.file;
57
+ foundLine = func.startLine;
58
+ }
59
+ }
60
+ // Check parameter types
61
+ for (const param of func.parameters) {
62
+ if (param.type?.includes(typeName)) {
63
+ relatedTypes.push({
64
+ name: func.name,
65
+ relationship: 'parameter',
66
+ source: `${func.file}:${func.startLine}`,
67
+ });
68
+ }
69
+ }
70
+ // Check class name
71
+ if (func.className === typeName) {
72
+ foundFile = func.file;
73
+ foundLine = func.startLine;
74
+ relatedTypes.push({
75
+ name: func.name,
76
+ relationship: 'contains',
77
+ source: `${func.file}:${func.startLine}`,
78
+ });
79
+ }
80
+ }
81
+ // Try to find and parse the actual type definition
82
+ let definition;
83
+ if (foundFile) {
84
+ definition = await extractTypeDefinition(path.join(projectRoot, foundFile), typeName, foundFile, foundLine ?? 1);
85
+ }
86
+ else {
87
+ // Search common type file locations
88
+ const typeFiles = [
89
+ 'src/types/index.ts',
90
+ 'src/types.ts',
91
+ 'types/index.ts',
92
+ 'src/interfaces/index.ts',
93
+ ];
94
+ for (const typeFile of typeFiles) {
95
+ const fullPath = path.join(projectRoot, typeFile);
96
+ try {
97
+ await fs.access(fullPath);
98
+ definition = await extractTypeDefinition(fullPath, typeName, typeFile, 1);
99
+ if (definition) {
100
+ foundFile = typeFile;
101
+ break;
102
+ }
103
+ }
104
+ catch {
105
+ // File doesn't exist, continue
106
+ }
107
+ }
108
+ }
109
+ // Deduplicate related types
110
+ const uniqueRelated = relatedTypes.reduce((acc, rt) => {
111
+ const key = `${rt.name}:${rt.relationship}`;
112
+ if (!acc.has(key)) {
113
+ acc.set(key, rt);
114
+ }
115
+ return acc;
116
+ }, new Map());
117
+ const data = {
118
+ found: definition !== undefined,
119
+ definition,
120
+ relatedTypes: Array.from(uniqueRelated.values()).slice(0, 10),
121
+ };
122
+ // Build summary
123
+ let summary;
124
+ if (definition) {
125
+ const fieldCount = Object.keys(definition.shape).length;
126
+ summary = `Found ${definition.kind} "${typeName}" with ${fieldCount} field${fieldCount !== 1 ? 's' : ''} in ${definition.source}`;
127
+ }
128
+ else if (relatedTypes.length > 0) {
129
+ summary = `Type "${typeName}" referenced in ${relatedTypes.length} location${relatedTypes.length !== 1 ? 's' : ''} but definition not found`;
130
+ }
131
+ else {
132
+ summary = `Type "${typeName}" not found in codebase`;
133
+ }
134
+ // Build hints
135
+ const hints = {
136
+ nextActions: definition
137
+ ? [
138
+ 'Use these fields when constructing objects of this type',
139
+ `Check relatedTypes for functions that use "${typeName}"`,
140
+ ]
141
+ : [
142
+ 'Check spelling or try a partial name',
143
+ 'Use drift_files_list to find type definition files',
144
+ ],
145
+ relatedTools: ['drift_signature', 'drift_imports', 'drift_similar'],
146
+ };
147
+ if (!definition && relatedTypes.length > 0) {
148
+ hints.warnings = ['Type is used but definition not found - may be external or generated'];
149
+ }
150
+ // Record metrics
151
+ metrics.recordRequest('drift_type', Date.now() - startTime, true, false);
152
+ return builder
153
+ .withSummary(summary)
154
+ .withData(data)
155
+ .withHints(hints)
156
+ .buildContent();
157
+ }
158
+ // ============================================================================
159
+ // Helpers
160
+ // ============================================================================
161
+ /**
162
+ * Extract type definition from a file using regex
163
+ * (Lightweight alternative to full parsing)
164
+ */
165
+ async function extractTypeDefinition(filePath, typeName, relativePath, _hintLine) {
166
+ try {
167
+ const content = await fs.readFile(filePath, 'utf-8');
168
+ // Patterns to match type definitions
169
+ const patterns = [
170
+ // interface Foo { ... }
171
+ new RegExp(`^\\s*(?:export\\s+)?interface\\s+${typeName}\\s*(?:extends\\s+[^{]+)?\\{`, 'm'),
172
+ // type Foo = { ... }
173
+ new RegExp(`^\\s*(?:export\\s+)?type\\s+${typeName}\\s*=\\s*\\{`, 'm'),
174
+ // class Foo { ... }
175
+ new RegExp(`^\\s*(?:export\\s+)?class\\s+${typeName}\\s*(?:extends\\s+[^{]+)?(?:implements\\s+[^{]+)?\\{`, 'm'),
176
+ // enum Foo { ... }
177
+ new RegExp(`^\\s*(?:export\\s+)?enum\\s+${typeName}\\s*\\{`, 'm'),
178
+ ];
179
+ const kinds = ['interface', 'type', 'class', 'enum'];
180
+ for (let i = 0; i < patterns.length; i++) {
181
+ const match = content.match(patterns[i]);
182
+ if (match && match.index !== undefined) {
183
+ const startIndex = match.index;
184
+ const lineNumber = content.slice(0, startIndex).split('\n').length;
185
+ // Extract the full definition (find matching braces)
186
+ const raw = extractBracedBlock(content, startIndex);
187
+ if (!raw)
188
+ continue;
189
+ // Parse fields from the raw definition
190
+ const shape = parseTypeShape(raw, kinds[i]);
191
+ return {
192
+ name: typeName,
193
+ kind: kinds[i],
194
+ source: `${relativePath}:${lineNumber}`,
195
+ shape,
196
+ raw: raw.length > 500 ? raw.slice(0, 500) + '\n // ... truncated' : raw,
197
+ };
198
+ }
199
+ }
200
+ return undefined;
201
+ }
202
+ catch {
203
+ return undefined;
204
+ }
205
+ }
206
+ /**
207
+ * Extract a braced block starting from an index
208
+ */
209
+ function extractBracedBlock(content, startIndex) {
210
+ const openBrace = content.indexOf('{', startIndex);
211
+ if (openBrace === -1)
212
+ return undefined;
213
+ let depth = 0;
214
+ let endIndex = openBrace;
215
+ for (let i = openBrace; i < content.length; i++) {
216
+ if (content[i] === '{')
217
+ depth++;
218
+ else if (content[i] === '}') {
219
+ depth--;
220
+ if (depth === 0) {
221
+ endIndex = i + 1;
222
+ break;
223
+ }
224
+ }
225
+ }
226
+ // Include the declaration before the brace
227
+ const declarationStart = content.lastIndexOf('\n', startIndex) + 1;
228
+ return content.slice(declarationStart, endIndex).trim();
229
+ }
230
+ /**
231
+ * Parse type shape from raw definition
232
+ */
233
+ function parseTypeShape(raw, kind) {
234
+ const shape = {};
235
+ // Extract content between braces
236
+ const braceStart = raw.indexOf('{');
237
+ const braceEnd = raw.lastIndexOf('}');
238
+ if (braceStart === -1 || braceEnd === -1)
239
+ return shape;
240
+ const body = raw.slice(braceStart + 1, braceEnd);
241
+ // Simple field extraction (handles most common cases)
242
+ // Matches: fieldName: Type; or fieldName?: Type;
243
+ const fieldPattern = /^\s*(?:readonly\s+)?(\w+)(\?)?:\s*([^;,\n]+)/gm;
244
+ let match;
245
+ while ((match = fieldPattern.exec(body)) !== null) {
246
+ const [, name, optional, type] = match;
247
+ if (name && type) {
248
+ const cleanType = type.trim().replace(/\/\/.*$/, '').trim();
249
+ shape[name] = optional ? `${cleanType} | undefined` : cleanType;
250
+ }
251
+ }
252
+ // For enums, extract values
253
+ if (kind === 'enum') {
254
+ const enumPattern = /^\s*(\w+)\s*(?:=\s*([^,\n]+))?/gm;
255
+ while ((match = enumPattern.exec(body)) !== null) {
256
+ const [, name, value] = match;
257
+ if (name && !name.includes(':')) {
258
+ shape[name] = value?.trim() ?? 'auto';
259
+ }
260
+ }
261
+ }
262
+ return shape;
263
+ }
264
+ /**
265
+ * Tool definition for MCP registration
266
+ */
267
+ export const typeToolDefinition = {
268
+ name: 'drift_type',
269
+ description: 'Expand type definitions to see full structure. Returns fields, related types, and raw definition. Use when you see a type but need to know its shape.',
270
+ inputSchema: {
271
+ type: 'object',
272
+ properties: {
273
+ type: {
274
+ type: 'string',
275
+ description: 'Type name to expand (e.g., "User", "CreateUserDTO")',
276
+ },
277
+ depth: {
278
+ type: 'number',
279
+ description: 'How deep to expand nested types (default: 2, max: 5)',
280
+ },
281
+ file: {
282
+ type: 'string',
283
+ description: 'Optional: specific file to search in',
284
+ },
285
+ },
286
+ required: ['type'],
287
+ },
288
+ };
289
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/tools/surgical/type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAmClC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAqB,EACrB,IAAc,EACd,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,qBAAqB,EAAY,CAAC;IAElD,iBAAiB;IACjB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,4CAA4C;IAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAEvB,kBAAkB;IAClB,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,MAAM,CACjB,qBAAqB,EACrB,mEAAmE,EACnE,CAAC,cAAc,CAAC,CACjB,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,2BAA2B;IAC3B,8BAA8B;IAC9B,iBAAiB;IAEjB,IAAI,SAA6B,CAAC;IAClC,IAAI,SAA6B,CAAC;IAClC,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,6CAA6C;IAC7C,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,+BAA+B;QAC/B,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,QAAQ;gBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;aACzC,CAAC,CAAC;YAEH,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,YAAY,EAAE,WAAW;oBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,UAAU;gBACxB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,UAAsC,CAAC;IAE3C,IAAI,SAAS,EAAE,CAAC;QACd,UAAU,GAAG,MAAM,qBAAqB,CACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,SAAS,IAAI,CAAC,CACf,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,oCAAoC;QACpC,MAAM,SAAS,GAAG;YAChB,oBAAoB;YACpB,cAAc;YACd,gBAAgB;YAChB,yBAAyB;SAC1B,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,UAAU,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC1E,IAAI,UAAU,EAAE,CAAC;oBACf,SAAS,GAAG,QAAQ,CAAC;oBACrB,MAAM;gBACR,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAuB,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAa;QACrB,KAAK,EAAE,UAAU,KAAK,SAAS;QAC/B,UAAU;QACV,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KAC9D,CAAC;IAEF,gBAAgB;IAChB,IAAI,OAAe,CAAC;IACpB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACxD,OAAO,GAAG,SAAS,UAAU,CAAC,IAAI,KAAK,QAAQ,UAAU,UAAU,SAAS,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC;IACpI,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,SAAS,QAAQ,mBAAmB,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC;IAC/I,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,SAAS,QAAQ,yBAAyB,CAAC;IACvD,CAAC;IAED,cAAc;IACd,MAAM,KAAK,GAA2E;QACpF,WAAW,EAAE,UAAU;YACrB,CAAC,CAAC;gBACE,yDAAyD;gBACzD,8CAA8C,QAAQ,GAAG;aAC1D;YACH,CAAC,CAAC;gBACE,sCAAsC;gBACtC,oDAAoD;aACrD;QACL,YAAY,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC;KACpE,CAAC;IAEF,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,QAAQ,GAAG,CAAC,sEAAsE,CAAC,CAAC;IAC5F,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEzE,OAAO,OAAO;SACX,WAAW,CAAC,OAAO,CAAC;SACpB,QAAQ,CAAC,IAAI,CAAC;SACd,SAAS,CAAC,KAAK,CAAC;SAChB,YAAY,EAAE,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,QAAgB,EAChB,QAAgB,EAChB,YAAoB,EACpB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAErD,qCAAqC;QACrC,MAAM,QAAQ,GAAG;YACf,wBAAwB;YACxB,IAAI,MAAM,CAAC,oCAAoC,QAAQ,8BAA8B,EAAE,GAAG,CAAC;YAC3F,qBAAqB;YACrB,IAAI,MAAM,CAAC,+BAA+B,QAAQ,cAAc,EAAE,GAAG,CAAC;YACtE,oBAAoB;YACpB,IAAI,MAAM,CAAC,gCAAgC,QAAQ,sDAAsD,EAAE,GAAG,CAAC;YAC/G,mBAAmB;YACnB,IAAI,MAAM,CAAC,+BAA+B,QAAQ,SAAS,EAAE,GAAG,CAAC;SAClE,CAAC;QAEF,MAAM,KAAK,GAAmD,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAErG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAEnE,qDAAqD;gBACrD,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACpD,IAAI,CAAC,GAAG;oBAAE,SAAS;gBAEnB,uCAAuC;gBACvC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBAE7C,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE;oBACf,MAAM,EAAE,GAAG,YAAY,IAAI,UAAU,EAAE;oBACvC,KAAK;oBACL,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG;iBACzE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,UAAkB;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,SAAS,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,IAAY;IAC/C,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,iCAAiC;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEjD,sDAAsD;IACtD,iDAAiD;IACjD,MAAM,YAAY,GAAG,gDAAgD,CAAC;IAEtE,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,kCAAkC,CAAC;QACvD,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;YAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,uJAAuJ;IACpK,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;aACnE;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sDAAsD;aACpE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driftdetect-mcp",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "MCP server that gives AI agents (Claude, Cursor, Copilot) deep understanding of your codebase patterns, conventions, and architecture. Query patterns, security boundaries, call graphs in real-time.",
5
5
  "license": "MIT",
6
6
  "author": "Geoffrey Fernald",
@@ -46,20 +46,20 @@
46
46
  "files": [
47
47
  "dist"
48
48
  ],
49
- "scripts": {
50
- "build": "tsc",
51
- "clean": "rm -rf dist",
52
- "dev": "tsc --watch",
53
- "start": "node dist/bin/server.js",
54
- "typecheck": "tsc --noEmit"
55
- },
56
49
  "dependencies": {
57
50
  "@modelcontextprotocol/sdk": "^1.0.0",
58
- "driftdetect-core": "workspace:*",
59
- "driftdetect-detectors": "workspace:*"
51
+ "driftdetect-core": "0.7.0",
52
+ "driftdetect-detectors": "0.7.0"
60
53
  },
61
54
  "devDependencies": {
62
55
  "@types/node": "^20.10.0",
63
56
  "typescript": "^5.3.0"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc",
60
+ "clean": "rm -rf dist",
61
+ "dev": "tsc --watch",
62
+ "start": "node dist/bin/server.js",
63
+ "typecheck": "tsc --noEmit"
64
64
  }
65
- }
65
+ }