mycontext-cli 4.2.10 → 4.2.11

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 (126) hide show
  1. package/README.md +13 -4
  2. package/dist/README.md +13 -4
  3. package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
  4. package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -1
  5. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
  6. package/dist/agents/implementations/DemoRecorderAgent.d.ts +73 -0
  7. package/dist/agents/implementations/DemoRecorderAgent.d.ts.map +1 -0
  8. package/dist/agents/implementations/DemoRecorderAgent.js +485 -0
  9. package/dist/agents/implementations/DemoRecorderAgent.js.map +1 -0
  10. package/dist/agents/implementations/DesignPipelineAgent.d.ts +4 -0
  11. package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -1
  12. package/dist/agents/implementations/DesignPipelineAgent.js +82 -10
  13. package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -1
  14. package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
  15. package/dist/agents/implementations/FeaturePlannerAgent.d.ts +10 -0
  16. package/dist/agents/implementations/FeaturePlannerAgent.d.ts.map +1 -0
  17. package/dist/agents/implementations/FeaturePlannerAgent.js +35 -0
  18. package/dist/agents/implementations/FeaturePlannerAgent.js.map +1 -0
  19. package/dist/agents/implementations/QASubAgent.js.map +1 -1
  20. package/dist/agents/implementations/SecurityAgent.js.map +1 -1
  21. package/dist/agents/implementations/VOScriptExtractorAgent.d.ts +84 -0
  22. package/dist/agents/implementations/VOScriptExtractorAgent.d.ts.map +1 -0
  23. package/dist/agents/implementations/VOScriptExtractorAgent.js +414 -0
  24. package/dist/agents/implementations/VOScriptExtractorAgent.js.map +1 -0
  25. package/dist/agents/implementations/VisionNavigatorAgent.d.ts +52 -0
  26. package/dist/agents/implementations/VisionNavigatorAgent.d.ts.map +1 -0
  27. package/dist/agents/implementations/VisionNavigatorAgent.js +313 -0
  28. package/dist/agents/implementations/VisionNavigatorAgent.js.map +1 -0
  29. package/dist/agents/implementations/VisionTestCoordinator.d.ts +51 -0
  30. package/dist/agents/implementations/VisionTestCoordinator.d.ts.map +1 -0
  31. package/dist/agents/implementations/VisionTestCoordinator.js +348 -0
  32. package/dist/agents/implementations/VisionTestCoordinator.js.map +1 -0
  33. package/dist/agents/implementations/VisualValidatorAgent.d.ts +83 -0
  34. package/dist/agents/implementations/VisualValidatorAgent.d.ts.map +1 -0
  35. package/dist/agents/implementations/VisualValidatorAgent.js +472 -0
  36. package/dist/agents/implementations/VisualValidatorAgent.js.map +1 -0
  37. package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
  38. package/dist/cli.js +3 -0
  39. package/dist/cli.js.map +1 -1
  40. package/dist/clients/ClaudeSDKClient.d.ts +4 -0
  41. package/dist/clients/ClaudeSDKClient.d.ts.map +1 -1
  42. package/dist/clients/ClaudeSDKClient.js +8 -0
  43. package/dist/clients/ClaudeSDKClient.js.map +1 -1
  44. package/dist/clients/MyContextAIClient.d.ts +4 -0
  45. package/dist/clients/MyContextAIClient.d.ts.map +1 -1
  46. package/dist/clients/MyContextAIClient.js +69 -0
  47. package/dist/clients/MyContextAIClient.js.map +1 -1
  48. package/dist/clients/ProviderChain.d.ts +1 -0
  49. package/dist/clients/ProviderChain.d.ts.map +1 -1
  50. package/dist/clients/ProviderChain.js +3 -0
  51. package/dist/clients/ProviderChain.js.map +1 -1
  52. package/dist/clients/XAIClient.d.ts +4 -0
  53. package/dist/clients/XAIClient.d.ts.map +1 -1
  54. package/dist/clients/XAIClient.js +8 -0
  55. package/dist/clients/XAIClient.js.map +1 -1
  56. package/dist/commands/init.d.ts.map +1 -1
  57. package/dist/commands/init.js +110 -204
  58. package/dist/commands/init.js.map +1 -1
  59. package/dist/commands/plan-feature.d.ts +3 -0
  60. package/dist/commands/plan-feature.d.ts.map +1 -0
  61. package/dist/commands/plan-feature.js +57 -0
  62. package/dist/commands/plan-feature.js.map +1 -0
  63. package/dist/commands/sanitize.d.ts.map +1 -1
  64. package/dist/commands/sanitize.js +95 -7
  65. package/dist/commands/sanitize.js.map +1 -1
  66. package/dist/commands/vision-test.d.ts +67 -0
  67. package/dist/commands/vision-test.d.ts.map +1 -0
  68. package/dist/commands/vision-test.js +347 -0
  69. package/dist/commands/vision-test.js.map +1 -0
  70. package/dist/core/ai/AICore.d.ts +13 -0
  71. package/dist/core/ai/AICore.d.ts.map +1 -1
  72. package/dist/core/ai/AICore.js +65 -0
  73. package/dist/core/ai/AICore.js.map +1 -1
  74. package/dist/doctor/rules/node-rules.d.ts.map +1 -1
  75. package/dist/doctor/rules/node-rules.js +41 -0
  76. package/dist/doctor/rules/node-rules.js.map +1 -1
  77. package/dist/interfaces/AIClient.d.ts +1 -0
  78. package/dist/interfaces/AIClient.d.ts.map +1 -1
  79. package/dist/interfaces/AIClient.js.map +1 -1
  80. package/dist/mcp/vision-test-runner.d.ts +57 -0
  81. package/dist/mcp/vision-test-runner.d.ts.map +1 -0
  82. package/dist/mcp/vision-test-runner.js +337 -0
  83. package/dist/mcp/vision-test-runner.js.map +1 -0
  84. package/dist/mcp/vision-testing-server.d.ts +38 -0
  85. package/dist/mcp/vision-testing-server.d.ts.map +1 -0
  86. package/dist/mcp/vision-testing-server.js +637 -0
  87. package/dist/mcp/vision-testing-server.js.map +1 -0
  88. package/dist/package.json +1 -1
  89. package/dist/services/gemini-vision.d.ts +3 -11
  90. package/dist/services/gemini-vision.d.ts.map +1 -1
  91. package/dist/services/gemini-vision.js +13 -132
  92. package/dist/services/gemini-vision.js.map +1 -1
  93. package/dist/services/llmClarifier.d.ts +9 -0
  94. package/dist/services/llmClarifier.d.ts.map +1 -0
  95. package/dist/services/llmClarifier.js +22 -0
  96. package/dist/services/llmClarifier.js.map +1 -0
  97. package/dist/services/vision-element-finder.d.ts +64 -0
  98. package/dist/services/vision-element-finder.d.ts.map +1 -0
  99. package/dist/services/vision-element-finder.js +446 -0
  100. package/dist/services/vision-element-finder.js.map +1 -0
  101. package/dist/types/flow-testing.d.ts +1 -1
  102. package/dist/types/flow-testing.d.ts.map +1 -1
  103. package/dist/types/vision-testing.d.ts +382 -0
  104. package/dist/types/vision-testing.d.ts.map +1 -0
  105. package/dist/types/vision-testing.js +9 -0
  106. package/dist/types/vision-testing.js.map +1 -0
  107. package/dist/utils/claudeAgentClient.d.ts +4 -0
  108. package/dist/utils/claudeAgentClient.d.ts.map +1 -1
  109. package/dist/utils/claudeAgentClient.js +8 -0
  110. package/dist/utils/claudeAgentClient.js.map +1 -1
  111. package/dist/utils/geminiClient.d.ts +41 -6
  112. package/dist/utils/geminiClient.d.ts.map +1 -1
  113. package/dist/utils/geminiClient.js +124 -18
  114. package/dist/utils/geminiClient.js.map +1 -1
  115. package/dist/utils/githubModelsClient.d.ts +19 -6
  116. package/dist/utils/githubModelsClient.d.ts.map +1 -1
  117. package/dist/utils/githubModelsClient.js +94 -7
  118. package/dist/utils/githubModelsClient.js.map +1 -1
  119. package/dist/utils/openRouterClient.d.ts +12 -3
  120. package/dist/utils/openRouterClient.d.ts.map +1 -1
  121. package/dist/utils/openRouterClient.js +91 -2
  122. package/dist/utils/openRouterClient.js.map +1 -1
  123. package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -1
  124. package/dist/utils/unifiedDesignContextLoader.js +15 -0
  125. package/dist/utils/unifiedDesignContextLoader.js.map +1 -1
  126. package/package.json +1 -1
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ /**
3
+ * Vision Navigator Agent
4
+ *
5
+ * Autonomous agent that navigates UIs using vision-based understanding.
6
+ * Observes -> Thinks -> Acts loop powered by visual AI.
7
+ *
8
+ * Communicates via Living Brain (context.json) following the blackboard pattern.
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.VisionNavigatorAgent = void 0;
15
+ const vision_element_finder_1 = require("../../services/vision-element-finder");
16
+ const ContextService_1 = require("../../services/ContextService");
17
+ const AICore_1 = require("../../core/ai/AICore");
18
+ const uuid_1 = require("uuid");
19
+ const chalk_1 = __importDefault(require("chalk"));
20
+ class VisionNavigatorAgent {
21
+ constructor() {
22
+ this.name = "VisionNavigatorAgent";
23
+ this.description = "Autonomous navigator that understands UIs through vision and executes test missions";
24
+ this.personality = `You are a meticulous AI agent that navigates web applications by
25
+ visually understanding the UI, just like a human would. You see the page, understand the context,
26
+ and make intelligent decisions about what to click, fill, or interact with. You ALWAYS validate
27
+ your actions against the project's Prime Objective to prevent mission drift.`;
28
+ this.llmProvider = "gemini-vision"; // Uses Gemini for vision
29
+ this.expertise = [
30
+ "Vision-based UI understanding",
31
+ "Autonomous navigation",
32
+ "Intent validation",
33
+ "Adaptive element finding",
34
+ "Test execution",
35
+ ];
36
+ }
37
+ async run(input) {
38
+ const { page, mission, projectPath, maxSteps = 20 } = input;
39
+ // Initialize services
40
+ this.visionFinder = new vision_element_finder_1.VisionElementFinder(projectPath);
41
+ this.contextService = new ContextService_1.ContextService(projectPath);
42
+ await this.contextService.initialize();
43
+ // Get Prime Objective from manifest (for gravity checking)
44
+ const manifest = this.contextService.getManifest();
45
+ const primeObjective = manifest?.phases?.functional_summary?.core_purpose ||
46
+ "Complete the test mission";
47
+ console.log(chalk_1.default.blue(`\n🤖 ${this.name} starting navigation...`));
48
+ console.log(chalk_1.default.gray(`Mission: ${mission.mission}`));
49
+ console.log(chalk_1.default.gray(`Prime Objective: ${primeObjective}\n`));
50
+ // Write mission start to Living Brain
51
+ await this.writeLivingBrain({
52
+ timestamp: new Date().toISOString(),
53
+ agentName: this.name,
54
+ updateType: "test-start",
55
+ data: {
56
+ missionId: mission.id,
57
+ mission: mission.mission,
58
+ expectedOutcome: mission.expectedOutcome,
59
+ },
60
+ metadata: {
61
+ testId: mission.id,
62
+ },
63
+ });
64
+ const steps = [];
65
+ let completed = false;
66
+ let reason = "";
67
+ let stepOrder = 0;
68
+ try {
69
+ // Main navigation loop: Observe -> Think -> Act
70
+ while (!completed && stepOrder < maxSteps) {
71
+ console.log(chalk_1.default.cyan(`\n📸 Step ${stepOrder + 1}: Observing...`));
72
+ // 1. OBSERVE: Analyze current page state with vision
73
+ const pageAnalysis = await this.visionFinder.analyzePage(page);
74
+ console.log(chalk_1.default.gray(` UI State: ${pageAnalysis.aiInterpretation}`));
75
+ // 2. THINK: Decide next action based on mission and current state
76
+ const previousStepDescriptions = steps.map((s) => `${s.action} (${s.success ? "✓" : "✗"})`);
77
+ console.log(chalk_1.default.yellow(`\n🤔 Thinking: Deciding next action...`));
78
+ const decision = await this.visionFinder.decideNextAction(page, mission.mission, previousStepDescriptions, primeObjective);
79
+ console.log(chalk_1.default.gray(` Decision: ${decision.action}`));
80
+ console.log(chalk_1.default.gray(` Reasoning: ${decision.reasoning}`));
81
+ console.log(chalk_1.default.gray(` Confidence: ${decision.confidence}%`));
82
+ // Gravity Check: Validate alignment with Prime Objective
83
+ if (!decision.alignsWithPrimeObjective) {
84
+ console.log(chalk_1.default.red(`\n🛑 GRAVITY ALERT: Decision deviates from Prime Objective!`));
85
+ console.log(chalk_1.default.yellow(` Gravity Score: ${decision.gravityScore}%`));
86
+ // Record failed step
87
+ const failedStep = {
88
+ id: (0, uuid_1.v4)(),
89
+ order: stepOrder++,
90
+ action: `REJECTED: ${decision.action}`,
91
+ intent: decision.intent,
92
+ timestamp: new Date().toISOString(),
93
+ success: false,
94
+ error: `Gravity intervention: Action doesn't align with Prime Objective`,
95
+ visionDecision: decision,
96
+ };
97
+ steps.push(failedStep);
98
+ await this.writeLivingBrain({
99
+ timestamp: new Date().toISOString(),
100
+ agentName: this.name,
101
+ updateType: "test-step",
102
+ data: failedStep,
103
+ metadata: {
104
+ testId: mission.id,
105
+ stepId: failedStep.id,
106
+ },
107
+ });
108
+ // Ask AI to reconsider
109
+ console.log(chalk_1.default.yellow(` Re-thinking with gravity awareness...`));
110
+ // For now, we'll break the loop
111
+ // In production, you'd retry with corrected context
112
+ reason = "Gravity intervention - mission drift prevented";
113
+ break;
114
+ }
115
+ // Check if mission is complete
116
+ if (decision.action === "complete") {
117
+ completed = true;
118
+ reason = "Mission completed successfully";
119
+ console.log(chalk_1.default.green(`\n✅ Mission complete!`));
120
+ break;
121
+ }
122
+ // 3. ACT: Execute the decided action
123
+ console.log(chalk_1.default.magenta(`\n⚡ Acting: Executing ${decision.action}...`));
124
+ const step = await this.executeAction(page, decision, stepOrder++, mission);
125
+ steps.push(step);
126
+ // Write step to Living Brain
127
+ await this.writeLivingBrain({
128
+ timestamp: new Date().toISOString(),
129
+ agentName: this.name,
130
+ updateType: "test-step",
131
+ data: step,
132
+ metadata: {
133
+ testId: mission.id,
134
+ executionId: `${mission.id}-${Date.now()}`,
135
+ stepId: step.id,
136
+ },
137
+ });
138
+ if (!step.success) {
139
+ console.log(chalk_1.default.red(` ❌ Step failed: ${step.error}`));
140
+ reason = `Step failed: ${step.error}`;
141
+ break;
142
+ }
143
+ console.log(chalk_1.default.green(` ✓ Step successful`));
144
+ // Brief pause for page to settle
145
+ await page.waitForTimeout(1000);
146
+ }
147
+ // Check if we hit max steps
148
+ if (stepOrder >= maxSteps && !completed) {
149
+ reason = `Reached maximum steps (${maxSteps})`;
150
+ console.log(chalk_1.default.yellow(`\n⚠️ ${reason}`));
151
+ }
152
+ const finalUrl = page.url();
153
+ // Write completion to Living Brain
154
+ await this.writeLivingBrain({
155
+ timestamp: new Date().toISOString(),
156
+ agentName: this.name,
157
+ updateType: "test-complete",
158
+ data: {
159
+ completed,
160
+ totalSteps: steps.length,
161
+ successfulSteps: steps.filter((s) => s.success).length,
162
+ finalUrl,
163
+ reason,
164
+ },
165
+ metadata: {
166
+ testId: mission.id,
167
+ },
168
+ });
169
+ console.log(chalk_1.default.blue(`\n🏁 Navigation complete: ${steps.length} steps executed`));
170
+ return {
171
+ steps,
172
+ completed,
173
+ finalUrl,
174
+ reason,
175
+ };
176
+ }
177
+ catch (error) {
178
+ console.error(chalk_1.default.red(`\n❌ Navigation error: ${error.message}`));
179
+ // Write error to Living Brain
180
+ await this.writeLivingBrain({
181
+ timestamp: new Date().toISOString(),
182
+ agentName: this.name,
183
+ updateType: "error",
184
+ data: {
185
+ error: error.message,
186
+ stack: error.stack,
187
+ stepsCompleted: steps.length,
188
+ },
189
+ metadata: {
190
+ testId: mission.id,
191
+ },
192
+ });
193
+ throw error;
194
+ }
195
+ }
196
+ /**
197
+ * Execute an action decided by the AI
198
+ */
199
+ async executeAction(page, decision, order, mission) {
200
+ const step = {
201
+ id: (0, uuid_1.v4)(),
202
+ order,
203
+ action: `${decision.action}: ${decision.targetElement?.description || decision.value || decision.url || ""}`,
204
+ intent: decision.intent,
205
+ timestamp: new Date().toISOString(),
206
+ success: false,
207
+ visionDecision: decision,
208
+ };
209
+ try {
210
+ switch (decision.action) {
211
+ case "click":
212
+ if (!decision.targetElement) {
213
+ throw new Error("No target element specified for click action");
214
+ }
215
+ const clickSuccess = await this.visionFinder.clickElement(page, decision.targetElement);
216
+ if (!clickSuccess) {
217
+ throw new Error("Click action failed");
218
+ }
219
+ step.metadata = {
220
+ elementSelector: decision.targetElement.domSelector,
221
+ clickedElement: decision.targetElement.description,
222
+ };
223
+ step.success = true;
224
+ break;
225
+ case "fill":
226
+ if (!decision.targetElement || !decision.value) {
227
+ throw new Error("No target element or value specified for fill action");
228
+ }
229
+ const fillSuccess = await this.visionFinder.fillElement(page, decision.targetElement, decision.value);
230
+ if (!fillSuccess) {
231
+ throw new Error("Fill action failed");
232
+ }
233
+ step.metadata = {
234
+ elementSelector: decision.targetElement.domSelector,
235
+ inputValue: decision.value,
236
+ };
237
+ step.success = true;
238
+ break;
239
+ case "navigate":
240
+ if (!decision.url) {
241
+ throw new Error("No URL specified for navigate action");
242
+ }
243
+ await page.goto(decision.url);
244
+ step.metadata = {
245
+ navigationTarget: decision.url,
246
+ url: page.url(),
247
+ };
248
+ step.success = true;
249
+ break;
250
+ case "scroll":
251
+ await page.evaluate(() => {
252
+ window.scrollBy(0, window.innerHeight);
253
+ });
254
+ step.success = true;
255
+ break;
256
+ case "wait":
257
+ await page.waitForTimeout(2000);
258
+ step.success = true;
259
+ break;
260
+ case "upload":
261
+ // File upload would be handled here
262
+ // Similar to the existing implementation
263
+ step.error = "Upload action not yet implemented in VisionNavigatorAgent";
264
+ break;
265
+ default:
266
+ step.error = `Unknown action: ${decision.action}`;
267
+ }
268
+ }
269
+ catch (error) {
270
+ step.error = error.message;
271
+ step.success = false;
272
+ }
273
+ return step;
274
+ }
275
+ /**
276
+ * Write update to Living Brain (context.json)
277
+ */
278
+ async writeLivingBrain(update) {
279
+ try {
280
+ // Read current context using AICore
281
+ const aiCore = AICore_1.AICore.getInstance();
282
+ const currentContext = (await aiCore.getLivingContext()) || {};
283
+ // Add to test execution history
284
+ if (!currentContext.testExecutionHistory) {
285
+ currentContext.testExecutionHistory = [];
286
+ }
287
+ currentContext.testExecutionHistory.push(update);
288
+ // Keep only last 100 updates to prevent bloat
289
+ if (currentContext.testExecutionHistory.length > 100) {
290
+ currentContext.testExecutionHistory = currentContext.testExecutionHistory.slice(-100);
291
+ }
292
+ // Save back to context.json using AICore
293
+ await aiCore.saveLivingContext(currentContext);
294
+ }
295
+ catch (error) {
296
+ console.warn("Failed to write to Living Brain:", error);
297
+ // Don't throw - Living Brain writes are best-effort
298
+ }
299
+ }
300
+ async validate(input) {
301
+ return !!(input.page && input.mission && input.projectPath);
302
+ }
303
+ async getStatus() {
304
+ return {
305
+ name: this.name,
306
+ status: "idle",
307
+ errorCount: 0,
308
+ successCount: 0,
309
+ };
310
+ }
311
+ }
312
+ exports.VisionNavigatorAgent = VisionNavigatorAgent;
313
+ //# sourceMappingURL=VisionNavigatorAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisionNavigatorAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/VisionNavigatorAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Vision Test Coordinator
3
+ *
4
+ * Orchestrates all vision-based testing agents using the Living Brain (context.json) as
5
+ * the communication blackboard. Coordinates navigation, validation, demo recording, and
6
+ * script generation in a cohesive workflow.
7
+ *
8
+ * Uses the SubAgentOrchestrator pattern for robust agent management.
9
+ */
10
+ import { Page, BrowserContext } from "playwright";
11
+ import { SubAgent } from "../interfaces/SubAgent";
12
+ import { VisionTestMission, VisionTestExecutionResult } from "../../types/vision-testing";
13
+ export interface VisionTestCoordinatorInput {
14
+ page: Page;
15
+ browserContext: BrowserContext;
16
+ mission: VisionTestMission;
17
+ projectPath: string;
18
+ }
19
+ export interface VisionTestCoordinatorOutput {
20
+ result: VisionTestExecutionResult;
21
+ success: boolean;
22
+ }
23
+ export declare class VisionTestCoordinator implements SubAgent<VisionTestCoordinatorInput, VisionTestCoordinatorOutput> {
24
+ name: string;
25
+ description: string;
26
+ personality: string;
27
+ llmProvider: string;
28
+ expertise: string[];
29
+ private orchestrator;
30
+ private contextService?;
31
+ private navigatorAgent;
32
+ private validatorAgent;
33
+ private recorderAgent;
34
+ private voExtractorAgent;
35
+ constructor();
36
+ run(input: VisionTestCoordinatorInput): Promise<VisionTestCoordinatorOutput>;
37
+ /**
38
+ * Write update to Living Brain
39
+ */
40
+ private writeLivingBrain;
41
+ validate(input: VisionTestCoordinatorInput): Promise<boolean>;
42
+ getStatus(): Promise<{
43
+ name: string;
44
+ status: "idle" | "running" | "completed" | "error";
45
+ lastRun?: Date;
46
+ executionTime?: number;
47
+ errorCount: number;
48
+ successCount: number;
49
+ }>;
50
+ }
51
+ //# sourceMappingURL=VisionTestCoordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisionTestCoordinator.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/VisionTestCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EAK1B,MAAM,4BAA4B,CAAC;AAOpC,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,qBACX,YAAW,QAAQ,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAE5E,IAAI,SAA2B;IAC/B,WAAW,SAC+C;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAiB;IAGxC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,gBAAgB,CAAyB;;IAiC3C,GAAG,CACP,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC;IAyTvC;;OAEG;YACW,gBAAgB;IA0BxB,QAAQ,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7D,SAAS,IAAI,OAAO,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;QACnD,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CAQH"}