driftdetect-mcp 0.7.1 → 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.
Files changed (66) hide show
  1. package/dist/bin/server.js +8 -1
  2. package/dist/bin/server.js.map +1 -1
  3. package/dist/enterprise-server.d.ts +4 -0
  4. package/dist/enterprise-server.d.ts.map +1 -1
  5. package/dist/enterprise-server.js +32 -2
  6. package/dist/enterprise-server.js.map +1 -1
  7. package/dist/infrastructure/index.d.ts +1 -0
  8. package/dist/infrastructure/index.d.ts.map +1 -1
  9. package/dist/infrastructure/index.js +2 -0
  10. package/dist/infrastructure/index.js.map +1 -1
  11. package/dist/infrastructure/startup-warmer.d.ts +65 -0
  12. package/dist/infrastructure/startup-warmer.d.ts.map +1 -0
  13. package/dist/infrastructure/startup-warmer.js +257 -0
  14. package/dist/infrastructure/startup-warmer.js.map +1 -0
  15. package/dist/tools/analysis/coupling.js +181 -63
  16. package/dist/tools/analysis/coupling.js.map +1 -1
  17. package/dist/tools/analysis/cpp.d.ts +51 -0
  18. package/dist/tools/analysis/cpp.d.ts.map +1 -0
  19. package/dist/tools/analysis/cpp.js +224 -0
  20. package/dist/tools/analysis/cpp.js.map +1 -0
  21. package/dist/tools/analysis/error-handling.js +130 -37
  22. package/dist/tools/analysis/error-handling.js.map +1 -1
  23. package/dist/tools/analysis/index.d.ts +3 -0
  24. package/dist/tools/analysis/index.d.ts.map +1 -1
  25. package/dist/tools/analysis/index.js +100 -0
  26. package/dist/tools/analysis/index.js.map +1 -1
  27. package/dist/tools/analysis/quality-gate.d.ts +78 -0
  28. package/dist/tools/analysis/quality-gate.d.ts.map +1 -0
  29. package/dist/tools/analysis/quality-gate.js +164 -0
  30. package/dist/tools/analysis/quality-gate.js.map +1 -0
  31. package/dist/tools/analysis/rust.d.ts +51 -0
  32. package/dist/tools/analysis/rust.d.ts.map +1 -0
  33. package/dist/tools/analysis/rust.js +253 -0
  34. package/dist/tools/analysis/rust.js.map +1 -0
  35. package/dist/tools/analysis/simulate.d.ts +1 -0
  36. package/dist/tools/analysis/simulate.d.ts.map +1 -1
  37. package/dist/tools/analysis/simulate.js +78 -74
  38. package/dist/tools/analysis/simulate.js.map +1 -1
  39. package/dist/tools/analysis/test-topology.js +117 -44
  40. package/dist/tools/analysis/test-topology.js.map +1 -1
  41. package/dist/tools/detail/reachability.d.ts +2 -0
  42. package/dist/tools/detail/reachability.d.ts.map +1 -1
  43. package/dist/tools/detail/reachability.js +42 -32
  44. package/dist/tools/detail/reachability.js.map +1 -1
  45. package/dist/tools/orchestration/index.d.ts +2 -0
  46. package/dist/tools/orchestration/index.d.ts.map +1 -1
  47. package/dist/tools/orchestration/index.js +3 -0
  48. package/dist/tools/orchestration/index.js.map +1 -1
  49. package/dist/tools/orchestration/package-context.d.ts +134 -0
  50. package/dist/tools/orchestration/package-context.d.ts.map +1 -0
  51. package/dist/tools/orchestration/package-context.js +261 -0
  52. package/dist/tools/orchestration/package-context.js.map +1 -0
  53. package/package.json +12 -12
  54. package/LICENSE +0 -21
  55. package/dist/server.d.ts +0 -11
  56. package/dist/server.d.ts.map +0 -1
  57. package/dist/server.js +0 -3177
  58. package/dist/server.js.map +0 -1
  59. package/dist/tools/detail/dna-check.d.ts +0 -32
  60. package/dist/tools/detail/dna-check.d.ts.map +0 -1
  61. package/dist/tools/detail/dna-check.js +0 -231
  62. package/dist/tools/detail/dna-check.js.map +0 -1
  63. package/dist/tools/exploration/files-list.d.ts +0 -29
  64. package/dist/tools/exploration/files-list.d.ts.map +0 -1
  65. package/dist/tools/exploration/files-list.js +0 -94
  66. package/dist/tools/exploration/files-list.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * drift_quality_gate - Enterprise Quality Gates
