@amedia/brick-mcp 1.0.0 → 1.0.2

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 (38) hide show
  1. package/data/components/brick-alt-teaser.md +9 -4
  2. package/data/components/brick-button.md +3 -2
  3. package/data/components/brick-byline.md +138 -0
  4. package/data/components/brick-carousel.md +8 -6
  5. package/data/components/brick-classnames.md +19 -14
  6. package/data/components/brick-dialog.md +3 -3
  7. package/data/components/brick-expand.md +129 -0
  8. package/data/components/brick-illustrations.md +6 -5
  9. package/data/components/brick-pill.md +9 -7
  10. package/data/components/brick-player.md +6 -3
  11. package/data/components/brick-share.md +5 -2
  12. package/data/components/brick-skip-link.md +78 -0
  13. package/data/components/brick-stepper.md +2 -2
  14. package/data/components/brick-teaser.md +8 -7
  15. package/data/components/brick-tokens.md +12 -8
  16. package/data/components-metadata.json +41 -29
  17. package/data/tokens-documentation.json +4 -5
  18. package/data/tokens.json +8 -0
  19. package/dist/data/components/brick-alt-teaser.md +9 -4
  20. package/dist/data/components/brick-button.md +3 -2
  21. package/dist/data/components/brick-byline.md +138 -0
  22. package/dist/data/components/brick-carousel.md +8 -6
  23. package/dist/data/components/brick-classnames.md +19 -14
  24. package/dist/data/components/brick-dialog.md +3 -3
  25. package/dist/data/components/brick-expand.md +129 -0
  26. package/dist/data/components/brick-illustrations.md +6 -5
  27. package/dist/data/components/brick-pill.md +9 -7
  28. package/dist/data/components/brick-player.md +6 -3
  29. package/dist/data/components/brick-share.md +5 -2
  30. package/dist/data/components/brick-skip-link.md +78 -0
  31. package/dist/data/components/brick-stepper.md +2 -2
  32. package/dist/data/components/brick-teaser.md +8 -7
  33. package/dist/data/components/brick-tokens.md +12 -8
  34. package/dist/data/components-metadata.json +41 -29
  35. package/dist/data/tokens-documentation.json +4 -5
  36. package/dist/data/tokens.json +8 -0
  37. package/package.json +34 -34
  38. package/scripts/check-docs-versions.js +121 -0
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@amedia/brick-mcp",
3
3
  "homepage": "https://github.com/amedia/brick.git",
4
4
  "author": "Amedia",
5
- "version": "1.0.0",
5
+ "version": "1.0.2",
6
6
  "description": "This is a MCP server for Brick",
7
7
  "license": "MIT",
8
8
  "type": "module",
@@ -34,47 +34,47 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@fastify/cors": "11.1.0",
37
- "@modelcontextprotocol/sdk": "1.26.0",
38
- "fastify": "5.7.3",
37
+ "@modelcontextprotocol/sdk": "1.27.1",
38
+ "fastify": "5.8.2",
39
39
  "zod": "3.25.76",
40
40
  "zod-to-json-schema": "3.24.6"
41
41
  },
