mycontext-cli 1.0.81 → 1.0.82

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.
@@ -0,0 +1,613 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.BuildStrategyManager = void 0;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const contextLoader_1 = require("./contextLoader");
44
+ const hybridAIClient_1 = require("./hybridAIClient");
45
+ /**
46
+ * BuildStrategyManager - LLM-Powered Strategy Generation
47
+ *
48
+ * This manager uses AI to generate 100% accurate, project-specific build strategies
49
+ * by analyzing your project context and providing intelligent recommendations.
50
+ */
51
+ class BuildStrategyManager {
52
+ constructor() {
53
+ this.contextLoader = new contextLoader_1.ContextLoader(process.cwd());
54
+ this.aiClient = new hybridAIClient_1.HybridAIClient();
55
+ }
56
+ /**
57
+ * Load project context from .mycontext files
58
+ */
59
+ async loadProjectContext() {
60
+ try {
61
+ const context = await this.contextLoader.loadProjectContext({
62
+ verbose: false,
63
+ });
64
+ // Extract components from component list
65
+ const components = [];
66
+ if (context.componentList && Array.isArray(context.componentList)) {
67
+ context.componentList.forEach((comp) => {
68
+ if (typeof comp === "string") {
69
+ components.push(comp);
70
+ }
71
+ else if (comp.name) {
72
+ components.push(comp.name);
73
+ }
74
+ });
75
+ }
76
+ // Extract user roles from PRD and user flows
77
+ const userRoles = [];
78
+ const prdText = context.prd || "";
79
+ const userFlowsText = context.userFlows || "";
80
+ const rolePatterns = [
81
+ /(?:user|users?)\s+(?:role|type|persona)s?[:\s]+([^.\n]+)/gi,
82
+ /(?:admin|administrator)s?/gi,
83
+ /(?:customer|client)s?/gi,
84
+ /(?:guest|visitor)s?/gi,
85
+ /(?:moderator|manager)s?/gi,
86
+ ];
87
+ rolePatterns.forEach((pattern) => {
88
+ const matches = [
89
+ ...prdText.matchAll(pattern),
90
+ ...userFlowsText.matchAll(pattern),
91
+ ];
92
+ matches.forEach((match) => {
93
+ if (match[1]) {
94
+ const role = match[1].trim().toLowerCase();
95
+ if (!userRoles.includes(role)) {
96
+ userRoles.push(role);
97
+ }
98
+ }
99
+ else if (match[0]) {
100
+ const role = match[0].trim().toLowerCase();
101
+ if (!userRoles.includes(role)) {
102
+ userRoles.push(role);
103
+ }
104
+ }
105
+ });
106
+ });
107
+ // Default roles if none found
108
+ if (userRoles.length === 0) {
109
+ userRoles.push("user", "admin");
110
+ }
111
+ // Extract tech stack
112
+ const techStack = [];
113
+ const techPatterns = [
114
+ /next\.?js/gi,
115
+ /react/gi,
116
+ /typescript/gi,
117
+ /tailwind/gi,
118
+ /node\.?js/gi,
119
+ /prisma/gi,
120
+ /supabase/gi,
121
+ /firebase/gi,
122
+ /mongodb/gi,
123
+ /postgresql/gi,
124
+ /mysql/gi,
125
+ ];
126
+ const allText = `${context.prd} ${context.types} ${context.technicalSpecs}`;
127
+ techPatterns.forEach((pattern) => {
128
+ const matches = allText.match(pattern);
129
+ if (matches) {
130
+ matches.forEach((match) => {
131
+ const tech = match.toLowerCase();
132
+ if (!techStack.includes(tech)) {
133
+ techStack.push(tech);
134
+ }
135
+ });
136
+ }
137
+ });
138
+ // Default tech stack if none found
139
+ if (techStack.length === 0) {
140
+ techStack.push("next.js", "typescript", "tailwind css");
141
+ }
142
+ return {
143
+ projectName: path_1.default.basename(process.cwd()),
144
+ description: context.prd
145
+ ? context.prd.substring(0, 200) + "..."
146
+ : "MyContext Project",
147
+ components,
148
+ userRoles,
149
+ techStack,
150
+ prd: context.prd || "",
151
+ types: context.types || "",
152
+ brand: context.brand || "",
153
+ componentList: context.componentList || null,
154
+ features: context.features || "",
155
+ userFlows: context.userFlows || "",
156
+ edgeCases: context.edgeCases || "",
157
+ technicalSpecs: context.technicalSpecs || "",
158
+ };
159
+ }
160
+ catch (error) {
161
+ // Fallback to default context if loading fails
162
+ return {
163
+ projectName: path_1.default.basename(process.cwd()),
164
+ description: "MyContext Project",
165
+ components: ["Button", "Form", "Dashboard", "Navigation"],
166
+ userRoles: ["User", "Admin"],
167
+ techStack: ["Next.js", "TypeScript", "Tailwind CSS"],
168
+ prd: "",
169
+ types: "",
170
+ brand: "",
171
+ componentList: null,
172
+ features: "",
173
+ userFlows: "",
174
+ edgeCases: "",
175
+ technicalSpecs: "",
176
+ };
177
+ }
178
+ }
179
+ /**
180
+ * Save strategy data to JSON file
181
+ */
182
+ async saveStrategyData(type, data) {
183
+ const timestamp = new Date().toISOString().split("T")[0];
184
+ const filename = `build-strategy-${type}-${timestamp}.json`;
185
+ const filepath = path_1.default.join(process.cwd(), ".mycontext", filename);
186
+ await fs.ensureDir(path_1.default.dirname(filepath));
187
+ await fs.writeJson(filepath, {
188
+ type,
189
+ generatedAt: new Date().toISOString(),
190
+ projectPath: process.cwd(),
191
+ data,
192
+ }, { spaces: 2 });
193
+ return filepath;
194
+ }
195
+ /**
196
+ * Load strategy data from JSON file
197
+ */
198
+ async loadStrategyData(type, date) {
199
+ const filename = date
200
+ ? `build-strategy-${type}-${date}.json`
201
+ : await this.findLatestStrategyFile(type);
202
+ if (!filename) {
203
+ throw new Error(`No ${type} strategy data found`);
204
+ }
205
+ const filepath = path_1.default.join(process.cwd(), ".mycontext", filename);
206
+ const data = await fs.readJson(filepath);
207
+ return data.data;
208
+ }
209
+ /**
210
+ * Find the latest strategy file of a given type
211
+ */
212
+ async findLatestStrategyFile(type) {
213
+ const mycontextDir = path_1.default.join(process.cwd(), ".mycontext");
214
+ if (!(await fs.pathExists(mycontextDir))) {
215
+ return null;
216
+ }
217
+ const files = await fs.readdir(mycontextDir);
218
+ const strategyFiles = files
219
+ .filter((file) => file.startsWith(`build-strategy-${type}-`) && file.endsWith(".json"))
220
+ .sort()
221
+ .reverse();
222
+ return strategyFiles[0] || null;
223
+ }
224
+ /**
225
+ * List all available strategy files
226
+ */
227
+ async listStrategyFiles() {
228
+ const mycontextDir = path_1.default.join(process.cwd(), ".mycontext");
229
+ if (!(await fs.pathExists(mycontextDir))) {
230
+ return [];
231
+ }
232
+ const files = await fs.readdir(mycontextDir);
233
+ const strategyFiles = files
234
+ .filter((file) => file.startsWith("build-strategy-") && file.endsWith(".json"))
235
+ .map((file) => {
236
+ const match = file.match(/build-strategy-(\w+)-(\d{4}-\d{2}-\d{2})\.json/);
237
+ if (match) {
238
+ return {
239
+ type: match[1],
240
+ date: match[2],
241
+ filepath: path_1.default.join(mycontextDir, file),
242
+ };
243
+ }
244
+ return null;
245
+ })
246
+ .filter(Boolean)
247
+ .sort((a, b) => b.date.localeCompare(a.date));
248
+ return strategyFiles;
249
+ }
250
+ /**
251
+ * Get AI-powered strategy recommendations
252
+ */
253
+ async recommendStrategies(userPreferences) {
254
+ const context = await this.loadProjectContext();
255
+ const prompt = `You are an expert software development strategist. Based on this project context, recommend the best build strategies.
256
+
257
+ PROJECT CONTEXT:
258
+ - Name: ${context.projectName}
259
+ - Description: ${context.description}
260
+ - Components: ${context.components.length} found (${context.components.join(", ")})
261
+ - User Roles: ${context.userRoles.join(", ")}
262
+ - Tech Stack: ${context.techStack.join(", ")}
263
+
264
+ USER PREFERENCES:
265
+ ${userPreferences ? JSON.stringify(userPreferences, null, 2) : "Not specified"}
266
+
267
+ PROJECT DOCUMENTATION:
268
+ PRD: ${context.prd?.substring(0, 500) || "Not available"}
269
+ Features: ${context.features?.substring(0, 300) || "Not available"}
270
+ User Flows: ${context.userFlows?.substring(0, 300) || "Not available"}
271
+
272
+ Available strategies:
273
+ 1. Foundation First - Build core infrastructure first (auth, DB, architecture)
274
+ 2. Vertical Slice - Build complete user journeys end-to-end
275
+ 3. Horizontal Slice - Build feature by feature across the app
276
+ 4. Iterative Scaffolding - Small chunks everywhere, refine later
277
+ 5. Hybrid Approach - Combines multiple strategies based on project needs
278
+
279
+ Generate recommendations as JSON:
280
+ {
281
+ "recommended": [
282
+ {
283
+ "id": "strategy-id",
284
+ "name": "Strategy Name",
285
+ "description": "Brief description",
286
+ "icon": "🎯",
287
+ "complexity": "low/medium/high",
288
+ "timeToFirstDemo": "1-2 weeks",
289
+ "bestFor": ["array of use cases"],
290
+ "pros": ["array of advantages"],
291
+ "cons": ["array of disadvantages"]
292
+ }
293
+ ],
294
+ "reasoning": "Detailed explanation of recommendations",
295
+ "alternatives": [
296
+ {
297
+ "id": "alternative-id",
298
+ "name": "Alternative Name",
299
+ "description": "Brief description",
300
+ "icon": "🔄",
301
+ "whyNotPrimary": "Why this wasn't the top choice"
302
+ }
303
+ ]
304
+ }`;
305
+ try {
306
+ const response = await this.aiClient.generateText(prompt, {
307
+ temperature: 0.2,
308
+ maxTokens: 2500,
309
+ });
310
+ const result = JSON.parse(response.text || "{}");
311
+ // Save to JSON file
312
+ const filepath = await this.saveStrategyData("recommendations", result);
313
+ console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
314
+ return result;
315
+ }
316
+ catch (error) {
317
+ // Fallback to default recommendations
318
+ const fallback = {
319
+ recommended: [
320
+ {
321
+ id: "vertical-slice",
322
+ name: "Vertical Slice",
323
+ description: "Build complete user journeys end-to-end",
324
+ icon: "🎯",
325
+ complexity: "medium",
326
+ timeToFirstDemo: "2-3 weeks",
327
+ bestFor: ["user-focused apps", "quick demos"],
328
+ pros: ["Fast user value", "End-to-end testing"],
329
+ cons: ["May duplicate work"],
330
+ },
331
+ ],
332
+ reasoning: "Vertical slice approach recommended for balanced development",
333
+ alternatives: [],
334
+ };
335
+ // Save fallback data too
336
+ try {
337
+ const filepath = await this.saveStrategyData("recommendations", fallback);
338
+ console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
339
+ }
340
+ catch (saveError) {
341
+ // Silent fail for fallback save
342
+ }
343
+ return fallback;
344
+ }
345
+ }
346
+ /**
347
+ * Generate AI-powered build plan
348
+ */
349
+ async generateBuildPlan(strategyId) {
350
+ const context = await this.loadProjectContext();
351
+ const strategy = strategyId || "vertical-slice";
352
+ const prompt = `You are an expert project planner. Create a detailed build plan for this project using the ${strategy} strategy.
353
+
354
+ PROJECT CONTEXT:
355
+ - Name: ${context.projectName}
356
+ - Description: ${context.description}
357
+ - Components: ${context.components.join(", ")}
358
+ - User Roles: ${context.userRoles.join(", ")}
359
+ - Tech Stack: ${context.techStack.join(", ")}
360
+
361
+ STRATEGY: ${strategy}
362
+
363
+ Generate a detailed build plan as JSON:
364
+ {
365
+ "strategy": {
366
+ "id": "${strategy}",
367
+ "name": "Strategy Name",
368
+ "description": "Strategy description",
369
+ "icon": "🎯",
370
+ "complexity": "medium",
371
+ "timeToFirstDemo": "2-3 weeks",
372
+ "bestFor": ["use cases"],
373
+ "pros": ["advantages"],
374
+ "cons": ["disadvantages"]
375
+ },
376
+ "plan": [
377
+ {
378
+ "phase": 1,
379
+ "name": "Phase Name",
380
+ "duration": "1-2 weeks",
381
+ "estimatedEffort": "1-2 weeks",
382
+ "tasks": ["task1", "task2"],
383
+ "deliverables": ["deliverable1"],
384
+ "successCriteria": "Success criteria"
385
+ }
386
+ ],
387
+ "totalDuration": "4-6 weeks",
388
+ "milestones": ["Phase 1: Foundation", "Phase 2: Core Features", "Phase 3: Polish"]
389
+ }`;
390
+ try {
391
+ const response = await this.aiClient.generateText(prompt, {
392
+ temperature: 0.2,
393
+ maxTokens: 3000,
394
+ });
395
+ const result = JSON.parse(response.text || "{}");
396
+ // Save to JSON file
397
+ const filepath = await this.saveStrategyData("plan", result);
398
+ console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
399
+ return result;
400
+ }
401
+ catch (error) {
402
+ // Fallback plan
403
+ const fallback = {
404
+ strategy: {
405
+ id: strategy,
406
+ name: "Build Strategy",
407
+ description: "Detailed build plan",
408
+ icon: "🎯",
409
+ complexity: "medium",
410
+ timeToFirstDemo: "2-3 weeks",
411
+ bestFor: ["general projects"],
412
+ pros: ["Structured approach"],
413
+ cons: ["May need adjustment"],
414
+ },
415
+ plan: [
416
+ {
417
+ phase: 1,
418
+ name: "Foundation Setup",
419
+ duration: "1-2 weeks",
420
+ estimatedEffort: "1-2 weeks",
421
+ tasks: ["Project setup", "Authentication", "Core components"],
422
+ deliverables: ["Working foundation", "Basic auth", "Core UI"],
423
+ successCriteria: "Foundation is solid and ready for features",
424
+ },
425
+ ],
426
+ totalDuration: "4-6 weeks",
427
+ milestones: [
428
+ "Phase 1: Foundation",
429
+ "Phase 2: Features",
430
+ "Phase 3: Polish",
431
+ ],
432
+ };
433
+ // Save fallback data too
434
+ try {
435
+ const filepath = await this.saveStrategyData("plan", fallback);
436
+ console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
437
+ }
438
+ catch (saveError) {
439
+ // Silent fail for fallback save
440
+ }
441
+ return fallback;
442
+ }
443
+ }
444
+ /**
445
+ * Generate AI-powered task list
446
+ */
447
+ async generateTaskList(strategyId, phaseNumber) {
448
+ const context = await this.loadProjectContext();
449
+ const strategy = strategyId || "vertical-slice";
450
+ const phase = phaseNumber || 1;
451
+ const prompt = `You are an expert task planner. Generate detailed tasks for Phase ${phase} of the ${strategy} strategy.
452
+
453
+ PROJECT CONTEXT:
454
+ - Name: ${context.projectName}
455
+ - Description: ${context.description}
456
+ - Components: ${context.components.join(", ")}
457
+ - User Roles: ${context.userRoles.join(", ")}
458
+ - Tech Stack: ${context.techStack.join(", ")}
459
+
460
+ STRATEGY: ${strategy}
461
+ PHASE: ${phase}
462
+
463
+ Generate detailed tasks as JSON:
464
+ {
465
+ "phase": {
466
+ "phase": ${phase},
467
+ "name": "Phase Name",
468
+ "duration": "1-2 weeks",
469
+ "tasks": ["task1", "task2", "task3"],
470
+ "deliverables": ["deliverable1", "deliverable2"],
471
+ "successCriteria": "Clear success criteria"
472
+ },
473
+ "tasks": [
474
+ {
475
+ "id": "task-1",
476
+ "title": "Task Title",
477
+ "description": "Detailed task description",
478
+ "priority": "high/medium/low",
479
+ "estimatedTime": "1-2 days",
480
+ "dependencies": ["dependency1"],
481
+ "deliverables": ["deliverable1", "deliverable2"]
482
+ }
483
+ ]
484
+ }`;
485
+ try {
486
+ const response = await this.aiClient.generateText(prompt, {
487
+ temperature: 0.2,
488
+ maxTokens: 2000,
489
+ });
490
+ const result = JSON.parse(response.text || "{}");
491
+ // Save to JSON file
492
+ const filepath = await this.saveStrategyData("tasks", result);
493
+ console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
494
+ return result;
495
+ }
496
+ catch (error) {
497
+ // Fallback task list
498
+ const fallback = {
499
+ phase: {
500
+ phase,
501
+ name: "Phase Name",
502
+ duration: "1-2 weeks",
503
+ tasks: ["Task 1", "Task 2", "Task 3"],
504
+ deliverables: ["Deliverable 1", "Deliverable 2"],
505
+ successCriteria: "Phase completed successfully",
506
+ },
507
+ tasks: [
508
+ {
509
+ id: "task-1",
510
+ title: "Project Setup",
511
+ description: "Set up the core project structure with Next.js, TypeScript, and Tailwind CSS",
512
+ priority: "high",
513
+ estimatedTime: "1-2 days",
514
+ dependencies: [],
515
+ deliverables: [
516
+ "Working Next.js app",
517
+ "TypeScript config",
518
+ "Tailwind setup",
519
+ ],
520
+ },
521
+ ],
522
+ };
523
+ // Save fallback data too
524
+ try {
525
+ const filepath = await this.saveStrategyData("tasks", fallback);
526
+ console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
527
+ }
528
+ catch (saveError) {
529
+ // Silent fail for fallback save
530
+ }
531
+ return fallback;
532
+ }
533
+ }
534
+ /**
535
+ * Compare strategies using AI
536
+ */
537
+ async compareStrategies() {
538
+ const context = await this.loadProjectContext();
539
+ const prompt = `You are an expert development strategist. Compare all build strategies for this project.
540
+
541
+ PROJECT CONTEXT:
542
+ - Name: ${context.projectName}
543
+ - Description: ${context.description}
544
+ - Components: ${context.components.join(", ")}
545
+ - User Roles: ${context.userRoles.join(", ")}
546
+ - Tech Stack: ${context.techStack.join(", ")}
547
+
548
+ Compare these strategies: foundation-first, vertical-slice, horizontal-slice, iterative-scaffolding, hybrid
549
+
550
+ Generate comparison as JSON:
551
+ {
552
+ "strategies": [
553
+ {
554
+ "id": "foundation-first",
555
+ "name": "Foundation First",
556
+ "description": "Build core infrastructure first",
557
+ "icon": "🏗️",
558
+ "complexity": "medium",
559
+ "timeToFirstDemo": "3-4 weeks",
560
+ "bestFor": ["complex projects", "team development"],
561
+ "pros": ["solid foundation", "scalable"],
562
+ "cons": ["slow initial progress"],
563
+ "score": 8.5
564
+ }
565
+ ],
566
+ "recommendation": "vertical-slice",
567
+ "reasoning": "Best fit for this project based on analysis"
568
+ }`;
569
+ try {
570
+ const response = await this.aiClient.generateText(prompt, {
571
+ temperature: 0.2,
572
+ maxTokens: 2500,
573
+ });
574
+ const result = JSON.parse(response.text || "{}");
575
+ // Save to JSON file
576
+ const filepath = await this.saveStrategyData("comparison", result);
577
+ console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
578
+ return result;
579
+ }
580
+ catch (error) {
581
+ // Fallback comparison
582
+ const fallback = {
583
+ strategies: [
584
+ {
585
+ id: "vertical-slice",
586
+ name: "Vertical Slice",
587
+ description: "Build complete user journeys end-to-end",
588
+ icon: "🎯",
589
+ complexity: "medium",
590
+ timeToFirstDemo: "2-3 weeks",
591
+ bestFor: ["user-focused apps", "quick demos"],
592
+ pros: ["Fast user value", "End-to-end testing"],
593
+ cons: ["May duplicate work"],
594
+ score: 8.5,
595
+ },
596
+ ],
597
+ recommendation: "vertical-slice",
598
+ reasoning: "Vertical slice approach recommended for balanced development",
599
+ };
600
+ // Save fallback data too
601
+ try {
602
+ const filepath = await this.saveStrategyData("comparison", fallback);
603
+ console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
604
+ }
605
+ catch (saveError) {
606
+ // Silent fail for fallback save
607
+ }
608
+ return fallback;
609
+ }
610
+ }
611
+ }
612
+ exports.BuildStrategyManager = BuildStrategyManager;
613
+ //# sourceMappingURL=buildStrategyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildStrategyManager.js","sourceRoot":"","sources":["../../src/utils/buildStrategyManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,gDAAwB;AACxB,kDAA0B;AAC1B,mDAAgD;AAChD,qDAAkD;AAkClD;;;;;GAKG;AACH,MAAa,oBAAoB;IAI/B;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,6BAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QAetB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;gBAC1D,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,yCAAyC;YACzC,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;yBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACrB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,6CAA6C;YAC7C,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;YAE9C,MAAM,YAAY,GAAG;gBACnB,4DAA4D;gBAC5D,6BAA6B;gBAC7B,yBAAyB;gBACzB,uBAAuB;gBACvB,2BAA2B;aAC5B,CAAC;YAEF,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG;oBACd,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC5B,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACnC,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACb,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;wBAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;yBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;wBAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,8BAA8B;YAC9B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;YAED,qBAAqB;YACrB,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG;gBACnB,aAAa;gBACb,SAAS;gBACT,cAAc;gBACd,YAAY;gBACZ,aAAa;gBACb,UAAU;gBACV,YAAY;gBACZ,YAAY;gBACZ,WAAW;gBACX,cAAc;gBACd,SAAS;aACV,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5E,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;wBACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,mCAAmC;YACnC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO;gBACL,WAAW,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACzC,WAAW,EAAE,OAAO,CAAC,GAAG;oBACtB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;oBACvC,CAAC,CAAC,mBAAmB;gBACvB,UAAU;gBACV,SAAS;gBACT,SAAS;gBACT,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;gBAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;gBAChC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;gBAClC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;aAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+CAA+C;YAC/C,OAAO;gBACL,WAAW,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACzC,WAAW,EAAE,mBAAmB;gBAChC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;gBACzD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC5B,SAAS,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC;gBACpD,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,cAAc,EAAE,EAAE;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,IAAS;QACpD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,kBAAkB,IAAI,IAAI,SAAS,OAAO,CAAC;QAC5D,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAElE,MAAM,EAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,EAAE,CAAC,SAAS,CAChB,QAAQ,EACR;YACE,IAAI;YACJ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,IAAI;SACL,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,IAAa;QAChD,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,kBAAkB,IAAI,IAAI,IAAI,OAAO;YACvC,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,sBAAsB,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,IAAY;QAC/C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAE5D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,KAAK;aACxB,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACvE;aACA,IAAI,EAAE;aACN,OAAO,EAAE,CAAC;QAEb,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QAGrB,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAE5D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,KAAK;aACxB,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACvE;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,gDAAgD,CACjD,CAAC;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;iBACxC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,OAAO,aAIL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,eAAqB;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG;;;UAGT,OAAO,CAAC,WAAW;iBACZ,OAAO,CAAC,WAAW;gBACpB,OAAO,CAAC,UAAU,CAAC,MAAM,WAAW,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG1C,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;;;OAGvE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe;YAC5C,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe;cACpD,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCnE,CAAC;QAEC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;gBACxD,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEjD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,MAAM,QAAQ,GAAG;gBACf,WAAW,EAAE;oBACX;wBACE,EAAE,EAAE,gBAAgB;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,WAAW,EAAE,yCAAyC;wBACtD,IAAI,EAAE,IAAI;wBACV,UAAU,EAAE,QAAQ;wBACpB,eAAe,EAAE,WAAW;wBAC5B,OAAO,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;wBAC7C,IAAI,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;wBAC/C,IAAI,EAAE,CAAC,oBAAoB,CAAC;qBAC7B;iBACF;gBACD,SAAS,EACP,8DAA8D;gBAChE,YAAY,EAAE,EAAE;aACjB,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,iBAAiB,EACjB,QAAQ,CACT,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,gCAAgC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAmB;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,IAAI,gBAAgB,CAAC;QAEhD,MAAM,MAAM,GAAG,8FAA8F,QAAQ;;;UAG/G,OAAO,CAAC,WAAW;iBACZ,OAAO,CAAC,WAAW;gBACpB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;YAEhC,QAAQ;;;;;aAKP,QAAQ;;;;;;;;;;;;;;;;;;;;;;;EAuBnB,CAAC;QAEC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;gBACxD,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEjD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB;YAChB,MAAM,QAAQ,GAAG;gBACf,QAAQ,EAAE;oBACR,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE,IAAI;oBACV,UAAU,EAAE,QAAQ;oBACpB,eAAe,EAAE,WAAW;oBAC5B,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,IAAI,EAAE,CAAC,qBAAqB,CAAC;oBAC7B,IAAI,EAAE,CAAC,qBAAqB,CAAC;iBAC9B;gBACD,IAAI,EAAE;oBACJ;wBACE,KAAK,EAAE,CAAC;wBACR,IAAI,EAAE,kBAAkB;wBACxB,QAAQ,EAAE,WAAW;wBACrB,eAAe,EAAE,WAAW;wBAC5B,KAAK,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;wBAC7D,YAAY,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,SAAS,CAAC;wBAC7D,eAAe,EAAE,4CAA4C;qBAC9D;iBACF;gBACD,aAAa,EAAE,WAAW;gBAC1B,UAAU,EAAE;oBACV,qBAAqB;oBACrB,mBAAmB;oBACnB,iBAAiB;iBAClB;aACF,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,gCAAgC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAAmB,EACnB,WAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,IAAI,gBAAgB,CAAC;QAChD,MAAM,KAAK,GAAG,WAAW,IAAI,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,qEAAqE,KAAK,WAAW,QAAQ;;;UAGtG,OAAO,CAAC,WAAW;iBACZ,OAAO,CAAC,WAAW;gBACpB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;YAEhC,QAAQ;SACX,KAAK;;;;;eAKC,KAAK;;;;;;;;;;;;;;;;;;EAkBlB,CAAC;QAEC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;gBACxD,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEjD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;YACrB,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE;oBACL,KAAK;oBACL,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBACrC,YAAY,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;oBAChD,eAAe,EAAE,8BAA8B;iBAChD;gBACD,KAAK,EAAE;oBACL;wBACE,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,eAAe;wBACtB,WAAW,EACT,8EAA8E;wBAChF,QAAQ,EAAE,MAAM;wBAChB,aAAa,EAAE,UAAU;wBACzB,YAAY,EAAE,EAAE;wBAChB,YAAY,EAAE;4BACZ,qBAAqB;4BACrB,mBAAmB;4BACnB,gBAAgB;yBACjB;qBACF;iBACF;aACF,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,gCAAgC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG;;;UAGT,OAAO,CAAC,WAAW;iBACZ,OAAO,CAAC,WAAW;gBACpB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;EAsB1C,CAAC;QAEC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;gBACxD,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEjD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB;YACtB,MAAM,QAAQ,GAAG;gBACf,UAAU,EAAE;oBACV;wBACE,EAAE,EAAE,gBAAgB;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,WAAW,EAAE,yCAAyC;wBACtD,IAAI,EAAE,IAAI;wBACV,UAAU,EAAE,QAAQ;wBACpB,eAAe,EAAE,WAAW;wBAC5B,OAAO,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;wBAC7C,IAAI,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;wBAC/C,IAAI,EAAE,CAAC,oBAAoB,CAAC;wBAC5B,KAAK,EAAE,GAAG;qBACX;iBACF;gBACD,cAAc,EAAE,gBAAgB;gBAChC,SAAS,EACP,8DAA8D;aACjE,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,gCAAgC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AAxoBD,oDAwoBC"}
@@ -6,6 +6,9 @@ export interface ProjectContext {
6
6
  userStories?: string;
7
7
  technicalSpecs?: string;
8
8
  projectStructure?: string;
9
+ features?: string;
10
+ userFlows?: string;
11
+ edgeCases?: string;
9
12
  }
10
13
  export interface ContextLoadOptions {
11
14
  verbose?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"contextLoader.d.ts","sourceRoot":"","sources":["../../src/utils/contextLoader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAI/C;;OAEG;IACG,kBAAkB,CACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC;IA2C1B;;OAEG;YACW,iBAAiB;IAoI/B;;OAEG;IACG,yBAAyB,CAC7B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;CAanD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
1
+ {"version":3,"file":"contextLoader.d.ts","sourceRoot":"","sources":["../../src/utils/contextLoader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAI/C;;OAEG;IACG,kBAAkB,CACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC;IA2C1B;;OAEG;YACW,iBAAiB;IAwL/B;;OAEG;IACG,yBAAyB,CAC7B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;CAanD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}