@tekton-ui/mcp-server 0.3.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +980 -0
  3. package/dist/auth/cache.d.ts +28 -0
  4. package/dist/auth/cache.d.ts.map +1 -0
  5. package/dist/auth/cache.js +48 -0
  6. package/dist/auth/cache.js.map +1 -0
  7. package/dist/auth/guard.d.ts +13 -0
  8. package/dist/auth/guard.d.ts.map +1 -0
  9. package/dist/auth/guard.js +21 -0
  10. package/dist/auth/guard.js.map +1 -0
  11. package/dist/auth/state.d.ts +32 -0
  12. package/dist/auth/state.d.ts.map +1 -0
  13. package/dist/auth/state.js +72 -0
  14. package/dist/auth/state.js.map +1 -0
  15. package/dist/auth/theme-access.d.ts +10 -0
  16. package/dist/auth/theme-access.d.ts.map +1 -0
  17. package/dist/auth/theme-access.js +24 -0
  18. package/dist/auth/theme-access.js.map +1 -0
  19. package/dist/auth/verify.d.ts +44 -0
  20. package/dist/auth/verify.d.ts.map +1 -0
  21. package/dist/auth/verify.js +77 -0
  22. package/dist/auth/verify.js.map +1 -0
  23. package/dist/cli/credentials.d.ts +29 -0
  24. package/dist/cli/credentials.d.ts.map +1 -0
  25. package/dist/cli/credentials.js +66 -0
  26. package/dist/cli/credentials.js.map +1 -0
  27. package/dist/cli/index.d.ts +7 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +36 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/login.d.ts +9 -0
  32. package/dist/cli/login.d.ts.map +1 -0
  33. package/dist/cli/login.js +120 -0
  34. package/dist/cli/login.js.map +1 -0
  35. package/dist/cli/logout.d.ts +9 -0
  36. package/dist/cli/logout.d.ts.map +1 -0
  37. package/dist/cli/logout.js +18 -0
  38. package/dist/cli/logout.js.map +1 -0
  39. package/dist/cli/status.d.ts +9 -0
  40. package/dist/cli/status.d.ts.map +1 -0
  41. package/dist/cli/status.js +31 -0
  42. package/dist/cli/status.js.map +1 -0
  43. package/dist/data/component-registry.d.ts +30 -0
  44. package/dist/data/component-registry.d.ts.map +1 -0
  45. package/dist/data/component-registry.js +320 -0
  46. package/dist/data/component-registry.js.map +1 -0
  47. package/dist/data/examples/screen-examples.d.ts +38 -0
  48. package/dist/data/examples/screen-examples.d.ts.map +1 -0
  49. package/dist/data/examples/screen-examples.js +500 -0
  50. package/dist/data/examples/screen-examples.js.map +1 -0
  51. package/dist/data/hint-generator.d.ts +16 -0
  52. package/dist/data/hint-generator.d.ts.map +1 -0
  53. package/dist/data/hint-generator.js +298 -0
  54. package/dist/data/hint-generator.js.map +1 -0
  55. package/dist/data/recipe-resolver.d.ts +48 -0
  56. package/dist/data/recipe-resolver.d.ts.map +1 -0
  57. package/dist/data/recipe-resolver.js +226 -0
  58. package/dist/data/recipe-resolver.js.map +1 -0
  59. package/dist/data/template-matcher.d.ts +50 -0
  60. package/dist/data/template-matcher.d.ts.map +1 -0
  61. package/dist/data/template-matcher.js +240 -0
  62. package/dist/data/template-matcher.js.map +1 -0
  63. package/dist/generators/core-resolver.d.ts +56 -0
  64. package/dist/generators/core-resolver.d.ts.map +1 -0
  65. package/dist/generators/core-resolver.js +490 -0
  66. package/dist/generators/core-resolver.js.map +1 -0
  67. package/dist/generators/css-generator.d.ts +49 -0
  68. package/dist/generators/css-generator.d.ts.map +1 -0
  69. package/dist/generators/css-generator.js +294 -0
  70. package/dist/generators/css-generator.js.map +1 -0
  71. package/dist/generators/index.d.ts +13 -0
  72. package/dist/generators/index.d.ts.map +1 -0
  73. package/dist/generators/index.js +16 -0
  74. package/dist/generators/index.js.map +1 -0
  75. package/dist/generators/llm-generator.d.ts +96 -0
  76. package/dist/generators/llm-generator.d.ts.map +1 -0
  77. package/dist/generators/llm-generator.js +296 -0
  78. package/dist/generators/llm-generator.js.map +1 -0
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +818 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/schemas/mcp-schemas.d.ts +4132 -0
  84. package/dist/schemas/mcp-schemas.d.ts.map +1 -0
  85. package/dist/schemas/mcp-schemas.js +946 -0
  86. package/dist/schemas/mcp-schemas.js.map +1 -0
  87. package/dist/storage/blueprint-storage.d.ts +68 -0
  88. package/dist/storage/blueprint-storage.d.ts.map +1 -0
  89. package/dist/storage/blueprint-storage.js +135 -0
  90. package/dist/storage/blueprint-storage.js.map +1 -0
  91. package/dist/storage/timestamp-manager.d.ts +32 -0
  92. package/dist/storage/timestamp-manager.d.ts.map +1 -0
  93. package/dist/storage/timestamp-manager.js +59 -0
  94. package/dist/storage/timestamp-manager.js.map +1 -0
  95. package/dist/tools/export-screen.d.ts +34 -0
  96. package/dist/tools/export-screen.d.ts.map +1 -0
  97. package/dist/tools/export-screen.js +344 -0
  98. package/dist/tools/export-screen.js.map +1 -0
  99. package/dist/tools/generate-blueprint.d.ts +15 -0
  100. package/dist/tools/generate-blueprint.d.ts.map +1 -0
  101. package/dist/tools/generate-blueprint.js +165 -0
  102. package/dist/tools/generate-blueprint.js.map +1 -0
  103. package/dist/tools/generate-screen.d.ts +13 -0
  104. package/dist/tools/generate-screen.d.ts.map +1 -0
  105. package/dist/tools/generate-screen.js +82 -0
  106. package/dist/tools/generate-screen.js.map +1 -0
  107. package/dist/tools/get-screen-generation-context.d.ts +11 -0
  108. package/dist/tools/get-screen-generation-context.d.ts.map +1 -0
  109. package/dist/tools/get-screen-generation-context.js +316 -0
  110. package/dist/tools/get-screen-generation-context.js.map +1 -0
  111. package/dist/tools/list-components.d.ts +15 -0
  112. package/dist/tools/list-components.d.ts.map +1 -0
  113. package/dist/tools/list-components.js +46 -0
  114. package/dist/tools/list-components.js.map +1 -0
  115. package/dist/tools/list-icon-libraries.d.ts +12 -0
  116. package/dist/tools/list-icon-libraries.d.ts.map +1 -0
  117. package/dist/tools/list-icon-libraries.js +48 -0
  118. package/dist/tools/list-icon-libraries.js.map +1 -0
  119. package/dist/tools/list-screen-templates.d.ts +15 -0
  120. package/dist/tools/list-screen-templates.d.ts.map +1 -0
  121. package/dist/tools/list-screen-templates.js +63 -0
  122. package/dist/tools/list-screen-templates.js.map +1 -0
  123. package/dist/tools/list-themes.d.ts +13 -0
  124. package/dist/tools/list-themes.d.ts.map +1 -0
  125. package/dist/tools/list-themes.js +42 -0
  126. package/dist/tools/list-themes.js.map +1 -0
  127. package/dist/tools/list-tokens.d.ts +13 -0
  128. package/dist/tools/list-tokens.d.ts.map +1 -0
  129. package/dist/tools/list-tokens.js +92 -0
  130. package/dist/tools/list-tokens.js.map +1 -0
  131. package/dist/tools/preview-component.d.ts +18 -0
  132. package/dist/tools/preview-component.d.ts.map +1 -0
  133. package/dist/tools/preview-component.js +178 -0
  134. package/dist/tools/preview-component.js.map +1 -0
  135. package/dist/tools/preview-icon-library.d.ts +13 -0
  136. package/dist/tools/preview-icon-library.d.ts.map +1 -0
  137. package/dist/tools/preview-icon-library.js +63 -0
  138. package/dist/tools/preview-icon-library.js.map +1 -0
  139. package/dist/tools/preview-screen-template.d.ts +18 -0
  140. package/dist/tools/preview-screen-template.d.ts.map +1 -0
  141. package/dist/tools/preview-screen-template.js +101 -0
  142. package/dist/tools/preview-screen-template.js.map +1 -0
  143. package/dist/tools/preview-theme.d.ts +15 -0
  144. package/dist/tools/preview-theme.d.ts.map +1 -0
  145. package/dist/tools/preview-theme.js +71 -0
  146. package/dist/tools/preview-theme.js.map +1 -0
  147. package/dist/tools/validate-environment.d.ts +37 -0
  148. package/dist/tools/validate-environment.d.ts.map +1 -0
  149. package/dist/tools/validate-environment.js +153 -0
  150. package/dist/tools/validate-environment.js.map +1 -0
  151. package/dist/tools/validate-screen-definition.d.ts +10 -0
  152. package/dist/tools/validate-screen-definition.d.ts.map +1 -0
  153. package/dist/tools/validate-screen-definition.js +463 -0
  154. package/dist/tools/validate-screen-definition.js.map +1 -0
  155. package/dist/tools/validate-screen.d.ts +13 -0
  156. package/dist/tools/validate-screen.d.ts.map +1 -0
  157. package/dist/tools/validate-screen.js +106 -0
  158. package/dist/tools/validate-screen.js.map +1 -0
  159. package/dist/utils/dependency-extractor.d.ts +13 -0
  160. package/dist/utils/dependency-extractor.d.ts.map +1 -0
  161. package/dist/utils/dependency-extractor.js +232 -0
  162. package/dist/utils/dependency-extractor.js.map +1 -0
  163. package/dist/utils/error-handler.d.ts +29 -0
  164. package/dist/utils/error-handler.d.ts.map +1 -0
  165. package/dist/utils/error-handler.js +48 -0
  166. package/dist/utils/error-handler.js.map +1 -0
  167. package/dist/utils/logger.d.ts +8 -0
  168. package/dist/utils/logger.d.ts.map +1 -0
  169. package/dist/utils/logger.js +14 -0
  170. package/dist/utils/logger.js.map +1 -0
  171. package/dist/utils/package-json-reader.d.ts +37 -0
  172. package/dist/utils/package-json-reader.d.ts.map +1 -0
  173. package/dist/utils/package-json-reader.js +108 -0
  174. package/dist/utils/package-json-reader.js.map +1 -0
  175. package/dist/utils/tailwind-config-reader.d.ts +23 -0
  176. package/dist/utils/tailwind-config-reader.d.ts.map +1 -0
  177. package/dist/utils/tailwind-config-reader.js +81 -0
  178. package/dist/utils/tailwind-config-reader.js.map +1 -0
  179. package/package.json +72 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Get Screen Generation Context MCP Tool