42
42
  "devDependencies": {
43
- "@amedia/brick-alt-teaser": "8.1.17",
44
- "@amedia/brick-avatar": "0.2.55",
45
- "@amedia/brick-button": "9.4.13",
46
- "@amedia/brick-byline": "1.0.17",
47
- "@amedia/brick-card": "7.3.27",
48
- "@amedia/brick-carousel": "2.3.0",
43
+ "@amedia/brick-alt-teaser": "8.1.23",
44
+ "@amedia/brick-avatar": "0.2.60",
45
+ "@amedia/brick-button": "9.4.18",
46
+ "@amedia/brick-byline": "1.0.22",
47
+ "@amedia/brick-card": "7.3.32",
48
+ "@amedia/brick-carousel": "2.3.5",
49
49
  "@amedia/brick-classnames": "3.0.2",
50
- "@amedia/brick-countdown": "3.0.2",
51
- "@amedia/brick-dialog": "2.1.10",
52
- "@amedia/brick-expand": "0.0.22",
50
+ "@amedia/brick-countdown": "3.0.7",
51
+ "@amedia/brick-dialog": "2.1.15",
52
+ "@amedia/brick-expand": "0.0.27",
53
53
  "@amedia/brick-fonts": "2.0.2",
54
- "@amedia/brick-helloworld": "2.0.20",
55
- "@amedia/brick-icon": "2.3.19",
56
- "@amedia/brick-icons": "2.2.4",
54
+ "@amedia/brick-helloworld": "2.0.28",
55
+ "@amedia/brick-icon": "2.3.24",
56
+ "@amedia/brick-icons": "2.2.5",
57
57
  "@amedia/brick-illustrations": "1.3.0",
58
- "@amedia/brick-image": "6.0.22",
59
- "@amedia/brick-input": "4.0.1",
60
- "@amedia/brick-pill": "10.1.1",
61
- "@amedia/brick-player": "2.3.2",
62
- "@amedia/brick-published": "4.0.18",
63
- "@amedia/brick-share": "0.3.23",
64
- "@amedia/brick-stepper": "1.1.4",
65
- "@amedia/brick-tab": "0.1.25",
66
- "@amedia/brick-tabs": "0.1.26",
67
- "@amedia/brick-tag": "0.0.25",
68
- "@amedia/brick-teaser": "22.0.9",
69
- "@amedia/brick-teaser-player": "1.1.14",
70
- "@amedia/brick-teaser-reels": "0.4.16",
58
+ "@amedia/brick-image": "6.0.27",
59
+ "@amedia/brick-input": "4.0.7",
60
+ "@amedia/brick-pill": "10.1.6",
61
+ "@amedia/brick-player": "2.4.3",
62
+ "@amedia/brick-published": "4.0.23",
63
+ "@amedia/brick-share": "0.4.3",
64
+ "@amedia/brick-stepper": "1.1.9",
65
+ "@amedia/brick-tab": "0.1.30",
66
+ "@amedia/brick-tabs": "0.1.31",
67
+ "@amedia/brick-tag": "0.0.30",
68
+ "@amedia/brick-teaser": "22.2.9",
69
+ "@amedia/brick-teaser-player": "1.1.20",
70
+ "@amedia/brick-teaser-reels": "0.4.22",
71
71
  "@amedia/brick-template": "2.0.1",
72
- "@amedia/brick-textarea": "2.0.21",
72
+ "@amedia/brick-textarea": "2.0.26",
73
73
  "@amedia/brick-themes": "1.0.2",
74
- "@amedia/brick-toast": "0.1.39",
75
- "@amedia/brick-toggle": "3.1.25",
76
- "@amedia/brick-tokens": "6.0.11",
77
- "@amedia/brick-tooltip": "1.0.28"
74
+ "@amedia/brick-toast": "0.1.44",
75
+ "@amedia/brick-toggle": "3.1.32",
76
+ "@amedia/brick-tokens": "6.2.1",
77
+ "@amedia/brick-tooltip": "1.0.33"
78
78
  },
79
79
  "eik": {
80
80
  "server": "https://assets.acdn.no",
@@ -83,4 +83,4 @@
83
83
  "brick-mcp.js.map": "./dist/index.js.map"
84
84
  }
85
85
  }
