mozaic-mcp-server 2.1.1 → 2.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 (55) hide show
  1. package/README.md +15 -7
  2. package/SKILLS.md +75 -5
  3. package/bin/install-skills.js +2 -0
  4. package/data/mozaic.db +0 -0
  5. package/dist/__tests__/tools.integration.test.js +85 -0
  6. package/dist/__tests__/tools.integration.test.js.map +1 -1
  7. package/dist/index.js +115 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/parsers/freemarker-parser.d.ts +25 -0
  10. package/dist/parsers/freemarker-parser.d.ts.map +1 -0
  11. package/dist/parsers/freemarker-parser.js +299 -0
  12. package/dist/parsers/freemarker-parser.js.map +1 -0
  13. package/dist/parsers/web-components-parser.d.ts +3 -0
  14. package/dist/parsers/web-components-parser.d.ts.map +1 -0
  15. package/dist/parsers/web-components-parser.js +503 -0
  16. package/dist/parsers/web-components-parser.js.map +1 -0
  17. package/dist/tools/generate-freemarker.d.ts +32 -0
  18. package/dist/tools/generate-freemarker.d.ts.map +1 -0
  19. package/dist/tools/generate-freemarker.js +146 -0
  20. package/dist/tools/generate-freemarker.js.map +1 -0
  21. package/dist/tools/generate-webcomponent.d.ts +38 -0
  22. package/dist/tools/generate-webcomponent.d.ts.map +1 -0
  23. package/dist/tools/generate-webcomponent.js +83 -0
  24. package/dist/tools/generate-webcomponent.js.map +1 -0
  25. package/dist/tools/get-component-info.d.ts +1 -1
  26. package/dist/tools/get-component-info.d.ts.map +1 -1
  27. package/dist/tools/get-component-info.js +9 -1
  28. package/dist/tools/get-component-info.js.map +1 -1
  29. package/dist/tools/get-freemarker-info.d.ts +27 -0
  30. package/dist/tools/get-freemarker-info.d.ts.map +1 -0
  31. package/dist/tools/get-freemarker-info.js +161 -0
  32. package/dist/tools/get-freemarker-info.js.map +1 -0
  33. package/dist/tools/get-webcomponent-info.d.ts +52 -0
  34. package/dist/tools/get-webcomponent-info.d.ts.map +1 -0
  35. package/dist/tools/get-webcomponent-info.js +170 -0
  36. package/dist/tools/get-webcomponent-info.js.map +1 -0
  37. package/dist/tools/list-freemarker.d.ts +23 -0
  38. package/dist/tools/list-freemarker.d.ts.map +1 -0
  39. package/dist/tools/list-freemarker.js +97 -0
  40. package/dist/tools/list-freemarker.js.map +1 -0
  41. package/dist/tools/list-webcomponents.d.ts +32 -0
  42. package/dist/tools/list-webcomponents.d.ts.map +1 -0
  43. package/dist/tools/list-webcomponents.js +110 -0
  44. package/dist/tools/list-webcomponents.js.map +1 -0
  45. package/package.json +1 -1
  46. package/skills/mozaic-freemarker-builder/scripts/generate-component.sh +27 -0
  47. package/skills/mozaic-freemarker-builder/scripts/get-component.sh +28 -0
  48. package/skills/mozaic-freemarker-builder/scripts/list-components.sh +13 -0
  49. package/skills/mozaic-freemarker-builder/scripts/search-components.sh +14 -0
  50. package/skills/mozaic-freemarker-builder/skill.md +145 -0
  51. package/skills/mozaic-webcomponents-builder/scripts/generate-component.sh +67 -0
  52. package/skills/mozaic-webcomponents-builder/scripts/get-component.sh +105 -0
  53. package/skills/mozaic-webcomponents-builder/scripts/list-components.sh +42 -0
  54. package/skills/mozaic-webcomponents-builder/scripts/search-components.sh +34 -0
  55. package/skills/mozaic-webcomponents-builder/skill.md +292 -0
