mycontext-cli 2.0.28 → 2.0.29

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 (59) hide show
  1. package/README.md +76 -13
  2. package/dist/cli.js +89 -99
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/generate-components.d.ts +10 -0
  5. package/dist/commands/generate-components.d.ts.map +1 -1
  6. package/dist/commands/generate-components.js +300 -3
  7. package/dist/commands/generate-components.js.map +1 -1
  8. package/dist/commands/generate-context-files.d.ts +9 -0
  9. package/dist/commands/generate-context-files.d.ts.map +1 -1
  10. package/dist/commands/generate-context-files.js +57 -0
  11. package/dist/commands/generate-context-files.js.map +1 -1
  12. package/dist/commands/generate.d.ts +5 -0
  13. package/dist/commands/generate.d.ts.map +1 -1
  14. package/dist/commands/generate.js +75 -1
  15. package/dist/commands/generate.js.map +1 -1
  16. package/dist/commands/init.d.ts +1 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +32 -10
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/preview-components.d.ts +12 -0
  21. package/dist/commands/preview-components.d.ts.map +1 -0
  22. package/dist/commands/preview-components.js +122 -0
  23. package/dist/commands/preview-components.js.map +1 -0
  24. package/dist/commands/refine-component.d.ts +43 -0
  25. package/dist/commands/refine-component.d.ts.map +1 -0
  26. package/dist/commands/refine-component.js +313 -0
  27. package/dist/commands/refine-component.js.map +1 -0
  28. package/dist/commands/review-context.d.ts +47 -0
  29. package/dist/commands/review-context.d.ts.map +1 -0
  30. package/dist/commands/review-context.js +335 -0
  31. package/dist/commands/review-context.js.map +1 -0
  32. package/dist/package.json +10 -1
  33. package/dist/services/ContextValidator.d.ts +99 -0
  34. package/dist/services/ContextValidator.d.ts.map +1 -0
  35. package/dist/services/ContextValidator.js +433 -0
  36. package/dist/services/ContextValidator.js.map +1 -0
  37. package/dist/services/MutationLogger.d.ts +54 -0
  38. package/dist/services/MutationLogger.d.ts.map +1 -0
  39. package/dist/services/MutationLogger.js +164 -0
  40. package/dist/services/MutationLogger.js.map +1 -0
  41. package/dist/services/RegressionRunner.d.ts +49 -0
  42. package/dist/services/RegressionRunner.d.ts.map +1 -0
  43. package/dist/services/RegressionRunner.js +285 -0
  44. package/dist/services/RegressionRunner.js.map +1 -0
  45. package/dist/services/TriggerLogger.d.ts +101 -0
  46. package/dist/services/TriggerLogger.d.ts.map +1 -0
  47. package/dist/services/TriggerLogger.js +263 -0
  48. package/dist/services/TriggerLogger.js.map +1 -0
  49. package/dist/utils/envExampleGenerator.d.ts.map +1 -1
  50. package/dist/utils/envExampleGenerator.js +9 -3
  51. package/dist/utils/envExampleGenerator.js.map +1 -1
  52. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  53. package/dist/utils/hybridAIClient.js +21 -0
  54. package/dist/utils/hybridAIClient.js.map +1 -1
  55. package/dist/utils/openRouterClient.d.ts +10 -0
  56. package/dist/utils/openRouterClient.d.ts.map +1 -0
  57. package/dist/utils/openRouterClient.js +61 -0
  58. package/dist/utils/openRouterClient.js.map +1 -0
  59. package/package.json +10 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationLogger.js","sourceRoot":"","sources":["../../src/services/MutationLogger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export interface RegressionTestResult {
2
+ typecheck: {
3
+ passed: boolean;
4
+ details: string[];
5
+ score: number;
6
+ };
7
+ lint: {
8
+ passed: boolean;
9
+ details: string[];
10
+ score: number;
11
+ };
12
+ unit: {
13
+ passed: number;
14
+ failed: number;
15
+ total: number;
16
+ details: string[];
17
+ score: number;
18
+ };
19
+ overall: {
20
+ score: number;
21
+ passed: boolean;
22
+ summary: string;
23
+ };
24
+ }
25
+ export interface BaselineComparison {
26
+ hasBaseline: boolean;
27
+ regressionDetected: boolean;
28
+ changes: {
29
+ typecheck: "improved" | "regressed" | "unchanged";
30
+ lint: "improved" | "regressed" | "unchanged";
31
+ unit: "improved" | "regressed" | "unchanged";
32
+ };
33
+ summary: string;
34
+ }
35
+ export declare class RegressionRunner {
36
+ private projectRoot;
37
+ private componentPath;
38
+ constructor(projectRoot: string, componentPath: string);
39
+ runRegressionSuite(): Promise<RegressionTestResult>;
40
+ private runTypecheck;
41
+ private runLint;
42
+ private runUnitTests;
43
+ private findTestFiles;
44
+ compareToBaseline(currentResult: RegressionTestResult, baselineResult: RegressionTestResult | null): Promise<BaselineComparison>;
45
+ private compareScore;
46
+ saveBaseline(result: RegressionTestResult, componentPath: string): Promise<void>;
47
+ loadBaseline(componentPath: string): Promise<RegressionTestResult | null>;
48
+ }
49
+ //# sourceMappingURL=RegressionRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegressionRunner.d.ts","sourceRoot":"","sources":["../../src/services/RegressionRunner.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE;QACJ,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE;QACP,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;QAClD,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;QAC7C,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;KAC9C,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAKhD,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC;YAgD3C,YAAY;YAiCZ,OAAO;YA+CP,YAAY;IA4F1B,OAAO,CAAC,aAAa;IA6Bf,iBAAiB,CACrB,aAAa,EAAE,oBAAoB,EACnC,cAAc,EAAE,oBAAoB,GAAG,IAAI,GAC1C,OAAO,CAAC,kBAAkB,CAAC;IAqD9B,OAAO,CAAC,YAAY;IAad,YAAY,CAChB,MAAM,EAAE,oBAAoB,EAC5B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAyBV,YAAY,CAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CA0BxC"}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RegressionRunner = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ class RegressionRunner {
12
+ constructor(projectRoot, componentPath) {
13
+ this.projectRoot = projectRoot;
14
+ this.componentPath = componentPath;
15
+ }
16
+ async runRegressionSuite() {
17
+ console.log(chalk_1.default.blue("🧪 Running regression test suite..."));
18
+ const typecheckResult = await this.runTypecheck();
19
+ const lintResult = await this.runLint();
20
+ const unitResult = await this.runUnitTests();
21
+ // Calculate weighted score
22
+ const weights = {
23
+ typecheck: 0.3,
24
+ lint: 0.2,
25
+ unit: 0.5,
26
+ };
27
+ const overallScore = typecheckResult.score * weights.typecheck +
28
+ lintResult.score * weights.lint +
29
+ unitResult.score * weights.unit;
30
+ const passed = typecheckResult.passed && lintResult.passed && unitResult.failed === 0;
31
+ let summary = "";
32
+ if (passed) {
33
+ summary = `All tests passed (Score: ${overallScore.toFixed(2)})`;
34
+ }
35
+ else {
36
+ const failures = [];
37
+ if (!typecheckResult.passed)
38
+ failures.push("TypeScript");
39
+ if (!lintResult.passed)
40
+ failures.push("ESLint");
41
+ if (unitResult.failed > 0)
42
+ failures.push(`${unitResult.failed} unit tests`);
43
+ summary = `Failed: ${failures.join(", ")} (Score: ${overallScore.toFixed(2)})`;
44
+ }
45
+ return {
46
+ typecheck: typecheckResult,
47
+ lint: lintResult,
48
+ unit: unitResult,
49
+ overall: {
50
+ score: overallScore,
51
+ passed,
52
+ summary,
53
+ },
54
+ };
55
+ }
56
+ async runTypecheck() {
57
+ try {
58
+ console.log(chalk_1.default.gray(" 🔍 Running TypeScript check..."));
59
+ const result = (0, child_process_1.execSync)(`npx tsc --noEmit --skipLibCheck`, {
60
+ cwd: this.projectRoot,
61
+ encoding: "utf8",
62
+ stdio: "pipe",
63
+ });
64
+ return {
65
+ passed: true,
66
+ details: ["TypeScript compilation successful"],
67
+ score: 1.0,
68
+ };
69
+ }
70
+ catch (error) {
71
+ const errorOutput = error.stdout || error.stderr || error.message;
72
+ const details = errorOutput
73
+ .split("\n")
74
+ .filter((line) => line.trim());
75
+ return {
76
+ passed: false,
77
+ details,
78
+ score: 0.0,
79
+ };
80
+ }
81
+ }
82
+ async runLint() {
83
+ try {
84
+ console.log(chalk_1.default.gray(" 🔍 Running ESLint..."));
85
+ const result = (0, child_process_1.execSync)(`npx eslint "${this.componentPath}" --format=compact`, {
86
+ cwd: this.projectRoot,
87
+ encoding: "utf8",
88
+ stdio: "pipe",
89
+ });
90
+ return {
91
+ passed: true,
92
+ details: ["ESLint check passed"],
93
+ score: 1.0,
94
+ };
95
+ }
96
+ catch (error) {
97
+ const errorOutput = error.stdout || error.stderr || error.message;
98
+ const details = errorOutput
99
+ .split("\n")
100
+ .filter((line) => line.trim());
101
+ // Calculate partial score based on error severity
102
+ const errorCount = details.filter((line) => line.includes("error")).length;
103
+ const warningCount = details.filter((line) => line.includes("warning")).length;
104
+ // Score decreases with errors, warnings have less impact
105
+ const score = Math.max(0, 1.0 - errorCount * 0.3 - warningCount * 0.1);
106
+ return {
107
+ passed: errorCount === 0,
108
+ details,
109
+ score,
110
+ };
111
+ }
112
+ }
113
+ async runUnitTests() {
114
+ try {
115
+ console.log(chalk_1.default.gray(" 🔍 Running unit tests..."));
116
+ // Try to find test files for this component
117
+ const testFiles = this.findTestFiles();
118
+ if (testFiles.length === 0) {
119
+ return {
120
+ passed: 0,
121
+ failed: 0,
122
+ total: 0,
123
+ details: ["No unit tests found for this component"],
124
+ score: 0.5, // Neutral score when no tests exist
125
+ };
126
+ }
127
+ const result = (0, child_process_1.execSync)(`npx jest ${testFiles.join(" ")} --json`, {
128
+ cwd: this.projectRoot,
129
+ encoding: "utf8",
130
+ stdio: "pipe",
131
+ });
132
+ // Parse test results from JSON output
133
+ const output = result.toString();
134
+ const jsonMatch = output.match(/\{[\s\S]*\}/);
135
+ if (jsonMatch) {
136
+ const testResult = JSON.parse(jsonMatch[0]);
137
+ const passed = testResult.numPassedTests || 0;
138
+ const failed = testResult.numFailedTests || 0;
139
+ const total = testResult.numTotalTests || 0;
140
+ const score = total > 0 ? passed / total : 0.5;
141
+ return {
142
+ passed,
143
+ failed,
144
+ total,
145
+ details: [`${passed}/${total} tests passed`],
146
+ score,
147
+ };
148
+ }
149
+ // Fallback to regex parsing if JSON parsing fails
150
+ const passedMatch = output.match(/(\d+) passed/);
151
+ const failedMatch = output.match(/(\d+) failed/);
152
+ const passed = passedMatch ? parseInt(passedMatch[1], 10) : 0;
153
+ const failed = failedMatch ? parseInt(failedMatch[1], 10) : 0;
154
+ const total = passed + failed;
155
+ const score = total > 0 ? passed / total : 0.5;
156
+ return {
157
+ passed,
158
+ failed,
159
+ total,
160
+ details: [`${passed}/${total} tests passed`],
161
+ score,
162
+ };
163
+ }
164
+ catch (error) {
165
+ const errorOutput = error.stdout || error.stderr || error.message;
166
+ const details = errorOutput
167
+ .split("\n")
168
+ .filter((line) => line.trim());
169
+ // Try to extract test results from error output
170
+ const passedMatch = errorOutput.match(/(\d+) passed/);
171
+ const failedMatch = errorOutput.match(/(\d+) failed/);
172
+ const passed = passedMatch ? parseInt(passedMatch[1], 10) : 0;
173
+ const failed = failedMatch ? parseInt(failedMatch[1], 10) : 0;
174
+ const total = passed + failed;
175
+ const score = total > 0 ? passed / total : 0.0;
176
+ return {
177
+ passed,
178
+ failed,
179
+ total,
180
+ details,
181
+ score,
182
+ };
183
+ }
184
+ }
185
+ findTestFiles() {
186
+ const testFiles = [];
187
+ const componentName = path_1.default.basename(this.componentPath, path_1.default.extname(this.componentPath));
188
+ // Common test file patterns
189
+ const patterns = [
190
+ `${componentName}.test.ts`,
191
+ `${componentName}.test.tsx`,
192
+ `${componentName}.spec.ts`,
193
+ `${componentName}.spec.tsx`,
194
+ `__tests__/${componentName}.test.ts`,
195
+ `__tests__/${componentName}.test.tsx`,
196
+ `tests/${componentName}.test.ts`,
197
+ `tests/${componentName}.test.tsx`,
198
+ ];
199
+ for (const pattern of patterns) {
200
+ const testPath = path_1.default.join(this.projectRoot, pattern);
201
+ if (fs_1.default.existsSync(testPath)) {
202
+ testFiles.push(pattern);
203
+ }
204
+ }
205
+ return testFiles;
206
+ }
207
+ async compareToBaseline(currentResult, baselineResult) {
208
+ if (!baselineResult) {
209
+ return {
210
+ hasBaseline: false,
211
+ regressionDetected: false,
212
+ changes: {
213
+ typecheck: "unchanged",
214
+ lint: "unchanged",
215
+ unit: "unchanged",
216
+ },
217
+ summary: "No baseline available for comparison",
218
+ };
219
+ }
220
+ const changes = {
221
+ typecheck: this.compareScore(currentResult.typecheck.score, baselineResult.typecheck.score),
222
+ lint: this.compareScore(currentResult.lint.score, baselineResult.lint.score),
223
+ unit: this.compareScore(currentResult.unit.score, baselineResult.unit.score),
224
+ };
225
+ const regressions = Object.values(changes).filter((change) => change === "regressed").length;
226
+ const improvements = Object.values(changes).filter((change) => change === "improved").length;
227
+ let summary = "";
228
+ if (regressions === 0 && improvements === 0) {
229
+ summary = "No changes detected";
230
+ }
231
+ else if (regressions > 0) {
232
+ summary = `${regressions} regression(s) detected`;
233
+ }
234
+ else {
235
+ summary = `${improvements} improvement(s) detected`;
236
+ }
237
+ return {
238
+ hasBaseline: true,
239
+ regressionDetected: regressions > 0,
240
+ changes,
241
+ summary,
242
+ };
243
+ }
244
+ compareScore(current, baseline) {
245
+ const threshold = 0.05; // 5% threshold for change detection
246
+ if (Math.abs(current - baseline) < threshold) {
247
+ return "unchanged";
248
+ }
249
+ return current > baseline ? "improved" : "regressed";
250
+ }
251
+ async saveBaseline(result, componentPath) {
252
+ const baselineDir = path_1.default.join(this.projectRoot, ".mycontext", "baselines");
253
+ if (!fs_1.default.existsSync(baselineDir)) {
254
+ fs_1.default.mkdirSync(baselineDir, { recursive: true });
255
+ }
256
+ const componentName = path_1.default.basename(componentPath, path_1.default.extname(componentPath));
257
+ const baselineFile = path_1.default.join(baselineDir, `${componentName}-baseline.json`);
258
+ const baseline = {
259
+ timestamp: new Date().toISOString(),
260
+ componentPath,
261
+ result,
262
+ };
263
+ fs_1.default.writeFileSync(baselineFile, JSON.stringify(baseline, null, 2));
264
+ console.log(chalk_1.default.green(`✅ Baseline saved for ${componentName}`));
265
+ }
266
+ async loadBaseline(componentPath) {
267
+ const baselineDir = path_1.default.join(this.projectRoot, ".mycontext", "baselines");
268
+ const componentName = path_1.default.basename(componentPath, path_1.default.extname(componentPath));
269
+ const baselineFile = path_1.default.join(baselineDir, `${componentName}-baseline.json`);
270
+ if (!fs_1.default.existsSync(baselineFile)) {
271
+ return null;
272
+ }
273
+ try {
274
+ const content = fs_1.default.readFileSync(baselineFile, "utf8");
275
+ const baseline = JSON.parse(content);
276
+ return baseline.result;
277
+ }
278
+ catch (error) {
279
+ console.warn(chalk_1.default.yellow(`⚠️ Failed to load baseline for ${componentName}`));
280
+ return null;
281
+ }
282
+ }
283
+ }
284
+ exports.RegressionRunner = RegressionRunner;
285
+ //# sourceMappingURL=RegressionRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegressionRunner.js","sourceRoot":"","sources":["../../src/services/RegressionRunner.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAyC;AACzC,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAsC1B,MAAa,gBAAgB;IAI3B,YAAY,WAAmB,EAAE,aAAqB;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;SACV,CAAC;QAEF,MAAM,YAAY,GAChB,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS;YACzC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI;YAC/B,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;QAElC,MAAM,MAAM,GACV,eAAe,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;QAEzE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,4BAA4B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;YACnD,OAAO,GAAG,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,OAAO,CACtE,CAAC,CACF,GAAG,CAAC;QACP,CAAC;QAED,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,KAAK,EAAE,YAAY;gBACnB,MAAM;gBACN,OAAO;aACR;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY;QAKxB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,iCAAiC,EAAE;gBACzD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,mCAAmC,CAAC;gBAC9C,KAAK,EAAE,GAAG;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAClE,MAAM,OAAO,GAAG,WAAW;iBACxB,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzC,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,KAAK,EAAE,GAAG;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QAKnB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,eAAe,IAAI,CAAC,aAAa,oBAAoB,EACrD;gBACE,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,MAAM;aACd,CACF,CAAC;YAEF,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,qBAAqB,CAAC;gBAChC,KAAK,EAAE,GAAG;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAClE,MAAM,OAAO,GAAG,WAAW;iBACxB,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzC,kDAAkD;YAClD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACvB,CAAC,MAAM,CAAC;YACT,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CACnD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzB,CAAC,MAAM,CAAC;YAET,yDAAyD;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;YAEvE,OAAO;gBACL,MAAM,EAAE,UAAU,KAAK,CAAC;gBACxB,OAAO;gBACP,KAAK;aACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QAOxB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAEtD,4CAA4C;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAEvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,CAAC,wCAAwC,CAAC;oBACnD,KAAK,EAAE,GAAG,EAAE,oCAAoC;iBACjD,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;gBAChE,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,sCAAsC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,IAAI,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,IAAI,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;gBAE/C,OAAO;oBACL,MAAM;oBACN,MAAM;oBACN,KAAK;oBACL,OAAO,EAAE,CAAC,GAAG,MAAM,IAAI,KAAK,eAAe,CAAC;oBAC5C,KAAK;iBACN,CAAC;YACJ,CAAC;YAED,kDAAkD;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;YAE9B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YAE/C,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,KAAK;gBACL,OAAO,EAAE,CAAC,GAAG,MAAM,IAAI,KAAK,eAAe,CAAC;gBAC5C,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAClE,MAAM,OAAO,GAAG,WAAW;iBACxB,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzC,gDAAgD;YAChD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAEtD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;YAE9B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YAE/C,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,KAAK;gBACL,OAAO;gBACP,KAAK;aACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,cAAI,CAAC,QAAQ,CACjC,IAAI,CAAC,aAAa,EAClB,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CACjC,CAAC;QAEF,4BAA4B;QAC5B,MAAM,QAAQ,GAAG;YACf,GAAG,aAAa,UAAU;YAC1B,GAAG,aAAa,WAAW;YAC3B,GAAG,aAAa,UAAU;YAC1B,GAAG,aAAa,WAAW;YAC3B,aAAa,aAAa,UAAU;YACpC,aAAa,aAAa,WAAW;YACrC,SAAS,aAAa,UAAU;YAChC,SAAS,aAAa,WAAW;SAClC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,aAAmC,EACnC,cAA2C;QAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;gBACL,WAAW,EAAE,KAAK;gBAClB,kBAAkB,EAAE,KAAK;gBACzB,OAAO,EAAE;oBACP,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,WAAW;iBAClB;gBACD,OAAO,EAAE,sCAAsC;aAChD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,IAAI,CAAC,YAAY,CAC1B,aAAa,CAAC,SAAS,CAAC,KAAK,EAC7B,cAAc,CAAC,SAAS,CAAC,KAAK,CAC/B;YACD,IAAI,EAAE,IAAI,CAAC,YAAY,CACrB,aAAa,CAAC,IAAI,CAAC,KAAK,EACxB,cAAc,CAAC,IAAI,CAAC,KAAK,CAC1B;YACD,IAAI,EAAE,IAAI,CAAC,YAAY,CACrB,aAAa,CAAC,IAAI,CAAC,KAAK,EACxB,cAAc,CAAC,IAAI,CAAC,KAAK,CAC1B;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAC/C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CACnC,CAAC,MAAM,CAAC;QACT,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,UAAU,CAClC,CAAC,MAAM,CAAC;QAET,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,WAAW,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,qBAAqB,CAAC;QAClC,CAAC;aAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,GAAG,WAAW,yBAAyB,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,YAAY,0BAA0B,CAAC;QACtD,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,WAAW,GAAG,CAAC;YACnC,OAAO;YACP,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,YAAY,CAClB,OAAe,EACf,QAAgB;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,oCAAoC;QAE5D,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,SAAS,EAAE,CAAC;YAC7C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAA4B,EAC5B,aAAqB;QAErB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,aAAa,GAAG,cAAI,CAAC,QAAQ,CACjC,aAAa,EACb,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAC5B,CAAC;QACF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,WAAW,EACX,GAAG,aAAa,gBAAgB,CACjC,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,aAAa;YACb,MAAM;SACP,CAAC;QAEF,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,aAAqB;QAErB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,cAAI,CAAC,QAAQ,CACjC,aAAa,EACb,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAC5B,CAAC;QACF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,WAAW,EACX,GAAG,aAAa,gBAAgB,CACjC,CAAC;QAEF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,QAAQ,CAAC,MAA8B,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CAAC,mCAAmC,aAAa,EAAE,CAAC,CACjE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA/XD,4CA+XC"}
@@ -0,0 +1,101 @@
1
+ export interface TriggerEvent {
2
+ id: string;
3
+ type: "context-change" | "schema-change" | "component-refinement" | "approval-change";
4
+ timestamp: string;
5
+ description: string;
6
+ affectedComponents: string[];
7
+ userAction: string;
8
+ metadata?: Record<string, any>;
9
+ }
10
+ export interface TriggerLog {
11
+ events: TriggerEvent[];
12
+ lastUpdated: string;
13
+ version: string;
14
+ }
15
+ export declare class TriggerLogger {
16
+ private logPath;
17
+ /**
18
+ * Log a trigger event
19
+ */
20
+ logTrigger(type: TriggerEvent["type"], description: string, affectedComponents: string[], userAction: string, metadata?: Record<string, any>): Promise<void>;
21
+ /**
22
+ * Log context file changes
23
+ */
24
+ logContextChange(changedFiles: string[], userAction?: string): Promise<void>;
25
+ /**
26
+ * Log schema changes
27
+ */
28
+ logSchemaChange(userAction?: string): Promise<void>;
29
+ /**
30
+ * Log component refinement
31
+ */
32
+ logComponentRefinement(componentName: string, refinementType: "in-place" | "context-update", userAction?: string): Promise<void>;
33
+ /**
34
+ * Log approval changes
35
+ */
36
+ logApprovalChange(featureId: string, oldApproval: boolean | null, newApproval: boolean | null, userAction?: string): Promise<void>;
37
+ /**
38
+ * Get recent trigger events
39
+ */
40
+ getRecentEvents(limit?: number): Promise<TriggerEvent[]>;
41
+ /**
42
+ * Get events by type
43
+ */
44
+ getEventsByType(type: TriggerEvent["type"]): Promise<TriggerEvent[]>;
45
+ /**
46
+ * Get events affecting a specific component
47
+ */
48
+ getEventsForComponent(componentName: string): Promise<TriggerEvent[]>;
49
+ /**
50
+ * Check if component needs regeneration based on triggers
51
+ */
52
+ needsRegeneration(componentName: string): Promise<boolean>;
53
+ /**
54
+ * Get regeneration recommendations
55
+ */
56
+ getRegenerationRecommendations(): Promise<{
57
+ shouldRegenerate: string[];
58
+ reason: string;
59
+ }>;
60
+ /**
61
+ * Clear old events (keep last 50)
62
+ */
63
+ cleanupOldEvents(): Promise<void>;
64
+ /**
65
+ * Load trigger log from file
66
+ */
67
+ private loadLog;
68
+ /**
69
+ * Save trigger log to file
70
+ */
71
+ private saveLog;
72
+ /**
73
+ * Generate unique event ID
74
+ */
75
+ private generateEventId;
76
+ /**
77
+ * Get affected components from context file changes
78
+ */
79
+ private getAffectedComponentsFromContext;
80
+ /**
81
+ * Get affected components from schema changes
82
+ */
83
+ private getAffectedComponentsFromSchema;
84
+ /**
85
+ * Get affected components from feature approval changes
86
+ */
87
+ private getAffectedComponentsFromFeature;
88
+ /**
89
+ * Get all component names from component list
90
+ */
91
+ private getAllComponentNames;
92
+ /**
93
+ * Display trigger log summary
94
+ */
95
+ displaySummary(): Promise<void>;
96
+ /**
97
+ * Get human-readable time ago
98
+ */
99
+ private getTimeAgo;
100
+ }
101
+ //# sourceMappingURL=TriggerLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TriggerLogger.d.ts","sourceRoot":"","sources":["../../src/services/TriggerLogger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EACA,gBAAgB,GAChB,eAAe,GACf,sBAAsB,GACtB,iBAAiB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAiC;IAEhD;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACG,gBAAgB,CACpB,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,UAAU,GAAE,MAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3E;;OAEG;IACG,sBAAsB,CAC1B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,GAAG,gBAAgB,EAC7C,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,UAAU,GAAE,MAAmC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUlE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1E;;OAEG;IACG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO3E;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAahE;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC;QAC9C,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAkBF;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvC;;OAEG;YACW,OAAO;IAkBrB;;OAEG;YACW,OAAO;IAMrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;YACW,gCAAgC;IAsB9C;;OAEG;YACW,+BAA+B;IAK7C;;OAEG;YACW,gCAAgC;IAS9C;;OAEG;YACW,oBAAoB;IA8BlC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCrC;;OAEG;IACH,OAAO,CAAC,UAAU;CAanB"}