86
- }
86
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Check if component documentation is outdated relative to current package versions.
3
+ * Compares version in each .md frontmatter against components-metadata.json.
4
+ * Warns (does not fail) when major or minor version has changed.
5
+ *
6
+ * Run after generate-data.js so that components-metadata.json is up to date.
7
+ */
8
+
9
+ import { readdir, readFile } from 'node:fs/promises';
10
+ import { join, dirname } from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+
16
+ const DATA_DIR = join(__dirname, '..', 'data');
17
+ const COMPONENTS_DIR = join(DATA_DIR, 'components');
18
+
19
+ /**
20
+ * Parse the version from YAML frontmatter in a markdown file.
21
+ * Returns null if no version field is found.
22
+ */
23
+ function parseVersionFromFrontmatter(content) {
24
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
25
+ if (!match) return null;
26
+ const versionMatch = match[1].match(/^version:\s*(.+)$/m);
27
+ return versionMatch ? versionMatch[1].trim() : null;
28
+ }
29
+
30
+ /**
31
+ * Compare two semver strings.
32
+ * Returns 'major', 'minor', 'patch', or 'none'.
33
+ */
34
+ function compareVersions(docVersion, packageVersion) {
35
+ const [docMajor, docMinor] = docVersion.split('.').map(Number);
36
+ const [pkgMajor, pkgMinor] = packageVersion.split('.').map(Number);
37
+
38
+ if (pkgMajor !== docMajor) return 'major';
39
+ if (pkgMinor !== docMinor) return 'minor';
40
+ return 'patch';
41
+ }
42
+
43
+ async function main() {
44
+ const metadataPath = join(DATA_DIR, 'components-metadata.json');
45
+ const metadataContent = await readFile(metadataPath, 'utf-8');
46
+ const metadata = JSON.parse(metadataContent);
47
+
48
+ // Build a lookup map: component name → current version
49
+ const currentVersions = Object.fromEntries(
50
+ metadata.map((c) => [c.name, c.version])
51
+ );
52
+
53
+ const mdFiles = (await readdir(COMPONENTS_DIR)).filter((f) =>
54
+ f.endsWith('.md')
55
+ );
56
+
57
+ const stale = [];
58
+ const missing = [];
59
+ const upToDate = [];
60
+
61
+ for (const file of mdFiles) {
62
+ const componentName = file.replace('.md', '');
63
+
64
+ // Skip components not in metadata (e.g. orphaned docs)
65
+ if (!(componentName in currentVersions)) {
66
+ continue;
67
+ }
68
+
69
+ const content = await readFile(join(COMPONENTS_DIR, file), 'utf-8');
70
+ const docVersion = parseVersionFromFrontmatter(content);
71
+ const packageVersion = currentVersions[componentName];
72
+
73
+ if (!docVersion) {
74
+ missing.push(componentName);
75
+ continue;
76
+ }
77
+
78
+ const changeType = compareVersions(docVersion, packageVersion);
79
+
80
+ if (changeType === 'major' || changeType === 'minor') {
81
+ stale.push({ name: componentName, docVersion, packageVersion, changeType });
82
+ } else {
83
+ upToDate.push(componentName);
84
+ }
85
+ }
86
+
87
+ // Check for components in metadata that have no .md file at all
88
+ const existingMdNames = new Set(mdFiles.map((f) => f.replace('.md', '')));
89
+ for (const name of Object.keys(currentVersions)) {
90
+ if (!existingMdNames.has(name)) {
91
+ stale.push({
92
+ name,
93
+ docVersion: '(none)',
94
+ packageVersion: currentVersions[name],
95
+ changeType: 'missing',
96
+ });
97
+ }
98
+ }
99
+
100
+ console.log(`\nšŸ“‹ MCP Docs Version Check`);
101
+ console.log(` Checked: ${mdFiles.length} files\n`);
102
+
103
+ if (stale.length > 0) {
104
+ console.warn(`āš ļø Stale MCP docs (${stale.length} component${stale.length > 1 ? 's' : ''}):`);
105
+ for (const { name, docVersion, packageVersion, changeType } of stale) {
106
+ console.warn(
107
+ ` ${name}: docs ${docVersion} → package ${packageVersion} (${changeType} change)`
108
+ );
109
+ }
110
+ console.warn(
111
+ `\n Run the prompt in prompts/update-component-docs.md to regenerate.\n`
112
+ );
113
+ } else {
114
+ console.log(`āœ… All MCP docs are up to date`);
115
+ }
116
+ }
117
+
118
+ main().catch((err) => {
119
+ console.error('Error checking docs versions:', err);
120
+ process.exit(1);
121
+ });