3
+ *
4
+ * Runs quality gates on code changes to enforce pattern compliance,
5
+ * constraint verification, regression detection, impact simulation,
6
+ * security boundaries, and custom rules.
7
+ *
8
+ * This is the enterprise CI/CD integration point for Drift.
9
+ */
10
+ import { GateOrchestrator, TextReporter, } from 'driftdetect-core';
11
+ import { createResponseBuilder, Errors } from '../../infrastructure/index.js';
12
+ // ============================================================================
13
+ // Handler
14
+ // ============================================================================
15
+ export async function handleQualityGate(projectRoot, args) {
16
+ const builder = createResponseBuilder();
17
+ try {
18
+ // Parse gates if provided
19
+ let gates;
20
+ if (args.gates) {
21
+ gates = args.gates.split(',').map(g => g.trim());
22
+ }
23
+ // Build options - only include defined values
24
+ const options = {
25
+ projectRoot,
26
+ format: args.format ?? 'json',
27
+ ci: true, // MCP is always "CI mode"
28
+ branch: args.branch ?? 'main',
29
+ };
30
+ // Add optional properties only if defined
31
+ if (args.files && args.files.length > 0) {
32
+ options.files = args.files;
33
+ }
34
+ if (args.policy) {
35
+ options.policy = args.policy;
36
+ }
37
+ if (gates) {
38
+ options.gates = gates;
39
+ }
40
+ if (args.verbose !== undefined) {
41
+ options.verbose = args.verbose;
42
+ }
43
+ if (args.baseBranch) {
44
+ options.baseBranch = args.baseBranch;
45
+ }
46
+ // Run quality gates
47
+ const orchestrator = new GateOrchestrator(projectRoot);
48
+ const result = await orchestrator.run(options);
49
+ // Build summary
50
+ const statusEmoji = result.passed ? '✅' : '❌';
51
+ let summaryText = `${statusEmoji} Quality Gate ${result.passed ? 'PASSED' : 'FAILED'}. `;
52
+ summaryText += `Score: ${result.score}/100. `;
53
+ summaryText += `${result.metadata.gatesRun.length} gate${result.metadata.gatesRun.length === 1 ? '' : 's'} run. `;
54
+ if (result.violations.length > 0) {
55
+ summaryText += `${result.violations.length} violation${result.violations.length === 1 ? '' : 's'} found.`;
56
+ }
57
+ // Build hints
58
+ const warnings = [...result.warnings];
59
+ // Add gate-specific warnings
60
+ for (const [gateId, gateResult] of Object.entries(result.gates)) {
61
+ if (gateResult.warnings.length > 0) {
62
+ warnings.push(`[${gateId}] ${gateResult.warnings[0]}`);
63
+ }
64
+ }
65
+ const nextActions = [];
66
+ if (!result.passed) {
67
+ nextActions.push('Review violations and fix issues');
68
+ nextActions.push('Run `drift gate --verbose` for detailed output');
69
+ }
70
+ if (result.metadata.gatesSkipped.length > 0) {
71
+ nextActions.push(`Enable skipped gates: ${result.metadata.gatesSkipped.join(', ')}`);
72
+ }
73
+ const hints = {
74
+ relatedTools: [
75
+ 'drift_patterns_list',
76
+ 'drift_constraints',
77
+ 'drift_impact_analysis',
78
+ 'drift_security_summary',
79
+ ],
80
+ };
81
+ if (nextActions.length > 0) {
82
+ hints.nextActions = nextActions;
83
+ }
84
+ if (warnings.length > 0) {
85
+ hints.warnings = warnings.slice(0, 5);
86
+ }
87
+ // Generate text report if verbose
88
+ let detailedReport;
89
+ if (args.verbose) {
90
+ const reporter = new TextReporter();
91
+ detailedReport = reporter.generate(result, { verbose: true });
92
+ }
93
+ const response = builder
94
+ .withSummary(summaryText)
95
+ .withData({ result })
96
+ .withHints(hints)
97
+ .buildContent();
98
+ // Add detailed report as additional content if available
99
+ if (detailedReport) {
100
+ response.content.push({
101
+ type: 'text',
102
+ text: `\n\n--- Detailed Report ---\n${detailedReport}`,
103
+ });
104
+ }
105
+ return response;
106
+ }
107
+ catch (error) {
108
+ const message = error instanceof Error ? error.message : 'Unknown error';
109
+ throw Errors.internal(`Quality gate failed: ${message}`);
110
+ }
111
+ }
112
+ // ============================================================================
113
+ // Tool Definition
114
+ // ============================================================================
115
+ export const qualityGateTool = {
116
+ name: 'drift_quality_gate',
117
+ description: `Run quality gates on code changes.
118
+
119
+ Quality gates check:
120
+ - Pattern Compliance: Do changes follow established patterns?
121
+ - Constraint Verification: Do changes satisfy architectural constraints?
122
+ - Regression Detection: Do changes cause pattern regressions?
123
+ - Impact Simulation: What's the blast radius of changes?
124
+ - Security Boundary: Is sensitive data access properly authorized?
125
+ - Custom Rules: Do changes follow team-defined rules?
126
+
127
+ Use this before merging PRs to catch architectural drift.`,
128
+ inputSchema: {
129
+ type: 'object',
130
+ properties: {
131
+ files: {
132
+ type: 'array',
133
+ items: { type: 'string' },
134
+ description: 'Files to check (optional - defaults to all changed files)',
135
+ },
136
+ policy: {
137
+ type: 'string',
138
+ description: 'Policy to use: default, strict, relaxed, ci-fast, or custom ID',
139
+ },
140
+ gates: {
141
+ type: 'string',
142
+ description: 'Specific gates to run (comma-separated): pattern-compliance, constraint-verification, regression-detection, impact-simulation, security-boundary, custom-rules',
143
+ },
144
+ format: {
145
+ type: 'string',
146
+ enum: ['text', 'json', 'github', 'gitlab', 'sarif'],
147
+ description: 'Output format (default: json)',
148
+ },
149
+ verbose: {
150
+ type: 'boolean',
151
+ description: 'Include detailed output',
152
+ },
153
+ branch: {
154
+ type: 'string',
155
+ description: 'Current branch name',
156
+ },
157
+ baseBranch: {
158
+ type: 'string',
159
+ description: 'Base branch for comparison (for PRs)',
160
+ },
161
+ },
162
+ },
163
+ };
164
+ //# sourceMappingURL=quality-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.js","sourceRoot":"","sources":["../../../src/tools/analysis/quality-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Rust Analysis MCP Tool
3
+ *
4
+ * Analyze Rust projects: routes, error handling, traits, data access, async patterns.
5
+ *
6
+ * @license Apache-2.0
7
+ */
8
+ export type RustAction = 'status' | 'routes' | 'errors' | 'traits' | 'data-access' | 'async';
9
+ export interface RustArgs {
10
+ action: RustAction;
11
+ path?: string;
12
+ limit?: number;
13
+ framework?: string;
14
+ }
15
+ export interface ToolContext {
16
+ projectRoot: string;
17
+ }
18
+ export declare function executeRustTool(args: RustArgs, context: ToolContext): Promise<{
19
+ content: Array<{
20
+ type: string;
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ export declare const rustToolDefinition: {
25
+ name: string;
26
+ description: string;
27
+ inputSchema: {
28
+ type: string;
29
+ properties: {
30
+ action: {
31
+ type: string;
32
+ enum: string[];
33
+ description: string;
34
+ };
35
+ path: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ limit: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ framework: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ };
48
+ required: string[];
49
+ };
50
+ };
51
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/rust.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,OAAO,CAAC;AAEZ,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA8D7D;AA4LD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC9B,CAAC"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Rust Analysis MCP Tool
3
+ *
4
+ * Analyze Rust projects: routes, error handling, traits, data access, async patterns.
5
+ *
6
+ * @license Apache-2.0
7
+ */
8
+ import { createRustAnalyzer, } from 'driftdetect-core';
9
+ // ============================================================================
10
+ // Tool Implementation
11
+ // ============================================================================
12
+ export async function executeRustTool(args, context) {
13
+ const projectPath = args.path ?? context.projectRoot;
14
+ const limit = args.limit ?? 50;
15
+ const options = {
16
+ rootDir: projectPath,
17
+ verbose: false,
18
+ };
19
+ const analyzer = createRustAnalyzer(options);
20
+ let result;
21
+ switch (args.action) {
22
+ case 'status': {
23
+ const analysisResult = await analyzer.analyze();
24
+ result = formatStatusResult(analysisResult, limit);
25
+ break;
26
+ }
27
+ case 'routes': {
28
+ const routeResult = await analyzer.analyzeRoutes();
29
+ result = formatRoutesResult(routeResult, args.framework, limit);
30
+ break;
31
+ }
32
+ case 'errors': {
33
+ const errorResult = await analyzer.analyzeErrorHandling();
34
+ result = formatErrorsResult(errorResult, limit);
35
+ break;
36
+ }
37
+ case 'traits': {
38
+ const traitResult = await analyzer.analyzeTraits();
39
+ result = formatTraitsResult(traitResult, limit);
40
+ break;
41
+ }
42
+ case 'data-access': {
43
+ const dataResult = await analyzer.analyzeDataAccess();
44
+ result = formatDataAccessResult(dataResult, args.framework, limit);
45
+ break;
46
+ }
47
+ case 'async': {
48
+ const asyncResult = await analyzer.analyzeAsync();
49
+ result = formatAsyncResult(asyncResult, limit);
50
+ break;
51
+ }
52
+ default:
53
+ throw new Error(`Unknown action: ${args.action}`);
54
+ }
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: JSON.stringify(result, null, 2),
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ // ============================================================================
65
+ // Result Formatters
66
+ // ============================================================================
67
+ function formatStatusResult(result, _limit) {
68
+ return {
69
+ project: {
70
+ name: result.crateName ?? 'unknown',
71
+ edition: result.edition ?? 'unknown',
72
+ frameworks: result.detectedFrameworks,
73
+ },
74
+ stats: {
75
+ files: result.stats.fileCount,
76
+ functions: result.stats.functionCount,
77
+ structs: result.stats.structCount,
78
+ traits: result.stats.traitCount,
79
+ enums: result.stats.enumCount,
80
+ linesOfCode: result.stats.linesOfCode,
81
+ testFiles: result.stats.testFileCount,
82
+ testFunctions: result.stats.testFunctionCount,
83
+ },
84
+ crates: result.crates.map(c => ({
85
+ name: c.name,
86
+ files: c.files.length,
87
+ functions: c.functions.length,
88
+ })),
89
+ analysisTimeMs: result.stats.analysisTimeMs,
90
+ };
91
+ }
92
+ function formatRoutesResult(result, framework, limit) {
93
+ let routes = result.routes;
94
+ // Filter by framework if specified
95
+ if (framework) {
96
+ routes = routes.filter(r => r.framework === framework);
97
+ }
98
+ return {
99
+ summary: {
100
+ totalRoutes: routes.length,
101
+ byFramework: result.byFramework,
102
+ },
103
+ routes: routes.slice(0, limit).map(r => ({
104
+ method: r.method,
105
+ path: r.path,
106
+ handler: r.handler,
107
+ file: r.file,
108
+ line: r.line,
109
+ framework: r.framework,
110
+ })),
111
+ truncated: routes.length > limit,
112
+ };
113
+ }
114
+ function formatErrorsResult(result, limit) {
115
+ return {
116
+ summary: {
117
+ resultTypes: result.stats.resultTypes,
118
+ customErrors: result.stats.customErrors,
119
+ thiserrorDerives: result.stats.thiserrorDerives,
120
+ anyhowUsage: result.stats.anyhowUsage,
121
+ unwrapCalls: result.stats.unwrapCalls,
122
+ expectCalls: result.stats.expectCalls,
123
+ },
124
+ patterns: result.patterns.slice(0, limit).map(p => ({
125
+ type: p.type,
126
+ file: p.file,
127
+ line: p.line,
128
+ context: p.context.slice(0, 100),
129
+ })),
130
+ customErrors: result.customErrors.slice(0, limit).map(e => ({
131
+ name: e.name,
132
+ file: e.file,
133
+ line: e.line,
134
+ variants: e.variants,
135
+ })),
136
+ issues: result.issues.slice(0, limit).map(i => ({
137
+ message: i.message,
138
+ file: i.file,
139
+ line: i.line,
140
+ suggestion: i.suggestion,
141
+ })),
142
+ truncated: result.patterns.length > limit || result.issues.length > limit,
143
+ };
144
+ }
145
+ function formatTraitsResult(result, limit) {
146
+ return {
147
+ summary: {
148
+ totalTraits: result.traits.length,
149
+ totalImplementations: result.implementations.length,
150
+ },
151
+ traits: result.traits.slice(0, limit).map(t => ({
152
+ name: t.name,
153
+ file: t.file,
154
+ line: t.line,
155
+ methods: t.methods,
156
+ implementations: t.implementations,
157
+ })),
158
+ implementations: result.implementations.slice(0, limit).map(i => ({
159
+ trait: i.traitName,
160
+ for: i.forType,
161
+ file: i.file,
162
+ line: i.line,
163
+ })),
164
+ truncated: result.traits.length > limit || result.implementations.length > limit,
165
+ };
166
+ }
167
+ function formatDataAccessResult(result, framework, limit) {
168
+ let accessPoints = result.accessPoints;
169
+ // Filter by framework if specified
170
+ if (framework) {
171
+ accessPoints = accessPoints.filter(a => a.framework === framework);
172
+ }
173
+ return {
174
+ summary: {
175
+ totalAccessPoints: accessPoints.length,
176
+ tables: result.tables,
177
+ byFramework: result.byFramework,
178
+ byOperation: result.byOperation,
179
+ },
180
+ accessPoints: accessPoints.slice(0, limit).map(a => ({
181
+ table: a.table,
182
+ operation: a.operation,
183
+ framework: a.framework,
184
+ file: a.file,
185
+ line: a.line,
186
+ })),
187
+ truncated: accessPoints.length > limit,
188
+ };
189
+ }
190
+ function formatAsyncResult(result, limit) {
191
+ return {
192
+ summary: {
193
+ runtime: result.runtime ?? 'unknown',
194
+ asyncFunctions: result.stats.asyncFunctions,
195
+ awaitPoints: result.stats.awaitPoints,
196
+ spawnedTasks: result.stats.spawnedTasks,
197
+ channels: result.stats.channels,
198
+ mutexes: result.stats.mutexes,
199
+ },
200
+ asyncFunctions: result.asyncFunctions.slice(0, limit).map(f => ({
201
+ name: f.name,
202
+ file: f.file,
203
+ line: f.line,
204
+ hasAwait: f.hasAwait,
205
+ })),
206
+ issues: result.issues.slice(0, limit).map(i => ({
207
+ message: i.message,
208
+ file: i.file,
209
+ line: i.line,
210
+ type: i.type,
211
+ })),
212
+ truncated: result.asyncFunctions.length > limit,
213
+ };
214
+ }
215
+ // ============================================================================
216
+ // Tool Definition
217
+ // ============================================================================
218
+ export const rustToolDefinition = {
219
+ name: 'drift_rust',
220
+ description: `Analyze Rust projects for patterns, routes, error handling, and data access.
221
+
222
+ Actions:
223
+ - status: Project overview with stats and detected frameworks
224
+ - routes: HTTP route analysis (Actix, Axum, Rocket, Warp)
225
+ - errors: Error handling patterns (Result, thiserror, anyhow)
226
+ - traits: Trait definitions and implementations
227
+ - data-access: Database access patterns (SQLx, Diesel, SeaORM)
228
+ - async: Async patterns and runtime analysis`,
229
+ inputSchema: {
230
+ type: 'object',
231
+ properties: {
232
+ action: {
233
+ type: 'string',
234
+ enum: ['status', 'routes', 'errors', 'traits', 'data-access', 'async'],
235
+ description: 'Analysis action to perform',
236
+ },
237
+ path: {
238
+ type: 'string',
239
+ description: 'Project path (defaults to current project)',
240
+ },
241
+ limit: {
242
+ type: 'number',
243
+ description: 'Maximum items to return (default: 50)',
244
+ },
245
+ framework: {
246
+ type: 'string',
247
+ description: 'Filter by framework (for routes and data-access)',
248
+ },
249
+ },
250
+ required: ['action'],
251
+ },
252
+ };
253
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/tools/analysis/rust.ts"],"names":[],"mappings":"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"}
@@ -23,5 +23,6 @@ export declare function handleSimulate(projectRoot: string, args: SimulateArgs):
23
23
  type: string;
24
24
  text: string;
25
25
  }>;
26
+ isError?: boolean;
26
27
  }>;
27
28
  //# sourceMappingURL=simulate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAMD,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,CAkF7D"}
1
+ {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../../src/tools/analysis/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAMD,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,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2FhF"}