3
+ * SPEC-MCP-004 Phase 3.5: Provides complete context for AI agents to generate screen definitions
4
+ */
5
+ import type { GetScreenGenerationContextInput, GetScreenGenerationContextOutput } from '../schemas/mcp-schemas.js';
6
+ /**
7
+ * Get Screen Generation Context tool implementation
8
+ * Provides complete context for coding agents to generate screen definitions
9
+ */
10
+ export declare function getScreenGenerationContextTool(input: GetScreenGenerationContextInput): Promise<GetScreenGenerationContextOutput>;
11
+ //# sourceMappingURL=get-screen-generation-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-screen-generation-context.d.ts","sourceRoot":"","sources":["../../src/tools/get-screen-generation-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,+BAA+B,EAC/B,gCAAgC,EAMjC,MAAM,2BAA2B,CAAC;AAyMnC;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,gCAAgC,CAAC,CAyI3C"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Get Screen Generation Context MCP Tool
3
+ * SPEC-MCP-004 Phase 3.5: Provides complete context for AI agents to generate screen definitions
4
+ */
5
+ import { loadTheme } from '@tekton-ui/core';
6
+ import { templateRegistry } from '@tekton-ui/ui';
7
+ import { matchTemplates } from '../data/template-matcher.js';
8
+ import { getAllRecipes } from '../data/recipe-resolver.js';
9
+ import { getMatchingExamples } from '../data/examples/screen-examples.js';
10
+ import { generateHints } from '../data/hint-generator.js';
11
+ import { extractErrorMessage } from '../utils/error-handler.js';
12
+ import { getComponentById } from '../data/component-registry.js';
13
+ /**
14
+ * Screen Definition JSON Schema for reference
15
+ */
16
+ const SCREEN_DEFINITION_SCHEMA = {
17
+ type: 'object',
18
+ required: ['id', 'shell', 'page', 'sections'],
19
+ properties: {
20
+ id: {
21
+ type: 'string',
22
+ pattern: '^[a-z0-9-]+$',
23
+ description: 'Unique screen identifier (lowercase alphanumeric with hyphens)',
24
+ },
25
+ name: {
26
+ type: 'string',
27
+ description: 'Human-readable screen name',
28
+ },
29
+ description: {
30
+ type: 'string',
31
+ description: 'Screen description for documentation',
32
+ },
33
+ shell: {
34
+ type: 'string',
35
+ pattern: '^shell\\.[a-z]+\\.[a-z-]+$',
36
+ description: 'Shell token (e.g., shell.web.dashboard, shell.web.auth)',
37
+ },
38
+ page: {
39
+ type: 'string',
40
+ pattern: '^page\\.[a-z-]+$',
41
+ description: 'Page token (e.g., page.dashboard, page.wizard)',
42
+ },
43
+ themeId: {
44
+ type: 'string',
45
+ pattern: '^[a-z0-9-]+$',
46
+ description: 'Theme ID for styling (optional)',
47
+ },
48
+ sections: {
49
+ type: 'array',
50
+ items: {
51
+ type: 'object',
52
+ required: ['id', 'pattern', 'components'],
53
+ properties: {
54
+ id: {
55
+ type: 'string',
56
+ description: 'Section identifier',
57
+ },
58
+ pattern: {
59
+ type: 'string',
60
+ pattern: '^section\\.[a-z0-9-]+$',
61
+ description: 'Section pattern (e.g., section.container, section.grid-4)',
62
+ },
63
+ slot: {
64
+ type: 'string',
65
+ enum: ['header', 'main', 'sidebar', 'footer'],
66
+ description: 'Layout slot to place this section',
67
+ },
68
+ components: {
69
+ type: 'array',
70
+ items: {
71
+ type: 'object',
72
+ required: ['type'],
73
+ properties: {
74
+ type: {
75
+ type: 'string',
76
+ description: 'Component type from component catalog',
77
+ },
78
+ props: {
79
+ type: 'object',
80
+ description: 'Component props',
81
+ },
82
+ children: {
83
+ oneOf: [{ type: 'string' }, { type: 'array' }],
84
+ description: 'Child content or nested components',
85
+ },
86
+ },
87
+ },
88
+ },
89
+ },
90
+ },
91
+ },
92
+ metadata: {
93
+ type: 'object',
94
+ properties: {
95
+ version: { type: 'string' },
96
+ author: { type: 'string' },
97
+ created: { type: 'string' },
98
+ updated: { type: 'string' },
99
+ },
100
+ },
101
+ },
102
+ };
103
+ /**
104
+ * Get component info from local registry
105
+ */
106
+ function getComponentInfo(componentIds) {
107
+ const components = [];
108
+ for (const id of componentIds) {
109
+ const component = getComponentById(id.toLowerCase());
110
+ if (component) {
111
+ components.push({
112
+ id: component.id,
113
+ name: component.name,
114
+ category: component.category,
115
+ description: component.description,
116
+ importStatement: `import { ${component.name} } from '@tekton-ui/ui';`,
117
+ props: [], // Props are detailed in preview-component tool
118
+ variants: undefined, // Variants are detailed in preview-component tool
119
+ });
120
+ }
121
+ }
122
+ return components;
123
+ }
124
+ /**
125
+ * Extract component types from template skeleton
126
+ */
127
+ function extractComponentTypes(template) {
128
+ const types = new Set();
129
+ // Add required components from template
130
+ if (template.requiredComponents) {
131
+ for (const comp of template.requiredComponents) {
132
+ types.add(comp.toLowerCase());
133
+ }
134
+ }
135
+ // Add common components based on category
136
+ const categoryComponents = {
137
+ auth: ['card', 'input', 'button', 'text', 'heading', 'link'],
138
+ dashboard: ['card', 'heading', 'text', 'badge', 'avatar', 'table'],
139
+ form: ['form', 'input', 'button', 'text', 'heading', 'select'],
140
+ feedback: ['card', 'text', 'heading', 'button', 'icon'],
141
+ marketing: ['heading', 'text', 'button', 'image', 'card'],
142
+ };
143
+ const category = template.category;
144
+ if (category && categoryComponents[category]) {
145
+ for (const comp of categoryComponents[category]) {
146
+ types.add(comp);
147
+ }
148
+ }
149
+ return Array.from(types);
150
+ }
151
+ /**
152
+ * Get theme recipe info
153
+ */
154
+ function getThemeRecipeInfo(themeId) {
155
+ const recipes = [];
156
+ try {
157
+ const allRecipes = getAllRecipes(themeId);
158
+ // Group recipes by component type
159
+ const grouped = {};
160
+ for (const [path, className] of Object.entries(allRecipes)) {
161
+ // Parse path: recipes.card.glass -> card, glass
162
+ const parts = path.replace('recipes.', '').split('.');
163
+ if (parts.length >= 1) {
164
+ const componentType = parts[0] || 'unknown';
165
+ const variant = parts[1] || 'default';
166
+ if (!grouped[componentType]) {
167
+ grouped[componentType] = { variants: [] };
168
+ }
169
+ if (variant === 'default' || variant === 'base') {
170
+ grouped[componentType].defaultClassName = className;
171
+ }
172
+ else {
173
+ grouped[componentType].variants.push(variant);
174
+ }
175
+ }
176
+ }
177
+ // Convert to array
178
+ for (const [componentType, data] of Object.entries(grouped)) {
179
+ recipes.push({
180
+ componentType,
181
+ variants: data.variants,
182
+ defaultClassName: data.defaultClassName,
183
+ });
184
+ }
185
+ }
186
+ catch {
187
+ // Theme not found or no recipes
188
+ }
189
+ return recipes;
190
+ }
191
+ /**
192
+ * Get Screen Generation Context tool implementation
193
+ * Provides complete context for coding agents to generate screen definitions
194
+ */
195
+ export async function getScreenGenerationContextTool(input) {
196
+ try {
197
+ // 1. Match templates based on description
198
+ const templateMatches = matchTemplates(input.description, 3);
199
+ let bestMatch;
200
+ let componentTypes = [];
201
+ if (templateMatches.length > 0) {
202
+ const match = templateMatches[0];
203
+ if (match) {
204
+ const templateData = templateRegistry.get(match.templateId);
205
+ bestMatch = {
206
+ templateId: match.templateId,
207
+ templateName: match.templateName,
208
+ category: match.category,
209
+ confidence: match.confidence,
210
+ matchedKeywords: match.matchedKeywords,
211
+ skeleton: templateData?.skeleton,
212
+ requiredComponents: templateData?.requiredComponents,
213
+ };
214
+ // Extract component types from template
215
+ if (templateData) {
216
+ componentTypes = extractComponentTypes(templateData);
217
+ }
218
+ }
219
+ }
220
+ // 2. Get component information
221
+ // Add common components if no specific match
222
+ if (componentTypes.length === 0) {
223
+ componentTypes = ['card', 'heading', 'text', 'button'];
224
+ }
225
+ const components = getComponentInfo(componentTypes);
226
+ // 3. Get examples if requested
227
+ let examples;
228
+ if (input.includeExamples !== false) {
229
+ examples = getMatchingExamples(input.description, 2);
230
+ }
231
+ // 4. Get theme recipes if theme specified
232
+ let themeRecipes;
233
+ if (input.themeId) {
234
+ const theme = loadTheme(input.themeId);
235
+ if (theme) {
236
+ themeRecipes = getThemeRecipeInfo(input.themeId);
237
+ }
238
+ }
239
+ // 5. Generate contextual hints
240
+ const hints = generateHints(input.description, input.themeId);
241
+ // 6. Generate workflow guide
242
+ const workflow = {
243
+ title: 'Screen Generation Workflow',
244
+ description: 'Follow these steps to generate a screen from natural language description',
245
+ steps: [
246
+ {
247
+ step: 1,
248
+ action: 'Review Context',
249
+ description: 'Review the templateMatch, components, schema, examples, and hints provided in this response',
250
+ },
251
+ {
252
+ step: 2,
253
+ action: 'Generate Screen Definition',
254
+ description: 'Create a JSON Screen Definition following the schema structure. Use templateMatch.skeleton as a starting point if available.',
255
+ example: JSON.stringify({
256
+ id: 'my-screen',
257
+ shell: 'shell.web.app',
258
+ page: 'page.dashboard',
259
+ themeId: input.themeId || 'your-theme-id',
260
+ sections: [{ id: 'main', pattern: 'section.container', components: [] }],
261
+ }, null, 2),
262
+ },
263
+ {
264
+ step: 3,
265
+ action: 'Validate Definition',
266
+ tool: 'validate-screen-definition',
267
+ description: 'Call validate-screen-definition with your generated definition to check for errors',
268
+ example: '{ "definition": <your-screen-definition>, "strict": true }',
269
+ },
270
+ {
271
+ step: 4,
272
+ action: 'Fix Validation Errors',
273
+ description: 'If validation fails, review the errors and suggestions, then fix and re-validate',
274
+ },
275
+ {
276
+ step: 5,
277
+ action: 'Generate Code',
278
+ tool: 'generate_screen',
279
+ description: 'Once validation passes, call generate_screen to produce React code',
280
+ example: '{ "screenDefinition": <validated-definition>, "outputFormat": "react" }',
281
+ },
282
+ {
283
+ step: 6,
284
+ action: 'Save File',
285
+ description: 'Write the generated code to the target file path (e.g., app/page.tsx)',
286
+ },
287
+ ],
288
+ notes: [
289
+ 'Use components from the "components" field - they are available in @tekton-ui/ui',
290
+ 'Apply theme recipes by setting variant props on components',
291
+ 'If themeId is provided, recipes will be auto-applied during code generation',
292
+ 'Check hints for layout and component recommendations',
293
+ ],
294
+ };
295
+ return {
296
+ success: true,
297
+ templateMatch: bestMatch,
298
+ components: components.length > 0 ? components : undefined,
299
+ schema: {
300
+ screenDefinition: SCREEN_DEFINITION_SCHEMA,
301
+ description: 'JSON Schema for Screen Definition - use this structure to create valid screen definitions',
302
+ },
303
+ examples: examples && examples.length > 0 ? examples : undefined,
304
+ themeRecipes: themeRecipes && themeRecipes.length > 0 ? themeRecipes : undefined,
305
+ hints: hints.length > 0 ? hints : undefined,
306
+ workflow,
307
+ };
308
+ }
309
+ catch (error) {
310
+ return {
311
+ success: false,
312
+ error: extractErrorMessage(error),
313
+ };
314
+ }
315
+ }
316
+ //# sourceMappingURL=get-screen-generation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-screen-generation-context.js","sourceRoot":"","sources":["../../src/tools/get-screen-generation-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * List Components MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-006] List all available UI components
4
+ *
5
+ * Lists all UI components from @tekton-ui/ui with metadata
6
+ * including category, tier, and variant information
7
+ */
8
+ import type { ListComponentsInput, ListComponentsOutput } from '../schemas/mcp-schemas.js';
9
+ /**
10
+ * List all available UI components
11
+ * @param input - Filter options (category, search)
12
+ * @returns Component metadata list with category counts
13
+ */
14
+ export declare function listComponentsTool(input: ListComponentsInput): Promise<ListComponentsOutput>;
15
+ //# sourceMappingURL=list-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-components.d.ts","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG3F;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAmC/B"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * List Components MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-006] List all available UI components
4
+ *
5
+ * Lists all UI components from @tekton-ui/ui with metadata
6
+ * including category, tier, and variant information
7
+ */
8
+ import { getAllComponents, getComponentsByCategory, searchComponents, } from '../data/component-registry.js';
9
+ import { extractErrorMessage } from '../utils/error-handler.js';
10
+ /**
11
+ * List all available UI components
12
+ * @param input - Filter options (category, search)
13
+ * @returns Component metadata list with category counts
14
+ */
15
+ export async function listComponentsTool(input) {
16
+ try {
17
+ // Get components based on filters
18
+ let components = input.category === 'all' || !input.category
19
+ ? getAllComponents()
20
+ : getComponentsByCategory(input.category);
21
+ // Apply search filter if provided
22
+ if (input.search) {
23
+ components = searchComponents(input.search).filter(c => input.category === 'all' || !input.category ? true : c.category === input.category);
24
+ }
25
+ // Calculate category counts
26
+ const allComponents = getAllComponents();
27
+ const categories = {
28
+ core: allComponents.filter(c => c.category === 'core').length,
29
+ complex: allComponents.filter(c => c.category === 'complex').length,
30
+ advanced: allComponents.filter(c => c.category === 'advanced').length,
31
+ };
32
+ return {
33
+ success: true,
34
+ components,
35
+ count: components.length,
36
+ categories,
37
+ };
38
+ }
39
+ catch (error) {
40
+ return {
41
+ success: false,
42
+ error: extractErrorMessage(error),
43
+ };
44
+ }
45
+ }
46
+ //# sourceMappingURL=list-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-components.js","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA0B;IAE1B,IAAI,CAAC;QACH,kCAAkC;QAClC,IAAI,UAAU,GACZ,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;YACzC,CAAC,CAAC,gBAAgB,EAAE;YACpB,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE9C,kCAAkC;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrD,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CACnF,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;YAC7D,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;YACnE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;SACtE,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU;YACV,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MCP Tool: list-icon-libraries
3
+ * List all available icon libraries from .moai/icon-libraries/generated/
4
+ * [SPEC-ICON-001]
5
+ */
6
+ import type { ListIconLibrariesOutput } from '../schemas/mcp-schemas.js';
7
+ /**
8
+ * List all available icon libraries
9
+ * @returns List of icon library metadata
10
+ */
11
+ export declare function listIconLibrariesTool(): Promise<ListIconLibrariesOutput>;
12
+ //# sourceMappingURL=list-icon-libraries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-icon-libraries.d.ts","sourceRoot":"","sources":["../../src/tools/list-icon-libraries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGzE;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAsC9E"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * MCP Tool: list-icon-libraries
3
+ * List all available icon libraries from .moai/icon-libraries/generated/
4
+ * [SPEC-ICON-001]
5
+ */
6
+ import { listIconLibraries } from '@tekton-ui/core';
7
+ import { info, error as logError } from '../utils/logger.js';
8
+ /**
9
+ * List all available icon libraries
10
+ * @returns List of icon library metadata
11
+ */
12
+ export async function listIconLibrariesTool() {
13
+ info('list-icon-libraries: Fetching available icon libraries');
14
+ try {
15
+ const libraries = listIconLibraries();
16
+ if (libraries.length === 0) {
17
+ info('list-icon-libraries: No icon libraries found');
18
+ return {
19
+ success: true,
20
+ libraries: [],
21
+ count: 0,
22
+ };
23
+ }
24
+ info(`list-icon-libraries: Found ${libraries.length} icon libraries`);
25
+ return {
26
+ success: true,
27
+ libraries: libraries.map(lib => ({
28
+ id: lib.id,
29
+ name: lib.name,
30
+ description: lib.description,
31
+ version: lib.version,
32
+ license: lib.license,
33
+ totalIcons: lib.totalIcons,
34
+ categories: lib.categories,
35
+ })),
36
+ count: libraries.length,
37
+ };
38
+ }
39
+ catch (err) {
40
+ const errorMessage = err instanceof Error ? err.message : String(err);
41
+ logError(`list-icon-libraries: Failed to list libraries: ${errorMessage}`);
42
+ return {
43
+ success: false,
44
+ error: `Failed to list icon libraries: ${errorMessage}`,
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=list-icon-libraries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-icon-libraries.js","sourceRoot":"","sources":["../../src/tools/list-icon-libraries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QAEtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,CAAC;aACT,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,SAAS,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC,CAAC;YACH,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,QAAQ,CAAC,kDAAkD,YAAY,EAAE,CAAC,CAAC;QAC3E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kCAAkC,YAAY,EAAE;SACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * List Screen Templates MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-008] List all available screen templates
4
+ *
5
+ * Lists all screen templates from Template Registry
6
+ * with category filtering and search capabilities
7
+ */
8
+ import type { ListScreenTemplatesInput, ListScreenTemplatesOutput } from '../schemas/mcp-schemas.js';
9
+ /**
10
+ * List all available screen templates
11
+ * @param input - Filter options (category, search)
12
+ * @returns Template metadata list with category counts
13
+ */
14
+ export declare function listScreenTemplatesTool(input: ListScreenTemplatesInput): Promise<ListScreenTemplatesOutput>;
15
+ //# sourceMappingURL=list-screen-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-screen-templates.d.ts","sourceRoot":"","sources":["../../src/tools/list-screen-templates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAE1B,MAAM,2BAA2B,CAAC;AAGnC;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAmDpC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * List Screen Templates MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-008] List all available screen templates
4
+ *
5
+ * Lists all screen templates from Template Registry
6
+ * with category filtering and search capabilities
7
+ */
8
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
9
+ // @ts-nocheck
10
+ import { templateRegistry } from '@tekton-ui/ui';
11
+ import { extractErrorMessage } from '../utils/error-handler.js';
12
+ /**
13
+ * List all available screen templates
14
+ * @param input - Filter options (category, search)
15
+ * @returns Template metadata list with category counts
16
+ */
17
+ export async function listScreenTemplatesTool(input) {
18
+ try {
19
+ // Get templates based on category filter
20
+ let templates = input.category === 'all' || !input.category
21
+ ? templateRegistry.getAll()
22
+ : templateRegistry.getByCategory(input.category);
23
+ // Apply search filter if provided
24
+ if (input.search) {
25
+ templates = templateRegistry
26
+ .search(input.search)
27
+ .filter((t) => input.category === 'all' || !input.category ? true : t.category === input.category);
28
+ }
29
+ // Calculate category counts
30
+ const allTemplates = templateRegistry.getAll();
31
+ const categories = {
32
+ auth: allTemplates.filter((t) => t.category === 'auth').length,
33
+ dashboard: allTemplates.filter((t) => t.category === 'dashboard').length,
34
+ form: allTemplates.filter((t) => t.category === 'form').length,
35
+ marketing: allTemplates.filter((t) => t.category === 'marketing').length,
36
+ feedback: allTemplates.filter((t) => t.category === 'feedback').length,
37
+ };
38
+ // Map templates to output format
39
+ const templateMetas = templates.map((t) => ({
40
+ id: t.id,
41
+ name: t.name,
42
+ category: t.category,
43
+ description: t.description,
44
+ requiredComponentsCount: t.requiredComponents.length,
45
+ layoutType: t.layout.type,
46
+ version: t.version,
47
+ tags: t.tags,
48
+ }));
49
+ return {
50
+ success: true,
51
+ templates: templateMetas,
52
+ count: templateMetas.length,
53
+ categories,
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ success: false,
59
+ error: extractErrorMessage(error),
60
+ };
61
+ }
62
+ }
63
+ //# sourceMappingURL=list-screen-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-screen-templates.js","sourceRoot":"","sources":["../../src/tools/list-screen-templates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sDAAsD;AACtD,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAA+B;IAE/B,IAAI,CAAC;QACH,yCAAyC;QACzC,IAAI,SAAS,GACX,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;YACzC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,QAA4B,CAAC,CAAC;QAEzE,kCAAkC;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,SAAS,GAAG,gBAAgB;iBACzB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;iBACpB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CACjB,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CACnF,CAAC;QACN,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;YACnE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,MAAM;YAC7E,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;YACnE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,MAAM;YAC7E,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;SAC5E,CAAC;QAEF,iCAAiC;QACjC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAA4B;YACxC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,uBAAuB,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM;YACpD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACzB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,aAAa,CAAC,MAAM;YAC3B,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * List Themes MCP Tool (v2.1)
3
+ * Lists all available themes from .moai/themes/generated/
4
+ * SPEC-DEPLOY-001: 인증된 사용자의 라이선스 보유 테마만 반환
5
+ */
6
+ import type { ListThemesOutput } from '../schemas/mcp-schemas.js';
7
+ /**
8
+ * List available themes based on authentication status
9
+ * 인증된 사용자의 라이선스 보유 테마만 반환
10
+ * @returns Array of accessible theme metadata from .moai/themes/generated/
11
+ */
12
+ export declare function listThemesTool(): Promise<ListThemesOutput>;
13
+ //# sourceMappingURL=list-themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-themes.d.ts","sourceRoot":"","sources":["../../src/tools/list-themes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6BhE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * List Themes MCP Tool (v2.1)
3
+ * Lists all available themes from .moai/themes/generated/
4
+ * SPEC-DEPLOY-001: 인증된 사용자의 라이선스 보유 테마만 반환
5
+ */
6
+ import { listThemes } from '@tekton-ui/core';
7
+ import { extractErrorMessage } from '../utils/error-handler.js';
8
+ import { getAccessibleThemes } from '../auth/state.js';
9
+ /**
10
+ * List available themes based on authentication status
11
+ * 인증된 사용자의 라이선스 보유 테마만 반환
12
+ * @returns Array of accessible theme metadata from .moai/themes/generated/
13
+ */
14
+ export async function listThemesTool() {
15
+ try {
16
+ // @tekton-ui/core에서 전체 테마 로드
17
+ const allThemes = listThemes();
18
+ const allThemeIds = allThemes.map(theme => theme.id);
19
+ // 인증 기반 접근 가능 테마 필터링
20
+ const accessibleThemeIds = getAccessibleThemes(allThemeIds);
21
+ // 접근 가능한 테마만 반환
22
+ const filteredThemes = allThemes.filter(theme => accessibleThemeIds.includes(theme.id));
23
+ return {
24
+ success: true,
25
+ themes: filteredThemes.map(theme => ({
26
+ id: theme.id,
27
+ name: theme.name,
28
+ description: theme.description,
29
+ brandTone: theme.brandTone,
30
+ schemaVersion: theme.schemaVersion,
31
+ })),
32
+ count: filteredThemes.length,
33
+ };
34
+ }
35
+ catch (error) {
36
+ return {
37
+ success: false,
38
+ error: extractErrorMessage(error),
39
+ };
40
+ }
41
+ }
42
+ //# sourceMappingURL=list-themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-themes.js","sourceRoot":"","sources":["../../src/tools/list-themes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAE5D,gBAAgB;QAChB,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAExF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC,CAAC;YACH,KAAK,EAAE,cAAc,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;AACH,CAAC"}