mycontext-cli 3.0.3 → 4.1.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 (114) hide show
  1. package/README.md +56 -113
  2. package/dist/cli.js +69 -116
  3. package/dist/cli.js.map +1 -1
  4. package/dist/clients/MyContextAIClient.d.ts.map +1 -1
  5. package/dist/clients/MyContextAIClient.js +12 -0
  6. package/dist/clients/MyContextAIClient.js.map +1 -1
  7. package/dist/commands/agent-flow.js +1 -1
  8. package/dist/commands/agent-flow.js.map +1 -1
  9. package/dist/commands/agent.d.ts +22 -0
  10. package/dist/commands/agent.d.ts.map +1 -0
  11. package/dist/commands/agent.js +245 -0
  12. package/dist/commands/agent.js.map +1 -0
  13. package/dist/commands/analyze-screenshot.js +2 -2
  14. package/dist/commands/analyze-screenshot.js.map +1 -1
  15. package/dist/commands/build-app.d.ts.map +1 -1
  16. package/dist/commands/build-app.js +2 -1
  17. package/dist/commands/build-app.js.map +1 -1
  18. package/dist/commands/enhance.d.ts.map +1 -1
  19. package/dist/commands/enhance.js +1 -2
  20. package/dist/commands/enhance.js.map +1 -1
  21. package/dist/commands/generate-components.d.ts +0 -1
  22. package/dist/commands/generate-components.d.ts.map +1 -1
  23. package/dist/commands/generate-components.js +8 -83
  24. package/dist/commands/generate-components.js.map +1 -1
  25. package/dist/commands/generate-screens.d.ts +5 -1
  26. package/dist/commands/generate-screens.d.ts.map +1 -1
  27. package/dist/commands/generate-screens.js +78 -29
  28. package/dist/commands/generate-screens.js.map +1 -1
  29. package/dist/commands/generate.js +2 -2
  30. package/dist/commands/generate.js.map +1 -1
  31. package/dist/commands/init.d.ts +5 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +18 -2
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/list.d.ts.map +1 -1
  36. package/dist/commands/list.js +1 -2
  37. package/dist/commands/list.js.map +1 -1
  38. package/dist/commands/refine.d.ts.map +1 -1
  39. package/dist/commands/refine.js +2 -3
  40. package/dist/commands/refine.js.map +1 -1
  41. package/dist/commands/setup-complete.js +1 -1
  42. package/dist/commands/setup-complete.js.map +1 -1
  43. package/dist/commands/status.d.ts.map +1 -1
  44. package/dist/commands/status.js +0 -9
  45. package/dist/commands/status.js.map +1 -1
  46. package/dist/commands/sync-readme.d.ts +14 -0
  47. package/dist/commands/sync-readme.d.ts.map +1 -0
  48. package/dist/commands/sync-readme.js +131 -0
  49. package/dist/commands/sync-readme.js.map +1 -0
  50. package/dist/commands/test.d.ts +76 -0
  51. package/dist/commands/test.d.ts.map +1 -0
  52. package/dist/commands/test.js +361 -0
  53. package/dist/commands/test.js.map +1 -0
  54. package/dist/commands/workflow.d.ts.map +1 -1
  55. package/dist/commands/workflow.js +5 -9
  56. package/dist/commands/workflow.js.map +1 -1
  57. package/dist/mcp/browser-test-runner.d.ts +89 -0
  58. package/dist/mcp/browser-test-runner.d.ts.map +1 -0
  59. package/dist/mcp/browser-test-runner.js +786 -0
  60. package/dist/mcp/browser-test-runner.js.map +1 -0
  61. package/dist/mcp/test-mission-manager.d.ts +82 -0
  62. package/dist/mcp/test-mission-manager.d.ts.map +1 -0
  63. package/dist/mcp/test-mission-manager.js +327 -0
  64. package/dist/mcp/test-mission-manager.js.map +1 -0
  65. package/dist/mcp/test-reporter.d.ts +54 -0
  66. package/dist/mcp/test-reporter.d.ts.map +1 -0
  67. package/dist/mcp/test-reporter.js +358 -0
  68. package/dist/mcp/test-reporter.js.map +1 -0
  69. package/dist/mcp/testing-server.d.ts +36 -0
  70. package/dist/mcp/testing-server.d.ts.map +1 -0
  71. package/dist/mcp/testing-server.js +516 -0
  72. package/dist/mcp/testing-server.js.map +1 -0
  73. package/dist/package.json +7 -7
  74. package/dist/services/ContextService.d.ts +38 -0
  75. package/dist/services/ContextService.d.ts.map +1 -0
  76. package/dist/services/ContextService.js +104 -0
  77. package/dist/services/ContextService.js.map +1 -0
  78. package/dist/services/ProbeManager.d.ts +32 -0
  79. package/dist/services/ProbeManager.d.ts.map +1 -0
  80. package/dist/services/ProbeManager.js +116 -0
  81. package/dist/services/ProbeManager.js.map +1 -0
  82. package/dist/types/design-pipeline.d.ts +6 -0
  83. package/dist/types/design-pipeline.d.ts.map +1 -1
  84. package/dist/types/flow-testing.d.ts +179 -0
  85. package/dist/types/flow-testing.d.ts.map +1 -0
  86. package/dist/types/flow-testing.js +7 -0
  87. package/dist/types/flow-testing.js.map +1 -0
  88. package/dist/types/index.d.ts +1 -0
  89. package/dist/types/index.d.ts.map +1 -1
  90. package/dist/utils/designManifestManager.d.ts +4 -0
  91. package/dist/utils/designManifestManager.d.ts.map +1 -1
  92. package/dist/utils/designManifestManager.js +161 -0
  93. package/dist/utils/designManifestManager.js.map +1 -1
  94. package/dist/utils/githubModelsClient.d.ts +27 -0
  95. package/dist/utils/githubModelsClient.d.ts.map +1 -0
  96. package/dist/utils/githubModelsClient.js +104 -0
  97. package/dist/utils/githubModelsClient.js.map +1 -0
  98. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  99. package/dist/utils/hybridAIClient.js +19 -0
  100. package/dist/utils/hybridAIClient.js.map +1 -1
  101. package/dist/utils/mcpTools.d.ts +21 -21
  102. package/dist/utils/nextStepsSuggester.js +3 -3
  103. package/dist/utils/nextStepsSuggester.js.map +1 -1
  104. package/dist/utils/workflowEngine.js +4 -4
  105. package/dist/utils/workflowEngine.js.map +1 -1
  106. package/package.json +7 -7
  107. package/dist/commands/preview-components.d.ts +0 -12
  108. package/dist/commands/preview-components.d.ts.map +0 -1
  109. package/dist/commands/preview-components.js +0 -122
  110. package/dist/commands/preview-components.js.map +0 -1
  111. package/dist/commands/preview.d.ts +0 -24
  112. package/dist/commands/preview.d.ts.map +0 -1
  113. package/dist/commands/preview.js +0 -1235
  114. package/dist/commands/preview.js.map +0 -1
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ /**
3
+ * Test Reporter
4
+ *
5
+ * Generates and formats test execution reports.
6
+ * Reports are saved in .mycontext/test-reports/
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.TestReporter = void 0;
46
+ const fs = __importStar(require("fs-extra"));
47
+ const path = __importStar(require("path"));
48
+ const chalk_1 = __importDefault(require("chalk"));
49
+ class TestReporter {
50
+ constructor(projectPath) {
51
+ this.projectPath = projectPath;
52
+ this.reportsDir = path.join(projectPath, ".mycontext", "test-reports");
53
+ fs.ensureDirSync(this.reportsDir);
54
+ }
55
+ /**
56
+ * Generate a report from test execution
57
+ */
58
+ async generateReport(execution, mission) {
59
+ const report = {
60
+ reportId: execution.executionId,
61
+ mission: mission || {}, // Will be filled by caller
62
+ execution,
63
+ generatedAt: new Date().toISOString(),
64
+ summary: {
65
+ totalSteps: execution.steps.length,
66
+ successfulSteps: execution.steps.filter((s) => s.success).length,
67
+ failedSteps: execution.steps.filter((s) => !s.success).length,
68
+ totalValidations: execution.validationResults.length,
69
+ passedValidations: execution.validationResults.filter((v) => v.passed)
70
+ .length,
71
+ failedValidations: execution.validationResults.filter((v) => !v.passed)
72
+ .length,
73
+ overallStatus: execution.status,
74
+ },
75
+ insights: this.generateInsights(execution),
76
+ recommendations: this.generateRecommendations(execution),
77
+ driftReport: execution.driftAnalysis ? {
78
+ overallScore: execution.driftAnalysis.narrativeCompliance,
79
+ criticalAlerts: execution.driftAnalysis.alerts.filter(a => a.severity === 'high').length
80
+ } : undefined
81
+ };
82
+ // Save report to disk
83
+ await this.saveReport(report);
84
+ return report;
85
+ }
86
+ /**
87
+ * Save report to disk
88
+ */
89
+ async saveReport(report) {
90
+ const filename = `${report.reportId}.json`;
91
+ const filepath = path.join(this.reportsDir, filename);
92
+ await fs.writeJson(filepath, report, { spaces: 2 });
93
+ }
94
+ /**
95
+ * Get a report by execution ID
96
+ */
97
+ async getReport(executionId) {
98
+ const filepath = path.join(this.reportsDir, `${executionId}.json`);
99
+ if (await fs.pathExists(filepath)) {
100
+ return await fs.readJson(filepath);
101
+ }
102
+ return null;
103
+ }
104
+ /**
105
+ * Format report as text
106
+ */
107
+ async formatReport(report, options = {}) {
108
+ const { includeScreenshots = true } = options;
109
+ const { execution, summary } = report;
110
+ const lines = [];
111
+ // Header
112
+ lines.push(`# Test Report: ${report.mission.name || "Unknown Mission"}`);
113
+ lines.push("");
114
+ lines.push(`**Execution ID**: ${execution.executionId}`);
115
+ lines.push(`**Status**: ${execution.status.toUpperCase()}`);
116
+ lines.push(`**Date**: ${new Date(execution.startedAt).toLocaleString()}`);
117
+ lines.push(`**Duration**: ${execution.duration ? `${execution.duration}ms` : "N/A"}`);
118
+ lines.push("");
119
+ // Summary
120
+ lines.push(`## Summary`);
121
+ lines.push("");
122
+ lines.push(`- **Total Steps**: ${summary.totalSteps}`);
123
+ lines.push(`- **Successful Steps**: ${summary.successfulSteps}`);
124
+ lines.push(`- **Failed Steps**: ${summary.failedSteps}`);
125
+ lines.push(`- **Total Validations**: ${summary.totalValidations}`);
126
+ lines.push(`- **Passed Validations**: ${summary.passedValidations}`);
127
+ lines.push(`- **Failed Validations**: ${summary.failedValidations}`);
128
+ lines.push("");
129
+ // Steps
130
+ if (execution.steps.length > 0) {
131
+ lines.push(`## Execution Steps (${execution.steps.length})`);
132
+ lines.push("");
133
+ execution.steps.forEach((step) => {
134
+ const statusIcon = step.success ? "āœ…" : "āŒ";
135
+ lines.push(`### ${statusIcon} Step ${step.order + 1}: ${step.action}`);
136
+ if (step.intent) {
137
+ lines.push(`**Intent**: ${step.intent}`);
138
+ }
139
+ if (!step.success && step.error) {
140
+ lines.push(`**Error**: ${step.error}`);
141
+ }
142
+ if (includeScreenshots && step.screenshot) {
143
+ lines.push(`**Screenshot**: ${step.screenshot}`);
144
+ }
145
+ if (step.metadata) {
146
+ lines.push(`**Metadata**: ${JSON.stringify(step.metadata, null, 2)}`);
147
+ }
148
+ lines.push("");
149
+ });
150
+ }
151
+ // Validations
152
+ if (execution.validationResults.length > 0) {
153
+ lines.push(`## Validation Results (${execution.validationResults.length})`);
154
+ lines.push("");
155
+ execution.validationResults.forEach((validation, index) => {
156
+ const statusIcon = validation.passed ? "āœ…" : "āŒ";
157
+ lines.push(`### ${statusIcon} Validation ${index + 1}`);
158
+ lines.push(`**Type**: ${validation.rule.type}`);
159
+ lines.push(`**Description**: ${validation.rule.description}`);
160
+ lines.push(`**Result**: ${validation.message}`);
161
+ if (validation.actualValue) {
162
+ lines.push(`**Actual Value**: ${validation.actualValue}`);
163
+ }
164
+ lines.push("");
165
+ });
166
+ }
167
+ // Error
168
+ if (execution.error) {
169
+ lines.push(`## Error`);
170
+ lines.push("");
171
+ lines.push("```");
172
+ lines.push(execution.error.message);
173
+ if (execution.error.stack) {
174
+ lines.push("");
175
+ lines.push(execution.error.stack);
176
+ }
177
+ lines.push("```");
178
+ lines.push("");
179
+ }
180
+ // Final State
181
+ lines.push(`## Final State`);
182
+ lines.push("");
183
+ lines.push(`**URL**: ${execution.finalState.url || "N/A"}`);
184
+ if (includeScreenshots && execution.finalState.screenshot) {
185
+ lines.push(`**Screenshot**: ${execution.finalState.screenshot}`);
186
+ }
187
+ lines.push("");
188
+ // AI Notes
189
+ if (execution.aiNotes) {
190
+ lines.push(`## AI Notes`);
191
+ lines.push("");
192
+ lines.push(execution.aiNotes);
193
+ lines.push("");
194
+ }
195
+ // Insights
196
+ if (report.insights && report.insights.length > 0) {
197
+ lines.push(`## Insights`);
198
+ lines.push("");
199
+ report.insights.forEach((insight) => lines.push(`- ${insight}`));
200
+ lines.push("");
201
+ }
202
+ // Recommendations
203
+ if (report.recommendations && report.recommendations.length > 0) {
204
+ lines.push(`## Recommendations`);
205
+ lines.push("");
206
+ report.recommendations.forEach((rec) => lines.push(`- ${rec}`));
207
+ lines.push("");
208
+ }
209
+ // Drift Analysis
210
+ if (report.driftReport) {
211
+ lines.push("## Drift Analysis (Antigravity Grounding)");
212
+ lines.push("");
213
+ lines.push(`- **Narrative Compliance**: ${(report.driftReport.overallScore * 100).toFixed(1)}%`);
214
+ lines.push(`- **Critical Deviations**: ${report.driftReport.criticalAlerts}`);
215
+ lines.push("");
216
+ if (report.execution.driftAnalysis && report.execution.driftAnalysis.alerts.length > 0) {
217
+ lines.push("### Drift Alerts");
218
+ lines.push("");
219
+ report.execution.driftAnalysis.alerts.forEach(alert => {
220
+ const icon = alert.severity === 'high' ? '🚨' : alert.severity === 'medium' ? 'āš ļø' : 'ā„¹ļø';
221
+ lines.push(`${icon} **[${alert.type.toUpperCase()}]** ${alert.message}`);
222
+ lines.push(` - **Expected**: ${alert.expected}`);
223
+ lines.push(` - **Actual**: ${alert.actual}`);
224
+ lines.push("");
225
+ });
226
+ }
227
+ }
228
+ return lines.join("\n");
229
+ }
230
+ /**
231
+ * Generate insights from execution
232
+ */
233
+ generateInsights(execution) {
234
+ const insights = [];
235
+ // Analyze step success rate
236
+ const successRate = execution.steps.length > 0
237
+ ? (execution.steps.filter((s) => s.success).length /
238
+ execution.steps.length) *
239
+ 100
240
+ : 0;
241
+ if (successRate === 100 && execution.status === "passed") {
242
+ insights.push("All steps executed successfully");
243
+ }
244
+ else if (successRate < 50) {
245
+ insights.push(`Low success rate (${Math.round(successRate)}%) - test may need adjustment`);
246
+ }
247
+ // Analyze execution time
248
+ if (execution.duration) {
249
+ if (execution.duration > 30000) {
250
+ insights.push(`Test took ${Math.round(execution.duration / 1000)}s - consider optimization`);
251
+ }
252
+ else if (execution.duration < 5000) {
253
+ insights.push("Fast execution time - excellent!");
254
+ }
255
+ }
256
+ // Analyze validation results
257
+ if (execution.validationResults.length > 0) {
258
+ const passRate = (execution.validationResults.filter((v) => v.passed).length /
259
+ execution.validationResults.length) *
260
+ 100;
261
+ if (passRate < 100) {
262
+ insights.push(`${Math.round(100 - passRate)}% of validations failed - review expected outcomes`);
263
+ }
264
+ }
265
+ // Check for errors
266
+ if (execution.error) {
267
+ insights.push(`Test encountered an error: ${execution.error.message}`);
268
+ }
269
+ return insights;
270
+ }
271
+ /**
272
+ * Generate recommendations
273
+ */
274
+ generateRecommendations(execution) {
275
+ const recommendations = [];
276
+ // Failed steps
277
+ const failedSteps = execution.steps.filter((s) => !s.success);
278
+ if (failedSteps.length > 0) {
279
+ recommendations.push(`Review failed steps: ${failedSteps.map((s) => s.action).join(", ")}`);
280
+ }
281
+ // Failed validations
282
+ const failedValidations = execution.validationResults.filter((v) => !v.passed);
283
+ if (failedValidations.length > 0) {
284
+ recommendations.push(`Update validation rules or fix issues causing failures`);
285
+ }
286
+ // No validations
287
+ if (execution.validationResults.length === 0) {
288
+ recommendations.push(`Add validation rules to ensure test reliability`);
289
+ }
290
+ // Long execution
291
+ if (execution.duration && execution.duration > 30000) {
292
+ recommendations.push(`Consider adding explicit waits or optimizing selectors`);
293
+ }
294
+ // Error
295
+ if (execution.error) {
296
+ recommendations.push(`Fix the error before proceeding: ${execution.error.message}`);
297
+ }
298
+ return recommendations;
299
+ }
300
+ /**
301
+ * Generate summary report for multiple executions
302
+ */
303
+ async generateSummaryReport(executionIds) {
304
+ const reports = [];
305
+ for (const id of executionIds) {
306
+ const report = await this.getReport(id);
307
+ if (report) {
308
+ reports.push(report);
309
+ }
310
+ }
311
+ const passed = reports.filter((r) => r.execution.status === "passed").length;
312
+ const failed = reports.filter((r) => r.execution.status === "failed").length;
313
+ const errors = reports.filter((r) => r.execution.status === "error").length;
314
+ const durations = reports
315
+ .filter((r) => r.execution.duration)
316
+ .map((r) => r.execution.duration);
317
+ const averageDuration = durations.length > 0
318
+ ? durations.reduce((sum, d) => sum + d, 0) / durations.length
319
+ : 0;
320
+ return {
321
+ totalTests: reports.length,
322
+ passed,
323
+ failed,
324
+ errors,
325
+ averageDuration: Math.round(averageDuration),
326
+ reports,
327
+ };
328
+ }
329
+ /**
330
+ * Console log a report with colors
331
+ */
332
+ printReport(report) {
333
+ console.log(chalk_1.default.bold.blue(`\nšŸ“Š Test Report: ${report.mission.name}`));
334
+ console.log(chalk_1.default.gray(`═══════════════════════════════════════`));
335
+ const statusColor = report.execution.status === "passed"
336
+ ? chalk_1.default.green
337
+ : report.execution.status === "failed"
338
+ ? chalk_1.default.red
339
+ : chalk_1.default.yellow;
340
+ console.log(`Status: ${statusColor(report.execution.status.toUpperCase())}`);
341
+ console.log(`Duration: ${report.execution.duration ? `${report.execution.duration}ms` : "N/A"}`);
342
+ console.log("");
343
+ console.log(chalk_1.default.bold("Summary:"));
344
+ console.log(` Steps: ${report.summary.successfulSteps}/${report.summary.totalSteps} passed`);
345
+ console.log(` Validations: ${report.summary.passedValidations}/${report.summary.totalValidations} passed`);
346
+ if (report.insights && report.insights.length > 0) {
347
+ console.log(chalk_1.default.bold("\nInsights:"));
348
+ report.insights.forEach((insight) => console.log(chalk_1.default.cyan(` • ${insight}`)));
349
+ }
350
+ if (report.recommendations && report.recommendations.length > 0) {
351
+ console.log(chalk_1.default.bold("\nRecommendations:"));
352
+ report.recommendations.forEach((rec) => console.log(chalk_1.default.yellow(` • ${rec}`)));
353
+ }
354
+ console.log(chalk_1.default.gray(`\nFull report: ${report.reportId}\n`));
355
+ }
356
+ }
357
+ exports.TestReporter = TestReporter;
358
+ //# sourceMappingURL=test-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-reporter.js","sourceRoot":"","sources":["../../src/mcp/test-reporter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,2CAA6B;AAM7B,kDAA0B;AAE1B,MAAa,YAAY;IAIvB,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;QACvE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,SAA8B,EAC9B,OAAqB;QAErB,MAAM,MAAM,GAAe;YACzB,QAAQ,EAAE,SAAS,CAAC,WAAW;YAC/B,OAAO,EAAE,OAAO,IAAK,EAAkB,EAAE,2BAA2B;YACpE,SAAS;YACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,OAAO,EAAE;gBACP,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBAClC,eAAe,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;gBAChE,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;gBAC7D,gBAAgB,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM;gBACpD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;qBACnE,MAAM;gBACT,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;qBACpE,MAAM;gBACT,aAAa,EAAE,SAAS,CAAC,MAAM;aAChC;YACD,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC1C,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YACxD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBACrC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,mBAAmB;gBACzD,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;aACzF,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;QAEF,sBAAsB;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,MAAkB;QACzC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,QAAQ,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,WAAmB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QAEnE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,MAAkB,EAClB,UAA4C,EAAE;QAE9C,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAEtC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,SAAS;QACT,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CACR,iBAAiB,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAC1E,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,UAAU;QACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,QAAQ;QACR,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc;QACd,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBACxD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,QAAQ;QACR,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,cAAc;QACd,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,kBAAkB,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,WAAW;QACX,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,WAAW;QACX,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjG,KAAK,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACpD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1F,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzE,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClD,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,SAA8B;QACrD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,4BAA4B;QAC5B,MAAM,WAAW,GACf,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;gBAC9C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;gBACzB,GAAG;YACL,CAAC,CAAC,CAAC,CAAC;QAER,IAAI,WAAW,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CACX,qBAAqB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,CAC5E,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,SAAS,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC/F,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;gBACrC,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,QAAQ,GACZ,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBACzD,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACrC,GAAG,CAAC;YAEN,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,oDAAoD,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,SAA8B;QAC5D,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,eAAe;QACf,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,eAAe,CAAC,IAAI,CAClB,wBAAwB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CACjB,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,IAAI,CAClB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,eAAe,CAAC,IAAI,CAClB,iDAAiD,CAClD,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;YACrD,eAAe,CAAC,IAAI,CAClB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,QAAQ;QACR,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,eAAe,CAAC,IAAI,CAClB,oCAAoC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,YAAsB;QAStB,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CACvC,CAAC,MAAM,CAAC;QACT,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CACvC,CAAC,MAAM,CAAC;QACT,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,CACtC,CAAC,MAAM,CAAC;QAET,MAAM,SAAS,GAAG,OAAO;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAS,CAAC,CAAC;QACrC,MAAM,eAAe,GACnB,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;YAC7D,CAAC,CAAC,CAAC,CAAC;QAER,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,MAAM;YACN,MAAM;YACN,MAAM;YACN,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAC5C,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAkB;QAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAEnE,MAAM,WAAW,GACf,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;YAClC,CAAC,CAAC,eAAK,CAAC,KAAK;YACb,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;gBACpC,CAAC,CAAC,eAAK,CAAC,GAAG;gBACX,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC;QAErB,OAAO,CAAC,GAAG,CACT,WAAW,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CACT,aAAa,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CACpF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CACT,YAAY,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,SAAS,CACjF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,kBAAkB,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,SAAS,CAC/F,CAAC;QAEF,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAC1C,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CACxC,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AA7ZD,oCA6ZC"}
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Flow Testing MCP Server
4
+ *
5
+ * A Model Context Protocol server that provides AI-powered UI flow testing capabilities.
6
+ * Can be used standalone or integrated with MyContext CLI.
7
+ *
8
+ * MCP Tools:
9
+ * - create_test_mission: Create a new test mission from natural language
10
+ * - run_test: Execute a test mission with autonomous browser navigation
11
+ * - list_test_missions: List all saved test missions
12
+ * - get_test_report: Retrieve detailed test execution report
13
+ * - record_flow: Interactive flow recording mode
14
+ */
15
+ export declare class FlowTestingMCPServer {
16
+ private server;
17
+ private missionManager;
18
+ private testRunner;
19
+ private reporter;
20
+ private probeManager;
21
+ private contextService;
22
+ private projectPath;
23
+ constructor(projectPath?: string);
24
+ private setupToolHandlers;
25
+ private getAvailableTools;
26
+ private handleCreateTestMission;
27
+ private handleRunTest;
28
+ private handleListTestMissions;
29
+ private handleGetTestReport;
30
+ private handleRunProbe;
31
+ private handleQueryContext;
32
+ private handleRecordFlow;
33
+ private handleWatchTests;
34
+ start(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=testing-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-server.d.ts","sourceRoot":"","sources":["../../src/mcp/testing-server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAiBH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,CAAC,EAAE,MAAM;IAyBhC,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,iBAAiB;YAwLX,uBAAuB;YA+DvB,aAAa;YA6Db,sBAAsB;YA2BtB,mBAAmB;YAuBnB,cAAc;YA2Bd,kBAAkB;YAqBlB,gBAAgB;YAyBhB,gBAAgB;IAuBxB,KAAK;CAKZ"}