@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.
- package/LICENSE +21 -0
- package/README.md +980 -0
- package/dist/auth/cache.d.ts +28 -0
- package/dist/auth/cache.d.ts.map +1 -0
- package/dist/auth/cache.js +48 -0
- package/dist/auth/cache.js.map +1 -0
- package/dist/auth/guard.d.ts +13 -0
- package/dist/auth/guard.d.ts.map +1 -0
- package/dist/auth/guard.js +21 -0
- package/dist/auth/guard.js.map +1 -0
- package/dist/auth/state.d.ts +32 -0
- package/dist/auth/state.d.ts.map +1 -0
- package/dist/auth/state.js +72 -0
- package/dist/auth/state.js.map +1 -0
- package/dist/auth/theme-access.d.ts +10 -0
- package/dist/auth/theme-access.d.ts.map +1 -0
- package/dist/auth/theme-access.js +24 -0
- package/dist/auth/theme-access.js.map +1 -0
- package/dist/auth/verify.d.ts +44 -0
- package/dist/auth/verify.d.ts.map +1 -0
- package/dist/auth/verify.js +77 -0
- package/dist/auth/verify.js.map +1 -0
- package/dist/cli/credentials.d.ts +29 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +66 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +36 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/login.d.ts +9 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +120 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logout.d.ts +9 -0
- package/dist/cli/logout.d.ts.map +1 -0
- package/dist/cli/logout.js +18 -0
- package/dist/cli/logout.js.map +1 -0
- package/dist/cli/status.d.ts +9 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +31 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/data/component-registry.d.ts +30 -0
- package/dist/data/component-registry.d.ts.map +1 -0
- package/dist/data/component-registry.js +320 -0
- package/dist/data/component-registry.js.map +1 -0
- package/dist/data/examples/screen-examples.d.ts +38 -0
- package/dist/data/examples/screen-examples.d.ts.map +1 -0
- package/dist/data/examples/screen-examples.js +500 -0
- package/dist/data/examples/screen-examples.js.map +1 -0
- package/dist/data/hint-generator.d.ts +16 -0
- package/dist/data/hint-generator.d.ts.map +1 -0
- package/dist/data/hint-generator.js +298 -0
- package/dist/data/hint-generator.js.map +1 -0
- package/dist/data/recipe-resolver.d.ts +48 -0
- package/dist/data/recipe-resolver.d.ts.map +1 -0
- package/dist/data/recipe-resolver.js +226 -0
- package/dist/data/recipe-resolver.js.map +1 -0
- package/dist/data/template-matcher.d.ts +50 -0
- package/dist/data/template-matcher.d.ts.map +1 -0
- package/dist/data/template-matcher.js +240 -0
- package/dist/data/template-matcher.js.map +1 -0
- package/dist/generators/core-resolver.d.ts +56 -0
- package/dist/generators/core-resolver.d.ts.map +1 -0
- package/dist/generators/core-resolver.js +490 -0
- package/dist/generators/core-resolver.js.map +1 -0
- package/dist/generators/css-generator.d.ts +49 -0
- package/dist/generators/css-generator.d.ts.map +1 -0
- package/dist/generators/css-generator.js +294 -0
- package/dist/generators/css-generator.js.map +1 -0
- package/dist/generators/index.d.ts +13 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +16 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/llm-generator.d.ts +96 -0
- package/dist/generators/llm-generator.d.ts.map +1 -0
- package/dist/generators/llm-generator.js +296 -0
- package/dist/generators/llm-generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +818 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/mcp-schemas.d.ts +4132 -0
- package/dist/schemas/mcp-schemas.d.ts.map +1 -0
- package/dist/schemas/mcp-schemas.js +946 -0
- package/dist/schemas/mcp-schemas.js.map +1 -0
- package/dist/storage/blueprint-storage.d.ts +68 -0
- package/dist/storage/blueprint-storage.d.ts.map +1 -0
- package/dist/storage/blueprint-storage.js +135 -0
- package/dist/storage/blueprint-storage.js.map +1 -0
- package/dist/storage/timestamp-manager.d.ts +32 -0
- package/dist/storage/timestamp-manager.d.ts.map +1 -0
- package/dist/storage/timestamp-manager.js +59 -0
- package/dist/storage/timestamp-manager.js.map +1 -0
- package/dist/tools/export-screen.d.ts +34 -0
- package/dist/tools/export-screen.d.ts.map +1 -0
- package/dist/tools/export-screen.js +344 -0
- package/dist/tools/export-screen.js.map +1 -0
- package/dist/tools/generate-blueprint.d.ts +15 -0
- package/dist/tools/generate-blueprint.d.ts.map +1 -0
- package/dist/tools/generate-blueprint.js +165 -0
- package/dist/tools/generate-blueprint.js.map +1 -0
- package/dist/tools/generate-screen.d.ts +13 -0
- package/dist/tools/generate-screen.d.ts.map +1 -0
- package/dist/tools/generate-screen.js +82 -0
- package/dist/tools/generate-screen.js.map +1 -0
- package/dist/tools/get-screen-generation-context.d.ts +11 -0
- package/dist/tools/get-screen-generation-context.d.ts.map +1 -0
- package/dist/tools/get-screen-generation-context.js +316 -0
- package/dist/tools/get-screen-generation-context.js.map +1 -0
- package/dist/tools/list-components.d.ts +15 -0
- package/dist/tools/list-components.d.ts.map +1 -0
- package/dist/tools/list-components.js +46 -0
- package/dist/tools/list-components.js.map +1 -0
- package/dist/tools/list-icon-libraries.d.ts +12 -0
- package/dist/tools/list-icon-libraries.d.ts.map +1 -0
- package/dist/tools/list-icon-libraries.js +48 -0
- package/dist/tools/list-icon-libraries.js.map +1 -0
- package/dist/tools/list-screen-templates.d.ts +15 -0
- package/dist/tools/list-screen-templates.d.ts.map +1 -0
- package/dist/tools/list-screen-templates.js +63 -0
- package/dist/tools/list-screen-templates.js.map +1 -0
- package/dist/tools/list-themes.d.ts +13 -0
- package/dist/tools/list-themes.d.ts.map +1 -0
- package/dist/tools/list-themes.js +42 -0
- package/dist/tools/list-themes.js.map +1 -0
- package/dist/tools/list-tokens.d.ts +13 -0
- package/dist/tools/list-tokens.d.ts.map +1 -0
- package/dist/tools/list-tokens.js +92 -0
- package/dist/tools/list-tokens.js.map +1 -0
- package/dist/tools/preview-component.d.ts +18 -0
- package/dist/tools/preview-component.d.ts.map +1 -0
- package/dist/tools/preview-component.js +178 -0
- package/dist/tools/preview-component.js.map +1 -0
- package/dist/tools/preview-icon-library.d.ts +13 -0
- package/dist/tools/preview-icon-library.d.ts.map +1 -0
- package/dist/tools/preview-icon-library.js +63 -0
- package/dist/tools/preview-icon-library.js.map +1 -0
- package/dist/tools/preview-screen-template.d.ts +18 -0
- package/dist/tools/preview-screen-template.d.ts.map +1 -0
- package/dist/tools/preview-screen-template.js +101 -0
- package/dist/tools/preview-screen-template.js.map +1 -0
- package/dist/tools/preview-theme.d.ts +15 -0
- package/dist/tools/preview-theme.d.ts.map +1 -0
- package/dist/tools/preview-theme.js +71 -0
- package/dist/tools/preview-theme.js.map +1 -0
- package/dist/tools/validate-environment.d.ts +37 -0
- package/dist/tools/validate-environment.d.ts.map +1 -0
- package/dist/tools/validate-environment.js +153 -0
- package/dist/tools/validate-environment.js.map +1 -0
- package/dist/tools/validate-screen-definition.d.ts +10 -0
- package/dist/tools/validate-screen-definition.d.ts.map +1 -0
- package/dist/tools/validate-screen-definition.js +463 -0
- package/dist/tools/validate-screen-definition.js.map +1 -0
- package/dist/tools/validate-screen.d.ts +13 -0
- package/dist/tools/validate-screen.d.ts.map +1 -0
- package/dist/tools/validate-screen.js +106 -0
- package/dist/tools/validate-screen.js.map +1 -0
- package/dist/utils/dependency-extractor.d.ts +13 -0
- package/dist/utils/dependency-extractor.d.ts.map +1 -0
- package/dist/utils/dependency-extractor.js +232 -0
- package/dist/utils/dependency-extractor.js.map +1 -0
- package/dist/utils/error-handler.d.ts +29 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +48 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +14 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/package-json-reader.d.ts +37 -0
- package/dist/utils/package-json-reader.d.ts.map +1 -0
- package/dist/utils/package-json-reader.js +108 -0
- package/dist/utils/package-json-reader.js.map +1 -0
- package/dist/utils/tailwind-config-reader.d.ts +23 -0
- package/dist/utils/tailwind-config-reader.d.ts.map +1 -0
- package/dist/utils/tailwind-config-reader.js +81 -0
- package/dist/utils/tailwind-config-reader.js.map +1 -0
- 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"}
|