@@ -0,0 +1,299 @@
1
+ import { join, basename } from "path";
2
+ import { readdirSync, readFileSync, statSync } from "fs";
3
+ /**
4
+ * Find all .ftl macro files in the macros directory
5
+ */
6
+ function findMacroFiles(macrosPath) {
7
+ const mozaicPath = join(macrosPath, "mozaic");
8
+ try {
9
+ const files = readdirSync(mozaicPath);
10
+ return files
11
+ .filter((file) => file.endsWith(".ftl") && file !== "common-macro.ftl" && file !== "icons.ftl")
12
+ .map((file) => join(mozaicPath, file));
13
+ }
14
+ catch (error) {
15
+ console.error(`Failed to read macros directory: ${macrosPath}`, error);
16
+ return [];
17
+ }
18
+ }
19
+ /**
20
+ * Load JSON token file for a component if it exists
21
+ */
22
+ function loadTokenFile(tokensPath, componentName) {
23
+ const tokenFilePath = join(tokensPath, `${componentName}.json`);
24
+ try {
25
+ const content = readFileSync(tokenFilePath, "utf-8");
26
+ return JSON.parse(content);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Extract macro name from .ftl file content
34
+ * Example: <#macro button config={} dataSup...> => "button"
35
+ */
36
+ function extractMacroName(content) {
37
+ const macroMatch = content.match(/<#macro\s+(\w+)\s+/);
38
+ return macroMatch ? macroMatch[1] : null;
39
+ }
40
+ /**
41
+ * Extract parameter documentation from comment block
42
+ * Parses the configuration object structure from comments
43
+ */
44
+ function extractParametersFromComments(content) {
45
+ const params = [];
46
+ // Look for configuration object in comments
47
+ // Example: "color": "standard", // optional - "standard" (default) | "accent"
48
+ const configBlockMatch = content.match(/<#--[\s\S]*?<#assign\s+\w+\s*=\s*{([\s\S]*?)}/);
49
+ if (configBlockMatch) {
50
+ const configContent = configBlockMatch[1];
51
+ const paramMatches = configContent.matchAll(/"(\w+)":\s*([^,\n]+),?\s*\/\/\s*(optional|required)?\s*-?\s*([^\n]+)?/g);
52
+ for (const match of paramMatches) {
53
+ const [, name, defaultVal, requiredFlag, description] = match;
54
+ params.push({
55
+ name,
56
+ type: inferType(defaultVal.trim()),
57
+ description: description?.trim() || "",
58
+ required: requiredFlag === "required",
59
+ defaultValue: cleanDefaultValue(defaultVal.trim()),
60
+ });
61
+ }
62
+ }
63
+ // Also look for nested config objects (like icon: { ... })
64
+ const nestedConfigMatches = content.matchAll(/"(\w+)":\s*{([^}]+)}/g);
65
+ for (const match of nestedConfigMatches) {
66
+ const [, name, nestedContent] = match;
67
+ params.push({
68
+ name,
69
+ type: "object",
70
+ description: `Nested configuration object for ${name}`,
71
+ required: false,
72
+ defaultValue: null,
73
+ });
74
+ // Parse nested properties
75
+ const nestedParams = nestedContent.matchAll(/"(\w+)":\s*([^,\n]+),?\s*\/\/\s*(optional|required)?\s*-?\s*([^\n]+)?/g);
76
+ for (const nestedMatch of nestedParams) {
77
+ const [, nestedName, nestedDefaultVal, nestedRequiredFlag, nestedDescription] = nestedMatch;
78
+ params.push({
79
+ name: `${name}.${nestedName}`,
80
+ type: inferType(nestedDefaultVal.trim()),
81
+ description: nestedDescription?.trim() || "",
82
+ required: nestedRequiredFlag === "required",
83
+ defaultValue: cleanDefaultValue(nestedDefaultVal.trim()),
84
+ });
85
+ }
86
+ }
87
+ return params;
88
+ }
89
+ /**
90
+ * Infer parameter type from default value
91
+ */
92
+ function inferType(value) {
93
+ if (value === "true" || value === "false")
94
+ return "boolean";
95
+ if (value.match(/^\d+$/))
96
+ return "number";
97
+ if (value.startsWith('"') || value.startsWith("'"))
98
+ return "string";
99
+ if (value.startsWith("{"))
100
+ return "object";
101
+ if (value.startsWith("["))
102
+ return "array";
103
+ return "string";
104
+ }
105
+ /**
106
+ * Clean default value for storage
107
+ */
108
+ function cleanDefaultValue(value) {
109
+ if (!value || value === "false" || value === '""' || value === "''")
110
+ return null;
111
+ // Remove quotes from strings
112
+ if (value.startsWith('"') && value.endsWith('"')) {
113
+ return value.slice(1, -1);
114
+ }
115
+ if (value.startsWith("'") && value.endsWith("'")) {
116
+ return value.slice(1, -1);
117
+ }
118
+ return value;
119
+ }
120
+ /**
121
+ * Determine component category based on name and content
122
+ */
123
+ function determineCategory(name, content) {
124
+ const lowerName = name.toLowerCase();
125
+ // Action components
126
+ if (lowerName.includes("button") || lowerName.includes("link") || lowerName.includes("action")) {
127
+ return "action";
128
+ }
129
+ // Form components
130
+ if (content.includes("mc-field") ||
131
+ lowerName.includes("input") ||
132
+ lowerName.includes("checkbox") ||
133
+ lowerName.includes("radio") ||
134
+ lowerName.includes("select") ||
135
+ lowerName.includes("field") ||
136
+ lowerName.includes("form") ||
137
+ lowerName.includes("datepicker") ||
138
+ lowerName.includes("fileuploader")) {
139
+ return "form";
140
+ }
141
+ // Feedback components
142
+ if (lowerName.includes("notification") ||
143
+ lowerName.includes("message") ||
144
+ lowerName.includes("status") ||
145
+ lowerName.includes("badge") ||
146
+ lowerName.includes("flag") ||
147
+ lowerName.includes("loader") ||
148
+ lowerName.includes("progress") ||
149
+ lowerName.includes("toaster") ||
150
+ lowerName.includes("tooltip")) {
151
+ return "feedback";
152
+ }
153
+ // Navigation components
154
+ if (lowerName.includes("nav") ||
155
+ lowerName.includes("breadcrumb") ||
156
+ lowerName.includes("tab") ||
157
+ lowerName.includes("pagination") ||
158
+ lowerName.includes("stepper") ||
159
+ lowerName.includes("menu")) {
160
+ return "navigation";
161
+ }
162
+ // Layout components
163
+ if (lowerName.includes("container") ||
164
+ lowerName.includes("divider") ||
165
+ lowerName.includes("modal") ||
166
+ lowerName.includes("drawer") ||
167
+ lowerName.includes("accordion") ||
168
+ lowerName.includes("popover")) {
169
+ return "layout";
170
+ }
171
+ // Data display components
172
+ if (lowerName.includes("card") ||
173
+ lowerName.includes("tile") ||
174
+ lowerName.includes("image") ||
175
+ lowerName.includes("avatar") ||
176
+ lowerName.includes("logo") ||
177
+ lowerName.includes("carousel") ||
178
+ lowerName.includes("callout") ||
179
+ lowerName.includes("tag") ||
180
+ lowerName.includes("rating")) {
181
+ return "data-display";
182
+ }
183
+ return "other";
184
+ }
185
+ /**
186
+ * Extract description from comment block at the top of the file
187
+ */
188
+ function extractDescription(content) {
189
+ // Look for the main comment block with component description
190
+ const commentMatch = content.match(/<#--\s*\n([A-Z\s]+)\n([\s\S]*?)-->/);
191
+ if (commentMatch) {
192
+ const title = commentMatch[1].trim();
193
+ const description = commentMatch[2].trim();
194
+ // Get first sentence or line of description
195
+ const firstLine = description.split("\n")[0].trim();
196
+ return firstLine || title;
197
+ }
198
+ return "";
199
+ }
200
+ /**
201
+ * Convert component name to slug format
202
+ */
203
+ function toSlug(name) {
204
+ return name
205
+ .toLowerCase()
206
+ .replace(/([A-Z])/g, "-$1")
207
+ .replace(/^-/, "");
208
+ }
209
+ /**
210
+ * Parse a single Freemarker macro file
211
+ */
212
+ function parseMacroFile(macro) {
213
+ const macroName = extractMacroName(macro.content) || basename(macro.filePath, ".ftl");
214
+ const params = extractParametersFromComments(macro.content);
215
+ const category = determineCategory(macroName, macro.content);
216
+ const description = extractDescription(macro.content);
217
+ // Convert parameters to props format
218
+ const props = params.map((param) => ({
219
+ name: param.name,
220
+ type: param.type,
221
+ description: param.description,
222
+ required: param.required,
223
+ default_value: param.defaultValue,
224
+ }));
225
+ // Extract CSS classes used in the component
226
+ const cssClasses = [];
227
+ if (macro.tokenData) {
228
+ Object.values(macro.tokenData).forEach((className) => {
229
+ if (typeof className === "string" && className.startsWith("mc-")) {
230
+ cssClasses.push(className);
231
+ }
232
+ });
233
+ }
234
+ // Extract additional classes from template content
235
+ const classMatches = macro.content.matchAll(/class=["']([^"']+)["']/g);
236
+ for (const match of classMatches) {
237
+ const classes = match[1].split(" ");
238
+ classes.forEach((cls) => {
239
+ if (cls.startsWith("mc-") && !cssClasses.includes(cls)) {
240
+ cssClasses.push(cls);
241
+ }
242
+ });
243
+ }
244
+ return {
245
+ name: macroName.charAt(0).toUpperCase() + macroName.slice(1) + " (Freemarker)",
246
+ slug: toSlug(macroName),
247
+ category,
248
+ description,
249
+ frameworks: ["freemarker"],
250
+ props,
251
+ slots: [], // Freemarker uses <#nested> for slot-like content
252
+ events: [], // Freemarker doesn't have events in the same way as JS frameworks
253
+ css_classes: [...new Set(cssClasses)],
254
+ examples: [],
255
+ };
256
+ }
257
+ /**
258
+ * Main parser function for Freemarker components
259
+ */
260
+ export async function parseFreemarkerComponents(repoPath) {
261
+ const components = [];
262
+ const macrosPath = join(repoPath, "mozaic-freemarker/src/main/resources/macros");
263
+ const tokensPath = join(repoPath, "js/tokens");
264
+ // Check if paths exist
265
+ try {
266
+ statSync(macrosPath);
267
+ }
268
+ catch {
269
+ console.error(`Macros path not found: ${macrosPath}`);
270
+ return [];
271
+ }
272
+ console.log("Parsing Freemarker macros from:", macrosPath);
273
+ const macroFiles = findMacroFiles(macrosPath);
274
+ console.log(`Found ${macroFiles.length} macro files`);
275
+ for (const filePath of macroFiles) {
276
+ try {
277
+ const content = readFileSync(filePath, "utf-8");
278
+ const fileName = basename(filePath, ".ftl");
279
+ const tokenData = loadTokenFile(tokensPath, fileName);
280
+ const macro = {
281
+ name: fileName,
282
+ filePath,
283
+ content,
284
+ tokenData,
285
+ };
286
+ const component = parseMacroFile(macro);
287
+ if (component.name) {
288
+ components.push(component);
289
+ console.log(`✓ Parsed: ${component.name} (${component.props.length} props)`);
290
+ }
291
+ }
292
+ catch (error) {
293
+ console.error(`Failed to parse ${filePath}:`, error);
294
+ }
295
+ }
296
+ console.log(`\nTotal Freemarker components parsed: ${components.length}`);
297
+ return components;
298
+ }
299
+ //# sourceMappingURL=freemarker-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freemarker-parser.js","sourceRoot":"","sources":["../../src/parsers/freemarker-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Component } from "../db/queries.js";
2
+ export declare function parseWebComponents(componentsPath: string): Promise<Component[]>;
3
+ //# sourceMappingURL=web-components-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-components-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/web-components-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,kBAAkB,CAAC;AAqjBhG,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2ErF"}