@vfarcic/dot-ai 0.115.0 → 0.117.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 (143) hide show
  1. package/README.md +21 -18
  2. package/dist/core/ai-provider-factory.d.ts +4 -2
  3. package/dist/core/ai-provider-factory.d.ts.map +1 -1
  4. package/dist/core/ai-provider-factory.js +17 -6
  5. package/dist/core/capability-operations.js +1 -1
  6. package/dist/core/generic-session-manager.d.ts +67 -0
  7. package/dist/core/generic-session-manager.d.ts.map +1 -0
  8. package/dist/core/generic-session-manager.js +192 -0
  9. package/dist/core/pattern-operations.js +1 -1
  10. package/dist/core/providers/noop-provider.d.ts +47 -0
  11. package/dist/core/providers/noop-provider.d.ts.map +1 -0
  12. package/dist/core/providers/noop-provider.js +63 -0
  13. package/dist/core/schema.d.ts.map +1 -1
  14. package/dist/core/schema.js +13 -13
  15. package/dist/core/session-utils.d.ts +3 -6
  16. package/dist/core/session-utils.d.ts.map +1 -1
  17. package/dist/core/session-utils.js +5 -13
  18. package/dist/core/shared-prompt-loader.d.ts +15 -3
  19. package/dist/core/shared-prompt-loader.d.ts.map +1 -1
  20. package/dist/core/shared-prompt-loader.js +67 -14
  21. package/dist/core/unified-creation-session.d.ts +3 -10
  22. package/dist/core/unified-creation-session.d.ts.map +1 -1
  23. package/dist/core/unified-creation-session.js +34 -75
  24. package/dist/core/unified-creation-types.d.ts +31 -22
  25. package/dist/core/unified-creation-types.d.ts.map +1 -1
  26. package/dist/evaluation/eval-runner.js +12 -3
  27. package/dist/evaluation/evaluators/base-comparative.d.ts +2 -0
  28. package/dist/evaluation/evaluators/base-comparative.d.ts.map +1 -1
  29. package/dist/evaluation/evaluators/base-comparative.js +13 -1
  30. package/dist/evaluation/graph-generator.d.ts +56 -0
  31. package/dist/evaluation/graph-generator.d.ts.map +1 -0
  32. package/dist/evaluation/graph-generator.js +694 -0
  33. package/dist/evaluation/metadata-loader.d.ts +39 -0
  34. package/dist/evaluation/metadata-loader.d.ts.map +1 -0
  35. package/dist/evaluation/metadata-loader.js +74 -0
  36. package/dist/evaluation/platform-synthesizer.d.ts +5 -1
  37. package/dist/evaluation/platform-synthesizer.d.ts.map +1 -1
  38. package/dist/evaluation/platform-synthesizer.js +65 -23
  39. package/dist/evaluation/run-platform-synthesis.js +22 -5
  40. package/dist/interfaces/mcp.d.ts.map +1 -1
  41. package/dist/interfaces/mcp.js +9 -34
  42. package/dist/tools/answer-question.d.ts.map +1 -1
  43. package/dist/tools/answer-question.js +12 -12
  44. package/dist/tools/choose-solution.js +1 -1
  45. package/dist/tools/generate-manifests.d.ts.map +1 -1
  46. package/dist/tools/generate-manifests.js +9 -10
  47. package/dist/tools/index.d.ts +1 -1
  48. package/dist/tools/index.d.ts.map +1 -1
  49. package/dist/tools/index.js +6 -6
  50. package/dist/tools/organizational-data.js +12 -12
  51. package/dist/tools/project-setup/discovery.d.ts +15 -0
  52. package/dist/tools/project-setup/discovery.d.ts.map +1 -0
  53. package/dist/tools/project-setup/discovery.js +104 -0
  54. package/dist/tools/project-setup/generate-scope.d.ts +15 -0
  55. package/dist/tools/project-setup/generate-scope.d.ts.map +1 -0
  56. package/dist/tools/project-setup/generate-scope.js +237 -0
  57. package/dist/tools/project-setup/report-scan.d.ts +15 -0
  58. package/dist/tools/project-setup/report-scan.d.ts.map +1 -0
  59. package/dist/tools/project-setup/report-scan.js +156 -0
  60. package/dist/tools/project-setup/types.d.ts +111 -0
  61. package/dist/tools/project-setup/types.d.ts.map +1 -0
  62. package/dist/tools/project-setup/types.js +8 -0
  63. package/dist/tools/project-setup.d.ts +28 -0
  64. package/dist/tools/project-setup.d.ts.map +1 -0
  65. package/dist/tools/project-setup.js +134 -0
  66. package/dist/tools/recommend.js +1 -1
  67. package/dist/tools/remediate.js +1 -1
  68. package/dist/tools/version.d.ts +0 -7
  69. package/dist/tools/version.d.ts.map +1 -1
  70. package/dist/tools/version.js +5 -34
  71. package/package.json +4 -2
  72. package/prompts/capability-inference.md +2 -2
  73. package/prompts/infrastructure-trigger-expansion.md +2 -2
  74. package/prompts/intent-analysis.md +2 -2
  75. package/prompts/kyverno-generation.md +14 -14
  76. package/prompts/manifest-generation.md +5 -5
  77. package/prompts/map-intent-to-operation.md +2 -2
  78. package/prompts/pattern-complete-error.md +1 -1
  79. package/prompts/pattern-complete-success.md +4 -4
  80. package/prompts/pattern-rationale.md +1 -1
  81. package/prompts/pattern-resources.md +1 -1
  82. package/prompts/pattern-review.md +5 -5
  83. package/prompts/policy-complete-apply.md +4 -4
  84. package/prompts/policy-complete-discard.md +1 -1
  85. package/prompts/policy-complete-error.md +1 -1
  86. package/prompts/policy-complete-save.md +4 -4
  87. package/prompts/policy-complete-success.md +4 -4
  88. package/prompts/policy-namespace-scope.md +1 -1
  89. package/prompts/question-generation.md +5 -5
  90. package/prompts/resource-analysis.md +3 -3
  91. package/prompts/resource-selection.md +3 -3
  92. package/prompts/solution-enhancement.md +4 -4
  93. package/scripts/anthropic.nu +9 -13
  94. package/scripts/common.nu +31 -33
  95. package/scripts/ingress.nu +5 -4
  96. package/scripts/kubernetes.nu +38 -53
  97. package/dist/core/doc-discovery.d.ts +0 -38
  98. package/dist/core/doc-discovery.d.ts.map +0 -1
  99. package/dist/core/doc-discovery.js +0 -231
  100. package/dist/core/doc-testing-session.d.ts +0 -109
  101. package/dist/core/doc-testing-session.d.ts.map +0 -1
  102. package/dist/core/doc-testing-session.js +0 -696
  103. package/dist/core/doc-testing-types.d.ts +0 -127
  104. package/dist/core/doc-testing-types.d.ts.map +0 -1
  105. package/dist/core/doc-testing-types.js +0 -53
  106. package/dist/core/nushell-runtime.d.ts +0 -39
  107. package/dist/core/nushell-runtime.d.ts.map +0 -1
  108. package/dist/core/nushell-runtime.js +0 -103
  109. package/dist/core/platform-operations.d.ts +0 -70
  110. package/dist/core/platform-operations.d.ts.map +0 -1
  111. package/dist/core/platform-operations.js +0 -294
  112. package/dist/tools/build-platform.d.ts +0 -25
  113. package/dist/tools/build-platform.d.ts.map +0 -1
  114. package/dist/tools/build-platform.js +0 -277
  115. package/dist/tools/test-docs.d.ts +0 -22
  116. package/dist/tools/test-docs.d.ts.map +0 -1
  117. package/dist/tools/test-docs.js +0 -351
  118. package/prompts/doc-testing-done.md +0 -51
  119. package/prompts/doc-testing-fix.md +0 -120
  120. package/prompts/doc-testing-scan.md +0 -140
  121. package/prompts/doc-testing-test-section.md +0 -169
  122. package/prompts/platform-operations-parse-script-help.md +0 -68
  123. package/scripts/ack.nu +0 -195
  124. package/scripts/argo-workflows.nu +0 -47
  125. package/scripts/argocd.nu +0 -85
  126. package/scripts/aso.nu +0 -74
  127. package/scripts/backstage.nu +0 -349
  128. package/scripts/cert-manager.nu +0 -13
  129. package/scripts/cnpg.nu +0 -14
  130. package/scripts/dot.nu +0 -32
  131. package/scripts/external-secrets.nu +0 -110
  132. package/scripts/gatekeeper.nu +0 -19
  133. package/scripts/github.nu +0 -42
  134. package/scripts/image.nu +0 -67
  135. package/scripts/kro.nu +0 -11
  136. package/scripts/kubevela.nu +0 -22
  137. package/scripts/port.nu +0 -71
  138. package/scripts/prometheus.nu +0 -21
  139. package/scripts/registry.nu +0 -55
  140. package/scripts/storage.nu +0 -210
  141. package/scripts/tests.nu +0 -12
  142. package/scripts/velero.nu +0 -45
  143. package/shared-prompts/validate-docs.md +0 -22
