driftdetect-mcp 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/server.js +8 -1
- package/dist/bin/server.js.map +1 -1
- package/dist/enterprise-server.d.ts +4 -0
- package/dist/enterprise-server.d.ts.map +1 -1
- package/dist/enterprise-server.js +32 -2
- package/dist/enterprise-server.js.map +1 -1
- package/dist/infrastructure/index.d.ts +1 -0
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +2 -0
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/infrastructure/startup-warmer.d.ts +65 -0
- package/dist/infrastructure/startup-warmer.d.ts.map +1 -0
- package/dist/infrastructure/startup-warmer.js +257 -0
- package/dist/infrastructure/startup-warmer.js.map +1 -0
- package/dist/tools/analysis/coupling.js +181 -63
- package/dist/tools/analysis/coupling.js.map +1 -1
- package/dist/tools/analysis/cpp.d.ts +51 -0
- package/dist/tools/analysis/cpp.d.ts.map +1 -0
- package/dist/tools/analysis/cpp.js +224 -0
- package/dist/tools/analysis/cpp.js.map +1 -0
- package/dist/tools/analysis/error-handling.js +130 -37
- package/dist/tools/analysis/error-handling.js.map +1 -1
- package/dist/tools/analysis/index.d.ts +3 -0
- package/dist/tools/analysis/index.d.ts.map +1 -1
- package/dist/tools/analysis/index.js +100 -0
- package/dist/tools/analysis/index.js.map +1 -1
- package/dist/tools/analysis/quality-gate.d.ts +78 -0
- package/dist/tools/analysis/quality-gate.d.ts.map +1 -0
- package/dist/tools/analysis/quality-gate.js +164 -0
- package/dist/tools/analysis/quality-gate.js.map +1 -0
- package/dist/tools/analysis/rust.d.ts +51 -0
- package/dist/tools/analysis/rust.d.ts.map +1 -0
- package/dist/tools/analysis/rust.js +253 -0
- package/dist/tools/analysis/rust.js.map +1 -0
- package/dist/tools/analysis/simulate.d.ts +1 -0
- package/dist/tools/analysis/simulate.d.ts.map +1 -1
- package/dist/tools/analysis/simulate.js +78 -74
- package/dist/tools/analysis/simulate.js.map +1 -1
- package/dist/tools/analysis/test-topology.js +117 -44
- package/dist/tools/analysis/test-topology.js.map +1 -1
- package/dist/tools/detail/reachability.d.ts +2 -0
- package/dist/tools/detail/reachability.d.ts.map +1 -1
- package/dist/tools/detail/reachability.js +42 -32
- package/dist/tools/detail/reachability.js.map +1 -1
- package/dist/tools/orchestration/index.d.ts +2 -0
- package/dist/tools/orchestration/index.d.ts.map +1 -1
- package/dist/tools/orchestration/index.js +3 -0
- package/dist/tools/orchestration/index.js.map +1 -1
- package/dist/tools/orchestration/package-context.d.ts +134 -0
- package/dist/tools/orchestration/package-context.d.ts.map +1 -0
- package/dist/tools/orchestration/package-context.js +261 -0
- package/dist/tools/orchestration/package-context.js.map +1 -0
- package/package.json +12 -12
- package/LICENSE +0 -21
- package/dist/server.d.ts +0 -11
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -3177
- package/dist/server.js.map +0 -1
- package/dist/tools/detail/dna-check.d.ts +0 -32
- package/dist/tools/detail/dna-check.d.ts.map +0 -1
- package/dist/tools/detail/dna-check.js +0 -231
- package/dist/tools/detail/dna-check.js.map +0 -1
- package/dist/tools/exploration/files-list.d.ts +0 -29
- package/dist/tools/exploration/files-list.d.ts.map +0 -1
- package/dist/tools/exploration/files-list.js +0 -94
- package/dist/tools/exploration/files-list.js.map +0 -1
package/dist/bin/server.js
CHANGED
|
@@ -33,13 +33,20 @@ async function main() {
|
|
|
33
33
|
// Parse flags
|
|
34
34
|
const noCache = args.includes('--no-cache');
|
|
35
35
|
const noRateLimit = args.includes('--no-rate-limit');
|
|
36
|
+
const verbose = args.includes('--verbose') || args.includes('-v');
|
|
37
|
+
const skipWarmup = args.includes('--skip-warmup');
|
|
36
38
|
// Get project root (first non-flag argument, or cwd)
|
|
37
|
-
const projectRoot = args.find(arg => !arg.startsWith('--')) ?? process.cwd();
|
|
39
|
+
const projectRoot = args.find(arg => !arg.startsWith('--') && !arg.startsWith('-')) ?? process.cwd();
|
|
40
|
+
if (verbose) {
|
|
41
|
+
console.error(`[drift-mcp] Starting server for: ${projectRoot}`);
|
|
42
|
+
}
|
|
38
43
|
const server = createEnterpriseMCPServer({
|
|
39
44
|
projectRoot,
|
|
40
45
|
enableCache: !noCache,
|
|
41
46
|
enableRateLimiting: !noRateLimit,
|
|
42
47
|
enableMetrics: true,
|
|
48
|
+
verbose,
|
|
49
|
+
skipWarmup,
|
|
43
50
|
});
|
|
44
51
|
const transport = new StdioServerTransport();
|
|
45
52
|
await server.connect(transport);
|
package/dist/bin/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,cAAc;IACd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,cAAc;IACd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAElD,qDAAqD;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAErG,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,WAAW;QACX,WAAW,EAAE,CAAC,OAAO;QACrB,kBAAkB,EAAE,CAAC,WAAW;QAChC,aAAa,EAAE,IAAI;QACnB,OAAO;QACP,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -26,6 +26,10 @@ export interface EnterpriseMCPConfig {
|
|
|
26
26
|
maxRequestsPerMinute?: number;
|
|
27
27
|
/** Use the new IPatternService instead of direct PatternStore access */
|
|
28
28
|
usePatternService?: boolean;
|
|
29
|
+
/** Enable verbose logging for warmup */
|
|
30
|
+
verbose?: boolean;
|
|
31
|
+
/** Skip warmup on startup (not recommended) */
|
|
32
|
+
skipWarmup?: boolean;
|
|
29
33
|
}
|
|
30
34
|
export declare function createEnterpriseMCPServer(config: EnterpriseMCPConfig): Server;
|
|
31
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAgFnE,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;IAC5B,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA8H7E;AAwOD;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;EAEhC;AAED;;GAEG;AACH,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE1B"}
|
|
@@ -21,7 +21,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
21
21
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
22
22
|
import { PatternStore, ManifestStore, HistoryStore, DNAStore, BoundaryStore, ContractStore, CallGraphStore, EnvStore, createDataLake, createPatternServiceFromStore, } from 'driftdetect-core';
|
|
23
23
|
// Infrastructure
|
|
24
|
-
import { handleError, rateLimiter, metrics, createCache, } from './infrastructure/index.js';
|
|
24
|
+
import { handleError, rateLimiter, metrics, createCache, warmupStores, buildMissingData, logWarmupResult, } from './infrastructure/index.js';
|
|
25
25
|
// Tool definitions
|
|
26
26
|
import { ALL_TOOLS, TOOL_CATEGORIES } from './tools/registry.js';
|
|
27
27
|
// Discovery handlers
|
|
@@ -45,7 +45,7 @@ import { handleWrappers } from './tools/detail/wrappers.js';
|
|
|
45
45
|
// Discovery handlers (additional)
|
|
46
46
|
import { handleProjects } from './tools/discovery/projects.js';
|
|
47
47
|
// Orchestration handlers
|
|
48
|
-
import { handleContext } from './tools/orchestration/index.js';
|
|
48
|
+
import { handleContext, handlePackageContext } from './tools/orchestration/index.js';
|
|
49
49
|
// Generation handlers (new AI-powered tools)
|
|
50
50
|
import { handleSuggestChanges } from './tools/generation/suggest-changes.js';
|
|
51
51
|
import { handleValidateChange } from './tools/generation/validate-change.js';
|
|
@@ -59,7 +59,10 @@ import { handleSimulate } from './tools/analysis/simulate.js';
|
|
|
59
59
|
import { handleConstraints } from './tools/analysis/constraints.js';
|
|
60
60
|
import { executeWpfTool } from './tools/analysis/wpf.js';
|
|
61
61
|
import { executeGoTool } from './tools/analysis/go.js';
|
|
62
|
+
import { executeRustTool } from './tools/analysis/rust.js';
|
|
63
|
+
import { executeCppTool } from './tools/analysis/cpp.js';
|
|
62
64
|
import { handleConstants } from './tools/analysis/constants.js';
|
|
65
|
+
import { handleQualityGate } from './tools/analysis/quality-gate.js';
|
|
63
66
|
export function createEnterpriseMCPServer(config) {
|
|
64
67
|
const server = new Server({ name: 'drift-enterprise', version: '2.0.0' }, { capabilities: { tools: {} } });
|
|
65
68
|
// Initialize stores
|
|
@@ -87,6 +90,25 @@ export function createEnterpriseMCPServer(config) {
|
|
|
87
90
|
const cache = config.enableCache !== false
|
|
88
91
|
? createCache(config.projectRoot)
|
|
89
92
|
: null;
|
|
93
|
+
// Warm up stores on startup (async, non-blocking for server start)
|
|
94
|
+
// This loads all .drift data into memory so tools work immediately
|
|
95
|
+
if (config.skipWarmup !== true) {
|
|
96
|
+
warmupStores(stores, config.projectRoot, dataLake)
|
|
97
|
+
.then((result) => {
|
|
98
|
+
logWarmupResult(result, config.verbose);
|
|
99
|
+
// Build missing data in background (e.g., call graph)
|
|
100
|
+
if (!result.loaded.callGraph) {
|
|
101
|
+
buildMissingData(config.projectRoot, result.loaded).catch(() => {
|
|
102
|
+
// Silently fail - user can build manually
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
.catch((error) => {
|
|
107
|
+
if (config.verbose) {
|
|
108
|
+
console.error('[drift-mcp] Warmup failed:', error);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
90
112
|
// List available tools
|
|
91
113
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
92
114
|
metrics.increment('tools.list');
|
|
@@ -157,6 +179,8 @@ async function routeToolCall(name, args, stores, projectRoot, dataLake, patternS
|
|
|
157
179
|
callGraph: stores.callGraph,
|
|
158
180
|
dna: stores.dna,
|
|
159
181
|
}, projectRoot, args);
|
|
182
|
+
case 'drift_package_context':
|
|
183
|
+
return handlePackageContext(projectRoot, args);
|
|
160
184
|
}
|
|
161
185
|
// ============================================================================
|
|
162
186
|
// Discovery Tools (Layer 1)
|
|
@@ -246,8 +270,14 @@ async function routeToolCall(name, args, stores, projectRoot, dataLake, patternS
|
|
|
246
270
|
return executeWpfTool(args, { projectRoot });
|
|
247
271
|
case 'drift_go':
|
|
248
272
|
return executeGoTool(args, { projectRoot });
|
|
273
|
+
case 'drift_rust':
|
|
274
|
+
return executeRustTool(args, { projectRoot });
|
|
275
|
+
case 'drift_cpp':
|
|
276
|
+
return executeCppTool(args, { projectRoot });
|
|
249
277
|
case 'drift_constants':
|
|
250
278
|
return handleConstants(projectRoot, args);
|
|
279
|
+
case 'drift_quality_gate':
|
|
280
|
+
return handleQualityGate(projectRoot, args);
|
|
251
281
|
}
|
|
252
282
|
// ============================================================================
|
|
253
283
|
// Generation Tools (AI-Powered Code Intelligence)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enterprise-server.js","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACd,6BAA6B,GAG9B,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,
|
|
1
|
+
{"version":3,"file":"enterprise-server.js","sourceRoot":"","sources":["../src/enterprise-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,4 +18,5 @@ export { ResponseCache, createCache, type CachedResponse, type CacheConfig, } fr
|
|
|
18
18
|
export { RateLimiter, rateLimiter, type RateLimitConfig, } from './rate-limiter.js';
|
|
19
19
|
export { MetricsCollector, metrics, type Metric, type MetricLabels, type HistogramBuckets, } from './metrics.js';
|
|
20
20
|
export { resolveProject, formatProjectContext, ProjectNotFoundError, ProjectInvalidError, type ProjectResolution, } from './project-resolver.js';
|
|
21
|
+
export { warmupStores, buildMissingData, logWarmupResult, type WarmupResult, type WarmupStores, } from './startup-warmer.js';
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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;AAG/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC"}
|
|
@@ -26,4 +26,6 @@ export { RateLimiter, rateLimiter, } from './rate-limiter.js';
|
|
|
26
26
|
export { MetricsCollector, metrics, } from './metrics.js';
|
|
27
27
|
// Project Resolution
|
|
28
28
|
export { resolveProject, formatProjectContext, ProjectNotFoundError, ProjectInvalidError, } from './project-resolver.js';
|
|
29
|
+
// Startup Warmer
|
|
30
|
+
export { warmupStores, buildMissingData, logWarmupResult, } from './startup-warmer.js';
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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;AAE/B,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAGhB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup Warmer - Pre-loads all .drift data on MCP server initialization
|
|
3
|
+
*
|
|
4
|
+
* This ensures all stores are populated from the source of truth (.drift folder)
|
|
5
|
+
* before any tool calls are made, eliminating the need for users to manually
|
|
6
|
+
* run build commands.
|
|
7
|
+
*
|
|
8
|
+
* Data loaded:
|
|
9
|
+
* - Patterns (approved, discovered, ignored)
|
|
10
|
+
* - Call graph
|
|
11
|
+
* - Boundaries (data access map)
|
|
12
|
+
* - Environment variables
|
|
13
|
+
* - DNA profile
|
|
14
|
+
* - Contracts
|
|
15
|
+
* - History snapshots
|
|
16
|
+
* - Module coupling
|
|
17
|
+
* - Error handling analysis
|
|
18
|
+
* - Test topology
|
|
19
|
+
*/
|
|
20
|
+
import { PatternStore, ManifestStore, HistoryStore, DNAStore, BoundaryStore, ContractStore, CallGraphStore, EnvStore, UnifiedCallGraphProvider, type DataLake } from 'driftdetect-core';
|
|
21
|
+
export interface WarmupResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
duration: number;
|
|
24
|
+
loaded: {
|
|
25
|
+
patterns: number;
|
|
26
|
+
callGraph: boolean;
|
|
27
|
+
boundaries: boolean;
|
|
28
|
+
env: number;
|
|
29
|
+
dna: boolean;
|
|
30
|
+
contracts: number;
|
|
31
|
+
history: number;
|
|
32
|
+
coupling: boolean;
|
|
33
|
+
errorHandling: boolean;
|
|
34
|
+
testTopology: boolean;
|
|
35
|
+
};
|
|
36
|
+
errors: string[];
|
|
37
|
+
}
|
|
38
|
+
export interface WarmupStores {
|
|
39
|
+
pattern: PatternStore;
|
|
40
|
+
manifest: ManifestStore;
|
|
41
|
+
history: HistoryStore;
|
|
42
|
+
dna: DNAStore;
|
|
43
|
+
boundary: BoundaryStore;
|
|
44
|
+
contract: ContractStore;
|
|
45
|
+
callGraph: CallGraphStore;
|
|
46
|
+
callGraphProvider?: UnifiedCallGraphProvider;
|
|
47
|
+
env: EnvStore;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Warm up all stores by loading data from .drift folder
|
|
51
|
+
*/
|
|
52
|
+
export declare function warmupStores(stores: WarmupStores, projectRoot: string, dataLake?: DataLake): Promise<WarmupResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Build missing data if not present
|
|
55
|
+
* This is a background operation that doesn't block startup
|
|
56
|
+
*
|
|
57
|
+
* Note: Call graph building is complex and requires scanning the codebase.
|
|
58
|
+
* For now, we just log a hint that the user should run `drift callgraph build`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildMissingData(_projectRoot: string, loaded: WarmupResult['loaded']): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Log warmup results for debugging
|
|
63
|
+
*/
|
|
64
|
+
export declare function logWarmupResult(result: WarmupResult, verbose?: boolean): void;
|
|
65
|
+
//# sourceMappingURL=startup-warmer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-warmer.d.ts","sourceRoot":"","sources":["../../src/infrastructure/startup-warmer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,QAAQ,EACR,wBAAwB,EAExB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,OAAO,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,cAAc,CAAC;IAC1B,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,GAAG,EAAE,QAAQ,CAAC;CACf;AAiBD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,YAAY,CAAC,CAiNvB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,UAAQ,GAAG,IAAI,CAQ3E"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup Warmer - Pre-loads all .drift data on MCP server initialization
|
|
3
|
+
*
|
|
4
|
+
* This ensures all stores are populated from the source of truth (.drift folder)
|
|
5
|
+
* before any tool calls are made, eliminating the need for users to manually
|
|
6
|
+
* run build commands.
|
|
7
|
+
*
|
|
8
|
+
* Data loaded:
|
|
9
|
+
* - Patterns (approved, discovered, ignored)
|
|
10
|
+
* - Call graph
|
|
11
|
+
* - Boundaries (data access map)
|
|
12
|
+
* - Environment variables
|
|
13
|
+
* - DNA profile
|
|
14
|
+
* - Contracts
|
|
15
|
+
* - History snapshots
|
|
16
|
+
* - Module coupling
|
|
17
|
+
* - Error handling analysis
|
|
18
|
+
* - Test topology
|
|
19
|
+
*/
|
|
20
|
+
import * as fs from 'node:fs/promises';
|
|
21
|
+
import * as path from 'node:path';
|
|
22
|
+
import { PatternStore, ManifestStore, HistoryStore, DNAStore, BoundaryStore, ContractStore, CallGraphStore, EnvStore, UnifiedCallGraphProvider, createUnifiedCallGraphProvider, } from 'driftdetect-core';
|
|
23
|
+
const DRIFT_DIR = '.drift';
|
|
24
|
+
/**
|
|
25
|
+
* Check if drift is initialized in the project
|
|
26
|
+
*/
|
|
27
|
+
async function isDriftInitialized(projectRoot) {
|
|
28
|
+
try {
|
|
29
|
+
const driftPath = path.join(projectRoot, DRIFT_DIR);
|
|
30
|
+
const stat = await fs.stat(driftPath);
|
|
31
|
+
return stat.isDirectory();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Warm up all stores by loading data from .drift folder
|
|
39
|
+
*/
|
|
40
|
+
export async function warmupStores(stores, projectRoot, dataLake) {
|
|
41
|
+
const startTime = Date.now();
|
|
42
|
+
const errors = [];
|
|
43
|
+
const loaded = {
|
|
44
|
+
patterns: 0,
|
|
45
|
+
callGraph: false,
|
|
46
|
+
boundaries: false,
|
|
47
|
+
env: 0,
|
|
48
|
+
dna: false,
|
|
49
|
+
contracts: 0,
|
|
50
|
+
history: 0,
|
|
51
|
+
coupling: false,
|
|
52
|
+
errorHandling: false,
|
|
53
|
+
testTopology: false,
|
|
54
|
+
};
|
|
55
|
+
// Check if drift is initialized
|
|
56
|
+
if (!(await isDriftInitialized(projectRoot))) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
duration: Date.now() - startTime,
|
|
60
|
+
loaded,
|
|
61
|
+
errors: ['Drift not initialized. Run `drift init` first.'],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Initialize all stores in parallel where possible
|
|
65
|
+
const initPromises = [];
|
|
66
|
+
// 1. Pattern Store
|
|
67
|
+
initPromises.push((async () => {
|
|
68
|
+
try {
|
|
69
|
+
await stores.pattern.initialize();
|
|
70
|
+
const patterns = stores.pattern.getAll();
|
|
71
|
+
loaded.patterns = patterns.length;
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
errors.push(`Pattern store: ${e instanceof Error ? e.message : String(e)}`);
|
|
75
|
+
}
|
|
76
|
+
})());
|
|
77
|
+
// 2. Manifest Store
|
|
78
|
+
initPromises.push((async () => {
|
|
79
|
+
try {
|
|
80
|
+
await stores.manifest.load();
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
errors.push(`Manifest store: ${e instanceof Error ? e.message : String(e)}`);
|
|
84
|
+
}
|
|
85
|
+
})());
|
|
86
|
+
// 3. History Store
|
|
87
|
+
initPromises.push((async () => {
|
|
88
|
+
try {
|
|
89
|
+
await stores.history.initialize();
|
|
90
|
+
const snapshots = await stores.history.getSnapshots();
|
|
91
|
+
loaded.history = snapshots.length;
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
errors.push(`History store: ${e instanceof Error ? e.message : String(e)}`);
|
|
95
|
+
}
|
|
96
|
+
})());
|
|
97
|
+
// 4. DNA Store
|
|
98
|
+
initPromises.push((async () => {
|
|
99
|
+
try {
|
|
100
|
+
await stores.dna.initialize();
|
|
101
|
+
const profile = stores.dna.getProfile();
|
|
102
|
+
loaded.dna = profile !== null;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
errors.push(`DNA store: ${e instanceof Error ? e.message : String(e)}`);
|
|
106
|
+
}
|
|
107
|
+
})());
|
|
108
|
+
// 5. Boundary Store
|
|
109
|
+
initPromises.push((async () => {
|
|
110
|
+
try {
|
|
111
|
+
await stores.boundary.initialize();
|
|
112
|
+
const accessMap = stores.boundary.getAccessMap();
|
|
113
|
+
loaded.boundaries = Object.keys(accessMap).length > 0;
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
errors.push(`Boundary store: ${e instanceof Error ? e.message : String(e)}`);
|
|
117
|
+
}
|
|
118
|
+
})());
|
|
119
|
+
// 6. Contract Store
|
|
120
|
+
initPromises.push((async () => {
|
|
121
|
+
try {
|
|
122
|
+
await stores.contract.initialize();
|
|
123
|
+
const contracts = stores.contract.getAll();
|
|
124
|
+
loaded.contracts = contracts.length;
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
errors.push(`Contract store: ${e instanceof Error ? e.message : String(e)}`);
|
|
128
|
+
}
|
|
129
|
+
})());
|
|
130
|
+
// 7. Call Graph Store (supports both legacy and sharded formats)
|
|
131
|
+
initPromises.push((async () => {
|
|
132
|
+
try {
|
|
133
|
+
// First try the unified provider which supports both formats
|
|
134
|
+
const provider = createUnifiedCallGraphProvider({ rootDir: projectRoot });
|
|
135
|
+
await provider.initialize();
|
|
136
|
+
if (provider.isAvailable()) {
|
|
137
|
+
const stats = provider.getProviderStats();
|
|
138
|
+
loaded.callGraph = stats.totalFunctions > 0;
|
|
139
|
+
// Store the provider for later use
|
|
140
|
+
stores.callGraphProvider = provider;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Fall back to legacy store
|
|
144
|
+
await stores.callGraph.initialize();
|
|
145
|
+
const graph = stores.callGraph.getGraph();
|
|
146
|
+
loaded.callGraph = graph !== null && graph.functions.size > 0;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
errors.push(`Call graph store: ${e instanceof Error ? e.message : String(e)}`);
|
|
151
|
+
}
|
|
152
|
+
})());
|
|
153
|
+
// 8. Environment Store
|
|
154
|
+
initPromises.push((async () => {
|
|
155
|
+
try {
|
|
156
|
+
await stores.env.initialize();
|
|
157
|
+
const accessMap = stores.env.getAccessMap();
|
|
158
|
+
loaded.env = Object.keys(accessMap.variables || {}).length;
|
|
159
|
+
}
|
|
160
|
+
catch (e) {
|
|
161
|
+
errors.push(`Env store: ${e instanceof Error ? e.message : String(e)}`);
|
|
162
|
+
}
|
|
163
|
+
})());
|
|
164
|
+
// 9. DataLake (if provided)
|
|
165
|
+
if (dataLake) {
|
|
166
|
+
initPromises.push((async () => {
|
|
167
|
+
try {
|
|
168
|
+
await dataLake.initialize();
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
errors.push(`DataLake: ${e instanceof Error ? e.message : String(e)}`);
|
|
172
|
+
}
|
|
173
|
+
})());
|
|
174
|
+
}
|
|
175
|
+
// Wait for all initializations
|
|
176
|
+
await Promise.all(initPromises);
|
|
177
|
+
// Check for additional analysis data
|
|
178
|
+
const analysisChecks = [];
|
|
179
|
+
// Check coupling data
|
|
180
|
+
analysisChecks.push((async () => {
|
|
181
|
+
try {
|
|
182
|
+
const couplingPath = path.join(projectRoot, DRIFT_DIR, 'module-coupling', 'graph.json');
|
|
183
|
+
await fs.access(couplingPath);
|
|
184
|
+
loaded.coupling = true;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Not an error, just not built yet
|
|
188
|
+
}
|
|
189
|
+
})());
|
|
190
|
+
// Check error handling data
|
|
191
|
+
analysisChecks.push((async () => {
|
|
192
|
+
try {
|
|
193
|
+
const errorPath = path.join(projectRoot, DRIFT_DIR, 'error-handling', 'analysis.json');
|
|
194
|
+
await fs.access(errorPath);
|
|
195
|
+
loaded.errorHandling = true;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Not an error, just not built yet
|
|
199
|
+
}
|
|
200
|
+
})());
|
|
201
|
+
// Check test topology data
|
|
202
|
+
analysisChecks.push((async () => {
|
|
203
|
+
try {
|
|
204
|
+
const testPath = path.join(projectRoot, DRIFT_DIR, 'test-topology', 'mappings.json');
|
|
205
|
+
await fs.access(testPath);
|
|
206
|
+
loaded.testTopology = true;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// Not an error, just not built yet
|
|
210
|
+
}
|
|
211
|
+
})());
|
|
212
|
+
await Promise.all(analysisChecks);
|
|
213
|
+
return {
|
|
214
|
+
success: errors.length === 0,
|
|
215
|
+
duration: Date.now() - startTime,
|
|
216
|
+
loaded,
|
|
217
|
+
errors,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build missing data if not present
|
|
222
|
+
* This is a background operation that doesn't block startup
|
|
223
|
+
*
|
|
224
|
+
* Note: Call graph building is complex and requires scanning the codebase.
|
|
225
|
+
* For now, we just log a hint that the user should run `drift callgraph build`.
|
|
226
|
+
*/
|
|
227
|
+
export async function buildMissingData(_projectRoot, loaded) {
|
|
228
|
+
// Log hints for missing data
|
|
229
|
+
const missing = [];
|
|
230
|
+
if (!loaded.callGraph) {
|
|
231
|
+
missing.push('call graph (run: drift callgraph build)');
|
|
232
|
+
}
|
|
233
|
+
if (!loaded.coupling) {
|
|
234
|
+
missing.push('coupling analysis (run: drift coupling build)');
|
|
235
|
+
}
|
|
236
|
+
if (!loaded.errorHandling) {
|
|
237
|
+
missing.push('error handling analysis (run: drift error-handling build)');
|
|
238
|
+
}
|
|
239
|
+
if (!loaded.testTopology) {
|
|
240
|
+
missing.push('test topology (run: drift test-topology build)');
|
|
241
|
+
}
|
|
242
|
+
// We don't auto-build because it can be slow for large codebases
|
|
243
|
+
// The user should run these commands manually or via CI
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Log warmup results for debugging
|
|
247
|
+
*/
|
|
248
|
+
export function logWarmupResult(result, verbose = false) {
|
|
249
|
+
if (verbose) {
|
|
250
|
+
console.error(`[drift-mcp] Warmup completed in ${result.duration}ms`);
|
|
251
|
+
console.error(`[drift-mcp] Loaded: ${JSON.stringify(result.loaded)}`);
|
|
252
|
+
if (result.errors.length > 0) {
|
|
253
|
+
console.error(`[drift-mcp] Errors: ${result.errors.join(', ')}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=startup-warmer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-warmer.js","sourceRoot":"","sources":["../../src/infrastructure/startup-warmer.ts"],"names":[],"mappings":"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"}
|