@@ -1,231 +0,0 @@
1
- "use strict";
2
- /**
3
- * Documentation File Discovery
4
- *
5
- * Discovers documentation files in a project with configurable patterns
6
- * and intelligent priority ordering.
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
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.DocDiscovery = void 0;
43
- const path = __importStar(require("path"));
44
- const glob_1 = require("glob");
45
- class DocDiscovery {
46
- ignoredDirs = [
47
- 'node_modules',
48
- '.git',
49
- 'dist',
50
- 'build',
51
- '.next',
52
- 'target',
53
- 'bin',
54
- 'obj',
55
- '.vscode',
56
- '.idea',
57
- 'coverage',
58
- '.nyc_output'
59
- ];
60
- /**
61
- * Get file pattern from CLI args or environment variable
62
- */
63
- getFilePattern(args) {
64
- // Priority: CLI argument > environment variable > default
65
- if (args.filePattern) {
66
- return args.filePattern;
67
- }
68
- if (process.env.DOT_AI_DOC_PATTERN) {
69
- return process.env.DOT_AI_DOC_PATTERN;
70
- }
71
- return '**/*.md';
72
- }
73
- /**
74
- * Discover documentation files in the project
75
- */
76
- async discoverFiles(baseDir = process.cwd(), pattern) {
77
- const filePattern = pattern || '**/*.md';
78
- try {
79
- // Use glob to find files matching the pattern
80
- const files = await (0, glob_1.glob)(filePattern, {
81
- cwd: baseDir,
82
- ignore: this.ignoredDirs.map(dir => `${dir}/**`),
83
- nodir: true,
84
- dot: false
85
- });
86
- // Convert to DiscoveredFile objects
87
- const discoveredFiles = files.map((file) => {
88
- const fullPath = path.join(baseDir, file);
89
- const relativePath = file;
90
- const name = path.basename(file);
91
- return {
92
- path: fullPath,
93
- name,
94
- priority: this.calculatePriority(relativePath, name),
95
- category: this.categorizeFile(relativePath, name),
96
- relativePath
97
- };
98
- });
99
- // Sort by priority (lower number = higher priority)
100
- return discoveredFiles.sort((a, b) => a.priority - b.priority);
101
- }
102
- catch (error) {
103
- console.error('Error discovering documentation files:', error);
104
- return [];
105
- }
106
- }
107
- /**
108
- * Calculate priority for file ordering
109
- * Lower numbers = higher priority
110
- */
111
- calculatePriority(relativePath, fileName) {
112
- const lowerPath = relativePath.toLowerCase();
113
- const lowerName = fileName.toLowerCase();
114
- // README files get highest priority
115
- if (lowerName.startsWith('readme')) {
116
- if (lowerName === 'readme.md')
117
- return 1;
118
- return 2;
119
- }
120
- // Common documentation files
121
- const commonDocs = [
122
- 'contributing.md',
123
- 'changelog.md',
124
- 'changes.md',
125
- 'getting-started.md',
126
- 'getting_started.md',
127
- 'quickstart.md',
128
- 'installation.md',
129
- 'setup.md',
130
- 'usage.md',
131
- 'api.md',
132
- 'license.md'
133
- ];
134
- if (commonDocs.includes(lowerName)) {
135
- return 10 + commonDocs.indexOf(lowerName);
136
- }
137
- // Files in docs directory
138
- if (lowerPath.includes('docs/') || lowerPath.includes('doc/') || lowerPath.includes('documentation/')) {
139
- return 100;
140
- }
141
- // Root level files
142
- if (!lowerPath.includes('/')) {
143
- return 200;
144
- }
145
- // Everything else
146
- return 1000;
147
- }
148
- /**
149
- * Categorize file by type
150
- */
151
- categorizeFile(relativePath, fileName) {
152
- const lowerPath = relativePath.toLowerCase();
153
- const lowerName = fileName.toLowerCase();
154
- if (lowerName.startsWith('readme')) {
155
- return 'readme';
156
- }
157
- const commonDocs = [
158
- 'contributing.md',
159
- 'changelog.md',
160
- 'changes.md',
161
- 'getting-started.md',
162
- 'getting_started.md',
163
- 'quickstart.md',
164
- 'installation.md',
165
- 'setup.md',
166
- 'usage.md',
167
- 'api.md',
168
- 'license.md'
169
- ];
170
- if (commonDocs.includes(lowerName)) {
171
- return 'common';
172
- }
173
- if (lowerPath.includes('docs/') || lowerPath.includes('doc/') || lowerPath.includes('documentation/')) {
174
- return 'docs';
175
- }
176
- return 'other';
177
- }
178
- /**
179
- * Format discovered files for display
180
- */
181
- formatForDisplay(files) {
182
- if (files.length === 0) {
183
- return 'No documentation files found matching the pattern.';
184
- }
185
- const defaultFile = files[0]; // Highest priority file
186
- let output = `Found ${files.length} documentation file${files.length === 1 ? '' : 's'}:\n\n`;
187
- // Group by category
188
- const categories = {
189
- readme: files.filter(f => f.category === 'readme'),
190
- common: files.filter(f => f.category === 'common'),
191
- docs: files.filter(f => f.category === 'docs'),
192
- other: files.filter(f => f.category === 'other')
193
- };
194
- if (categories.readme.length > 0) {
195
- output += '**README Files:**\n';
196
- categories.readme.forEach(file => {
197
- const isDefault = file === defaultFile ? ' (default)' : '';
198
- output += `- ${file.relativePath}${isDefault}\n`;
199
- });
200
- output += '\n';
201
- }
202
- if (categories.common.length > 0) {
203
- output += '**Common Documentation:**\n';
204
- categories.common.forEach(file => {
205
- const isDefault = file === defaultFile ? ' (default)' : '';
206
- output += `- ${file.relativePath}${isDefault}\n`;
207
- });
208
- output += '\n';
209
- }
210
- if (categories.docs.length > 0) {
211
- output += '**Documentation Directory:**\n';
212
- categories.docs.forEach(file => {
213
- const isDefault = file === defaultFile ? ' (default)' : '';
214
- output += `- ${file.relativePath}${isDefault}\n`;
215
- });
216
- output += '\n';
217
- }
218
- if (categories.other.length > 0) {
219
- output += '**Other Files:**\n';
220
- categories.other.forEach(file => {
221
- const isDefault = file === defaultFile ? ' (default)' : '';
222
- output += `- ${file.relativePath}${isDefault}\n`;
223
- });
224
- output += '\n';
225
- }
226
- output += `\nDefault selection: **${defaultFile.relativePath}**\n`;
227
- output += `\nTo test a specific file, use: \`--file path/to/file.md\``;
228
- return output;
229
- }
230
- }
231
- exports.DocDiscovery = DocDiscovery;
@@ -1,109 +0,0 @@
1
- /**
2
- * Documentation Testing Session Manager
3
- *
4
- * Handles creating, loading, saving, and managing documentation validation sessions.
5
- * Uses the existing session directory infrastructure from session-utils.ts.
6
- */
7
- import { ValidationSession, ValidationPhase, WorkflowStep, DocumentSection, SectionStatus, FixableItem } from './doc-testing-types';
8
- export declare class DocTestingSessionManager {
9
- /**
10
- * Create a new validation session
11
- */
12
- createSession(filePath: string, args: any): ValidationSession;
13
- /**
14
- * Load existing session
15
- */
16
- loadSession(sessionId: string, args: any): ValidationSession | null;
17
- /**
18
- * Save session state
19
- */
20
- saveSession(session: ValidationSession, args: any): void;
21
- /**
22
- * Get universal agent instructions for documentation testing workflow
23
- */
24
- private getAgentInstructions;
25
- /**
26
- * Get next workflow step for AI agent
27
- */
28
- getNextStep(sessionId: string, args: any, phaseOverride?: ValidationPhase): WorkflowStep | null;
29
- /**
30
- * Handle done phase - mark session as completed and provide summary
31
- */
32
- private getDonePhaseStep;
33
- /**
34
- * Generate final session summary for done phase
35
- */
36
- private generateFinalSummary;
37
- /**
38
- * Get all active sessions
39
- */
40
- getActiveSessions(args: any): ValidationSession[];
41
- private generateSessionId;
42
- /**
43
- * Load phase prompt from file
44
- */
45
- private loadPhasePrompt;
46
- private getNextPhase;
47
- private getRemainingPhases;
48
- /**
49
- * Update the status of a specific section
50
- */
51
- updateSectionStatus(sessionId: string, sectionId: string, status: SectionStatus, args: any): void;
52
- /**
53
- * Get sections for a session
54
- */
55
- getSections(sessionId: string, args: any): DocumentSection[] | null;
56
- /**
57
- * Get the next test phase step - handles section-by-section testing
58
- */
59
- private getTestPhaseStep;
60
- /**
61
- * Find the next section that needs testing
62
- */
63
- private getNextSectionToTest;
64
- /**
65
- * Get remaining sections that need testing
66
- */
67
- private getRemainingTestSections;
68
- /**
69
- * Load section-specific test prompt
70
- */
71
- private loadSectionTestPrompt;
72
- /**
73
- * Convert string arrays to FixableItem arrays with generated IDs
74
- */
75
- private convertToFixableItems;
76
- /**
77
- * Store test results for a specific section
78
- */
79
- storeSectionTestResults(sessionId: string, sectionId: string, results: string, args: any): void;
80
- /**
81
- * Process scan results by converting section titles into DocumentSection objects
82
- */
83
- processScanResults(sessionId: string, sectionTitles: string[], args: any): void;
84
- /**
85
- * Generate status summary for fix phase
86
- */
87
- private generateStatusSummary;
88
- /**
89
- * Generate formatted list of pending/failed items for fix phase
90
- */
91
- private generatePendingItemsList;
92
- /**
93
- * Update the status of a specific FixableItem by ID
94
- */
95
- updateFixableItemStatus(sessionId: string, itemId: number, status: 'fixed' | 'deferred' | 'failed', explanation?: string, args?: any): void;
96
- /**
97
- * Update multiple FixableItem statuses at once
98
- */
99
- updateMultipleFixableItemStatuses(sessionId: string, updates: Array<{
100
- itemId: number;
101
- status: 'fixed' | 'deferred' | 'failed';
102
- explanation?: string;
103
- }>, args?: any): void;
104
- /**
105
- * Get all FixableItems with pending or failed status
106
- */
107
- getPendingFixableItems(sessionId: string, args?: any): FixableItem[];
108
- }
109
- //# sourceMappingURL=doc-testing-session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-testing-session.d.ts","sourceRoot":"","sources":["../../src/core/doc-testing-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EACL,iBAAiB,EACjB,eAAe,EAEf,YAAY,EACZ,eAAe,EACf,aAAa,EAEb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,wBAAwB;IAEnC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,iBAAiB;IAyB7D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,iBAAiB,GAAG,IAAI;IAiBnE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IASxD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI;IAyC/F;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqD5B;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,iBAAiB,EAAE;IAyBjD,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAejG;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,eAAe,EAAE,GAAG,IAAI;IAMnE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgFxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAmD/F;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IA4B/E;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;OAEG;IACH,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,EACvC,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,GAAG,GACT,IAAI;IA2BP;;OAEG;IACH,iCAAiC,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,EACF,IAAI,CAAC,EAAE,GAAG,GACT,IAAI;IAmCP;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,WAAW,EAAE;CAmBrE"}