wavemaker-dev-mcp 0.1.3 → 1.0.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 (111) hide show
  1. package/README.md +75 -52
  2. package/dist/index.js +108 -177
  3. package/dist/index.js.map +1 -1
  4. package/dist/skills/loader.d.ts +36 -0
  5. package/dist/skills/loader.d.ts.map +1 -0
  6. package/dist/skills/loader.js +107 -0
  7. package/dist/skills/loader.js.map +1 -0
  8. package/package.json +8 -4
  9. package/skills/components/wm-accordion-pane.md +44 -0
  10. package/skills/components/wm-accordion.md +43 -0
  11. package/skills/components/wm-alert-dialog.md +42 -0
  12. package/skills/components/wm-anchor.md +51 -0
  13. package/skills/components/wm-audio.md +41 -0
  14. package/skills/components/wm-button-group.md +36 -0
  15. package/skills/components/wm-button.md +114 -0
  16. package/skills/components/wm-calendar.md +54 -0
  17. package/skills/components/wm-card.md +60 -0
  18. package/skills/components/wm-carousel.md +43 -0
  19. package/skills/components/wm-chart.md +104 -0
  20. package/skills/components/wm-checkbox.md +52 -0
  21. package/skills/components/wm-checkboxset.md +75 -0
  22. package/skills/components/wm-chips.md +78 -0
  23. package/skills/components/wm-composite.md +30 -0
  24. package/skills/components/wm-confirm-dialog.md +43 -0
  25. package/skills/components/wm-container.md +100 -0
  26. package/skills/components/wm-currency.md +69 -0
  27. package/skills/components/wm-datatable.md +146 -0
  28. package/skills/components/wm-date-time.md +80 -0
  29. package/skills/components/wm-date.md +78 -0
  30. package/skills/components/wm-dialog-body.md +28 -0
  31. package/skills/components/wm-dialog-container.md +48 -0
  32. package/skills/components/wm-dialog-content.md +31 -0
  33. package/skills/components/wm-dialog-footer.md +28 -0
  34. package/skills/components/wm-dialog-header.md +43 -0
  35. package/skills/components/wm-dialog.md +40 -0
  36. package/skills/components/wm-file-upload.md +58 -0
  37. package/skills/components/wm-footer.md +31 -0
  38. package/skills/components/wm-form-field.md +81 -0
  39. package/skills/components/wm-form.md +58 -0
  40. package/skills/components/wm-grid-column.md +30 -0
  41. package/skills/components/wm-header.md +31 -0
  42. package/skills/components/wm-html.md +31 -0
  43. package/skills/components/wm-icon.md +40 -0
  44. package/skills/components/wm-iframe-dialog.md +52 -0
  45. package/skills/components/wm-iframe.md +35 -0
  46. package/skills/components/wm-label.md +45 -0
  47. package/skills/components/wm-left-nav.md +35 -0
  48. package/skills/components/wm-linear-layout-item.md +28 -0
  49. package/skills/components/wm-linear-layout.md +92 -0
  50. package/skills/components/wm-list.md +92 -0
  51. package/skills/components/wm-live-filter.md +50 -0
  52. package/skills/components/wm-live-form.md +35 -0
  53. package/skills/components/wm-login-dialog.md +50 -0
  54. package/skills/components/wm-login.md +39 -0
  55. package/skills/components/wm-marquee.md +31 -0
  56. package/skills/components/wm-menu.md +71 -0
  57. package/skills/components/wm-message.md +41 -0
  58. package/skills/components/wm-nav-item.md +28 -0
  59. package/skills/components/wm-nav.md +61 -0
  60. package/skills/components/wm-number.md +62 -0
  61. package/skills/components/wm-page-content.md +34 -0
  62. package/skills/components/wm-page-dialog.md +45 -0
  63. package/skills/components/wm-page-toast.md +34 -0
  64. package/skills/components/wm-page.md +34 -0
  65. package/skills/components/wm-pagination.md +62 -0
  66. package/skills/components/wm-panel.md +69 -0
  67. package/skills/components/wm-partial-container.md +32 -0
  68. package/skills/components/wm-picture.md +46 -0
  69. package/skills/components/wm-popover.md +51 -0
  70. package/skills/components/wm-prefab-container.md +29 -0
  71. package/skills/components/wm-prefab.md +35 -0
  72. package/skills/components/wm-progress-bar.md +42 -0
  73. package/skills/components/wm-progress-circle.md +45 -0
  74. package/skills/components/wm-radioset.md +66 -0
  75. package/skills/components/wm-rating.md +76 -0
  76. package/skills/components/wm-rich-text-editor.md +36 -0
  77. package/skills/components/wm-right-nav.md +32 -0
  78. package/skills/components/wm-search.md +66 -0
  79. package/skills/components/wm-select.md +129 -0
  80. package/skills/components/wm-slider.md +53 -0
  81. package/skills/components/wm-spinner.md +43 -0
  82. package/skills/components/wm-tab-pane.md +45 -0
  83. package/skills/components/wm-table.md +113 -0
  84. package/skills/components/wm-tabs.md +48 -0
  85. package/skills/components/wm-text.md +65 -0
  86. package/skills/components/wm-textarea.md +47 -0
  87. package/skills/components/wm-tile.md +34 -0
  88. package/skills/components/wm-time.md +63 -0
  89. package/skills/components/wm-top-nav.md +31 -0
  90. package/skills/components/wm-tree.md +41 -0
  91. package/skills/components/wm-upload.md +42 -0
  92. package/skills/components/wm-video.md +48 -0
  93. package/skills/components/wm-wizard.md +59 -0
  94. package/skills/index.json +1151 -0
  95. package/skills/tokens/border.md +85 -0
  96. package/skills/tokens/colors.md +97 -0
  97. package/skills/tokens/elevation.md +73 -0
  98. package/skills/tokens/spacing.md +89 -0
  99. package/skills/tokens/typography.md +88 -0
  100. package/dist/components.d.ts +0 -17
  101. package/dist/components.d.ts.map +0 -1
  102. package/dist/components.js +0 -67
  103. package/dist/components.js.map +0 -1
  104. package/dist/paths.d.ts +0 -43
  105. package/dist/paths.d.ts.map +0 -1
  106. package/dist/paths.js +0 -103
  107. package/dist/paths.js.map +0 -1
  108. package/dist/search.d.ts +0 -15
  109. package/dist/search.d.ts.map +0 -1
  110. package/dist/search.js +0 -130
  111. package/dist/search.js.map +0 -1
package/README.md CHANGED
@@ -1,98 +1,121 @@
1
1
  # wavemaker-dev-mcp
2
2
 
3
- An MCP (Model Context Protocol) server that exposes **read-only** tools to search and read:
3
+ An MCP (Model Context Protocol) server that helps AI coding assistants generate WaveMaker React markup using pre-built skill documents. No repo checkout required — all component and token docs are bundled in the package.
4
4
 
5
- - **`@wavemaker/react-runtime`** component sources, `props.js` / `props.ts`, and references to widget names
6
- - **`@wavemaker/foundation-css`** or **`@wavemaker-ai/foundation-css`** — tokens, LESS, and CSS
7
- - **Layout helpers** — rule-based suggestions (component choice, spacing tokens, layout checks, sibling wrapper hints via `fix_layout_spacing`), plus a placeholder DOM analysis tool (replaceable with Playwright later)
8
-
9
- There are **no embeddings** and **no vector DB**. Search uses [ripgrep](https://github.com/BurntSushi/ripgrep) when available, with a Node.js fallback.
5
+ There are **no embeddings**, **no vector DB**, and **no live repo scanning**. Skills are generated from WaveMaker source repos and bundled at publish time.
10
6
 
11
7
  ## Requirements
12
8
 
13
9
  - Node.js 18+
14
- - A project that installs `@wavemaker/react-runtime` and (optionally) `@wavemaker/foundation-css` under `node_modules`
15
- - Optional: `rg` on `PATH` for faster search
10
+ - No additional configuration skill docs are bundled in the package.
16
11
 
17
12
  ## Install
18
13
 
19
14
  ```bash
20
- git clone <your-repo-url> wavemaker-dev-mcp
15
+ # From npm (recommended)
16
+ npx -y wavemaker-dev-mcp
17
+
18
+ # From source
19
+ git clone <repo-url> wavemaker-dev-mcp
21
20
  cd wavemaker-dev-mcp
22
21
  npm install
23
22
  npm run build
24
23
  ```
25
24
 
26
- The published npm package includes `dist/`; a git clone must run `npm run build` before using `dist/index.js` in MCP config.
25
+ ## Skills system
27
26
 
28
- ## Local testing (MCP Inspector)
27
+ Skills are pre-generated Markdown documents covering every WaveMaker component and design token group. They are bundled in the package under `skills/` — no live repo access needed.
28
+
29
+ ### Recommended LLM session workflow
30
+
31
+ 1. Call `list_skills` once at the start to load the component index (~500 tokens).
32
+ 2. Call `get_skill("WmSelect")` before generating markup for a specific component (~400–700 tokens per skill).
33
+ 3. Call `search_skills("sortable table with pagination")` when unsure which component to use.
29
34
 
30
- Use [@modelcontextprotocol/inspector](https://www.npmjs.com/package/@modelcontextprotocol/inspector) to exercise the server in a browser. The inspector expects **Node.js ≥ 22.7.5**.
35
+ ### Regenerating skills after repo updates
31
36
 
32
- From this repository root (after `npm run build` so `dist/index.js` exists):
37
+ Skills are generated from the react-runtime and foundation-css source repos. Run this after pulling updates:
33
38
 
39
+ **Option 1 — CLI args:**
34
40
  ```bash
35
- npx @modelcontextprotocol/inspector --config mcp.json --server wavemaker-dev
41
+ npm run generate-skills -- \
42
+ --runtime-path=/path/to/wavemaker-react-runtime \
43
+ --css-path=/path/to/wavemaker-foundation-css \
44
+ --force
36
45
  ```
37
46
 
38
- If `mcp.json` defines only this server, `--server wavemaker-dev` may be omitted. Open the UI URL printed in the terminal (default **http://localhost:6274**). When prompted, use the session token from the console to authenticate to the proxy.
47
+ **Option 2 env vars** (set once in your shell profile, then just run the script):
48
+ ```bash
49
+ # Add to ~/.zshrc or ~/.bashrc
50
+ export WM_REACT_RUNTIME_SOURCE=/path/to/wavemaker-react-runtime
51
+ export WM_FOUNDATION_CSS_SOURCE=/path/to/wavemaker-foundation-css
52
+ ```
39
53
 
40
- Point the server at your WaveMaker app or source clones by adding an `env` block to the `wavemaker-dev` entry in `mcp.json` (see **Environment variables** below), or set variables in your shell before the `npx` command.
54
+ ```bash
55
+ npm run generate-skills -- --force
56
+ ```
57
+
58
+ CLI args take priority over env vars. `--runtime-path` / `WM_REACT_RUNTIME_SOURCE` is required; `--css-path` / `WM_FOUNDATION_CSS_SOURCE` is optional (skips token doc generation if omitted).
59
+
60
+ | Flag | Description |
61
+ |------|-------------|
62
+ | `--force` | Regenerates all auto-generated skills. Hand-crafted skills (no `generated: true` in frontmatter) are always preserved. |
63
+ | `--dry-run` | Preview what would be written without touching any files. |
64
+
65
+ > These env vars are only used by the `generate-skills` script — the MCP server itself needs no configuration.
66
+
67
+ ## Local testing (MCP Inspector)
68
+
69
+ Use [@modelcontextprotocol/inspector](https://www.npmjs.com/package/@modelcontextprotocol/inspector) to exercise the server in a browser (requires Node.js ≥ 22.7.5):
70
+
71
+ ```bash
72
+ npm run build
73
+ npx @modelcontextprotocol/inspector --config mcp.json --server wavemaker-dev
74
+ ```
75
+
76
+ Open the URL printed in the terminal (default **http://localhost:6274**).
41
77
 
42
78
  ## Environment variables
43
79
 
80
+ The MCP server needs no environment variables. The following are only used by the `generate-skills` script:
81
+
44
82
  | Variable | Purpose |
45
83
  |----------|---------|
46
- | `WM_PROJECT_ROOT` | App root (directory containing `node_modules`). Used when the MCP process `cwd` is not your app. Overridden by the `workingDirectory` tool argument when set. |
47
- | `WM_REACT_RUNTIME_ROOT` | Absolute path to `@wavemaker/react-runtime` (skips `node_modules` lookup). |
48
- | `WM_FOUNDATION_CSS_ROOT` | Absolute path to the foundation-css package root. |
84
+ | `WM_REACT_RUNTIME_SOURCE` | Path to a local react-runtime source clone (used by `generate-skills`). |
85
+ | `WM_FOUNDATION_CSS_SOURCE` | Path to a local foundation-css source clone (used by `generate-skills`). |
49
86
 
50
87
  ## Tools
51
88
 
89
+ ### Skill tools (no repo required)
90
+
52
91
  | Tool | Description |
53
92
  |------|-------------|
54
- | `get_wavemaker_roots` | Show resolved paths for react-runtime and foundation-css. |
55
- | `search_wavemaker_runtime` | Search inside the react-runtime package (`pattern`, optional `fileGlob`, `maxResults`). |
56
- | `read_wavemaker_runtime_file` | Read a file relative to that package (e.g. `components/input/select/props.js`). |
57
- | `search_foundation_css` | Search inside foundation-css. |
58
- | `read_foundation_css_file` | Read a file relative to foundation-css. |
59
- | `find_wavemaker_component` | Given a name like `WmSelect` or `select`, list matching `props` paths and sample references under `components/`. |
60
- | `suggest_component` | Map layout intent (`layout`, `repeat`, `grouped`) to a component name (e.g. `WmGrid`, `WmList`, `WmCard`, `WmFlex`). |
61
- | `map_spacing` | Map a pixel value (`px`) to the nearest spacing token (`xs`–`xl`) and numeric value. |
62
- | `validate_layout` | Check a `layout` string and `code` snippet for common issues (e.g. row direction, `Wm*` components). |
63
- | `analyze_dom` | Returns mock header height, spacing, and alignment; intended as a stub until real DOM analysis is added. |
64
- | `enforce_spacing` | Given optional `type` (e.g. `card-group`, `section`) and `layout` (`row` / `column`), returns rule-based `gap` and `padding` tokens. |
65
- | `fix_layout_spacing` | Given optional `siblingsCount`, returns `WmFlex` with `direction: row` and `gap: lg` when count is greater than one; otherwise `{ wrapper: null }`. |
66
-
67
- ## Cursor
93
+ | `list_skills` | Returns the skill index: all component names, categories, summaries, and tags. Accepts optional `category` filter. |
94
+ | `get_skill` | Returns the full Markdown skill doc for a component (e.g. `WmSelect`, `WmLinearLayout`) or token group (e.g. `spacing`, `colors`). Case-insensitive, strips `Wm` prefix. |
95
+ | `search_skills` | Free-text search across all skills by intent (e.g. `"sortable table with pagination"`). Returns top-N matches with scores. |
96
+ | `skills_meta` | Returns skill index metadata: version, generated timestamp, source git hashes, component/token counts. |
68
97
 
69
- Add a **global** or **project** MCP config so the server runs with **`cwd` set to your WaveMaker app** (the folder that contains `node_modules`).
98
+ ### Layout / spacing tools
70
99
 
71
- Example (adjust absolute paths):
72
-
73
- ```json
74
- {
75
- "mcpServers": {
76
- "wavemaker-dev": {
77
- "command": "node",
78
- "args": ["/path/to/wavemaker-dev-mcp/dist/index.js"],
79
- "cwd": "/path/to/your-wm-react-app"
80
- }
81
- }
82
- }
83
- ```
100
+ | Tool | Description |
101
+ |------|-------------|
102
+ | `suggest_component` | Map layout intent (`layout`, `repeat`, `grouped`) to a WaveMaker component name and import path. |
103
+ | `map_spacing` | Map a pixel value to the nearest spacing token (`xs`–`xl`) and `WmLinearLayout` spacing value. |
104
+ | `validate_layout` | Check a layout string and code snippet for common issues (wrong prefix, missing direction). |
105
+ | `analyze_dom` | Returns mock header height, spacing, and alignment. Stub for future Playwright integration. |
106
+ | `enforce_spacing` | Given `type` (e.g. `card-group`, `section`) and `layout` (`row`/`column`), returns token-based gap and padding values. |
107
+ | `fix_layout_spacing` | Given `siblingsCount`, recommends wrapping siblings in `WmLinearLayout` + `WmLinearLayoutItem`. |
84
108
 
85
- If you cannot set `cwd`, set `WM_PROJECT_ROOT` to your app root (e.g. `env` in the MCP server entry, if your client supports it).
109
+ ## Cursor / Claude Code setup
86
110
 
87
- After publishing to npm, you can use:
111
+ Zero config — add to your MCP config and it works immediately:
88
112
 
89
113
  ```json
90
114
  {
91
115
  "mcpServers": {
92
116
  "wavemaker-dev": {
93
117
  "command": "npx",
94
- "args": ["-y", "wavemaker-dev-mcp"],
95
- "cwd": "/path/to/your-wm-react-app"
118
+ "args": ["-y", "wavemaker-dev-mcp"]
96
119
  }
97
120
  }
98
121
  }
@@ -100,7 +123,7 @@ After publishing to npm, you can use:
100
123
 
101
124
  ## Tests (Playwright)
102
125
 
103
- Integration tests spawn the server over stdio with the official MCP client and call tools. They expect a WaveMaker app at `../wm-react-base-app` (sibling directory) or set **`WM_TEST_APP_ROOT`** to an app root that contains `node_modules/@wavemaker/react-runtime`.
126
+ Integration tests spawn the actual server over stdio. All tests run standalone no WM repo checkout needed.
104
127
 
105
128
  ```bash
106
129
  npm run build
package/dist/index.js CHANGED
@@ -1,213 +1,144 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const node_fs_1 = __importDefault(require("node:fs"));
8
4
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
9
5
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
10
6
  const zod_1 = require("zod");
11
- const components_js_1 = require("./components.js");
12
- const paths_js_1 = require("./paths.js");
13
- const search_js_1 = require("./search.js");
14
7
  const layout_tools_js_1 = require("./layout-tools.js");
15
- function resolveProjectRoot(workingDirectory) {
16
- return workingDirectory ?? process.env.WM_PROJECT_ROOT?.trim() ?? process.cwd();
17
- }
18
- const MAX_READ_BYTES = 512 * 1024;
19
- const MAX_LINES_PREVIEW = 400;
20
- function readFileSlice(absolute, startLine, endLine) {
21
- const buf = node_fs_1.default.readFileSync(absolute);
22
- let text = buf.length > MAX_READ_BYTES ? buf.subarray(0, MAX_READ_BYTES).toString("utf8") : buf.toString("utf8");
23
- let truncated = buf.length > MAX_READ_BYTES;
24
- const lines = text.split(/\r?\n/);
25
- if (startLine !== undefined || endLine !== undefined) {
26
- const start = Math.max(1, startLine ?? 1) - 1;
27
- const end = endLine === undefined ? lines.length : Math.min(lines.length, endLine);
28
- const slice = lines.slice(start, end);
29
- if (slice.length > MAX_LINES_PREVIEW) {
30
- truncated = true;
31
- return { text: slice.slice(0, MAX_LINES_PREVIEW).join("\n"), truncated };
32
- }
33
- return { text: slice.join("\n"), truncated };
34
- }
35
- if (lines.length > MAX_LINES_PREVIEW) {
36
- return { text: lines.slice(0, MAX_LINES_PREVIEW).join("\n"), truncated: true };
37
- }
38
- return { text, truncated };
39
- }
40
- const workingDirSchema = zod_1.z
41
- .string()
42
- .optional()
43
- .describe("Project root (directory containing node_modules). Defaults to process.cwd(). Set when the MCP process cwd is not your app root.");
8
+ const loader_js_1 = require("./skills/loader.js");
44
9
  async function main() {
45
10
  const mcp = new mcp_js_1.McpServer({
46
11
  name: "wavemaker-dev-mcp",
47
- version: "0.1.0",
12
+ version: "0.1.4",
48
13
  title: "WaveMaker React & Foundation CSS",
49
14
  });
50
- mcp.registerTool("get_wavemaker_roots", {
51
- title: "Resolve WaveMaker package paths",
52
- description: "Returns resolved paths for react-runtime and foundation-css. Resolution order: WM_*_SOURCE (local clone) → WM_*_ROOT → node_modules. Call this first if searches fail.",
53
- inputSchema: { workingDirectory: workingDirSchema },
54
- }, async ({ workingDirectory }) => {
55
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
56
- const lines = [
57
- `projectRoot: ${roots.projectRoot}`,
58
- roots.reactRuntime
59
- ? `reactRuntime: ${roots.reactRuntime.path} [${roots.reactRuntime.resolution}]`
60
- : "reactRuntime: NOT FOUND (set WM_REACT_RUNTIME_SOURCE or WM_REACT_RUNTIME_ROOT, or install @wavemaker/react-runtime under node_modules)",
61
- roots.foundationCss
62
- ? `foundationCss: ${roots.foundationCss.path} [${roots.foundationCss.resolution}, ${roots.foundationCss.packageName}]`
63
- : "foundationCss: NOT FOUND (set WM_FOUNDATION_CSS_SOURCE or WM_FOUNDATION_CSS_ROOT, or install @wavemaker/foundation-css under node_modules)",
64
- ];
65
- return { content: [{ type: "text", text: lines.join("\n") }] };
66
- });
67
- mcp.registerTool("search_wavemaker_runtime", {
68
- title: "Search @wavemaker/react-runtime sources",
69
- description: "Ripgrep (or Node fallback) over the installed react-runtime package for symbols, props, or text. Use fileGlob like **/*.js or **/props.js to narrow scope.",
15
+ // ---------------------------------------------------------------------------
16
+ // Skill tools no repo checkout required
17
+ // ---------------------------------------------------------------------------
18
+ mcp.registerTool("list_skills", {
19
+ title: "List available WaveMaker component skills",
20
+ description: "Returns the index of pre-built component and token skill documents. " +
21
+ "Call this at the start of a code generation session to see what skills are available, " +
22
+ "then use get_skill to load the full document for a specific component.",
70
23
  inputSchema: {
71
- pattern: zod_1.z.string().describe("Regular expression or literal (Node fallback escapes if invalid regex)."),
72
- maxResults: zod_1.z.number().optional().describe("Max matches (default 40)."),
73
- fileGlob: zod_1.z.string().optional().describe("Optional glob relative to package root, e.g. **/props.js"),
74
- workingDirectory: workingDirSchema,
24
+ category: zod_1.z
25
+ .string()
26
+ .optional()
27
+ .describe('Filter by category: "container", "input", "form", "data", "basic", "layout", "navigation". Omit for all.'),
75
28
  },
76
- }, async ({ pattern, maxResults, fileGlob, workingDirectory }) => {
77
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
78
- if (!roots.reactRuntime) {
79
- return {
80
- isError: true,
81
- content: [{ type: "text", text: "react-runtime not found. Run get_wavemaker_roots or install @wavemaker/react-runtime." }],
82
- };
83
- }
84
- const max = Math.min(200, Math.max(1, maxResults ?? 40));
85
- const root = roots.reactRuntime.path;
86
- let matches = (0, search_js_1.searchWithRipgrep)(root, pattern, max, fileGlob);
87
- if (matches === null) {
88
- matches = await (0, search_js_1.searchWithNode)(root, pattern, max, fileGlob);
89
- }
90
- return { content: [{ type: "text", text: (0, search_js_1.formatMatches)("react-runtime", root, matches) }] };
29
+ }, async ({ category }) => {
30
+ const index = (0, loader_js_1.loadIndex)();
31
+ const components = category
32
+ ? index.components.filter((c) => c.category === category)
33
+ : index.components;
34
+ const out = {
35
+ skills_version: index.version,
36
+ generated: index.generated,
37
+ components: components.map((c) => ({
38
+ name: c.name,
39
+ category: c.category,
40
+ summary: c.summary,
41
+ tags: c.tags,
42
+ })),
43
+ tokens: index.tokens.map((t) => ({
44
+ name: t.name,
45
+ summary: t.summary,
46
+ tags: t.tags,
47
+ })),
48
+ };
49
+ return { content: [{ type: "text", text: JSON.stringify(out, null, 2) }] };
91
50
  });
92
- mcp.registerTool("read_wavemaker_runtime_file", {
93
- title: "Read a file under @wavemaker/react-runtime",
94
- description: "Read a file from the resolved react-runtime root (published package or local clone). Use components/... for npm installs or src/components/... when using WM_REACT_RUNTIME_SOURCE.",
51
+ mcp.registerTool("get_skill", {
52
+ title: "Get WaveMaker component or token skill document",
53
+ description: "Returns the full Markdown skill document for a component (e.g. WmSelect, WmLinearLayout) or token group (e.g. spacing, colors). " +
54
+ "Each document contains: usage examples, all key props with types and defaults, CSS token references, and common patterns. " +
55
+ "Case-insensitive; strips 'Wm' prefix automatically.",
95
56
  inputSchema: {
96
- relativePath: zod_1.z
57
+ name: zod_1.z
97
58
  .string()
98
- .describe("Path under react-runtime root, e.g. components/input/select/props.js or src/components/input/select/props.ts"),
99
- startLine: zod_1.z.number().optional().describe("1-based start line (optional)."),
100
- endLine: zod_1.z.number().optional().describe("1-based end line inclusive (optional)."),
101
- workingDirectory: workingDirSchema,
59
+ .describe('Component name (e.g. "WmSelect", "WmLinearLayout") or token group name (e.g. "spacing"). Case-insensitive.'),
102
60
  },
103
- }, async ({ relativePath, startLine, endLine, workingDirectory }) => {
104
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
105
- if (!roots.reactRuntime) {
106
- return {
107
- isError: true,
108
- content: [{ type: "text", text: "react-runtime not found." }],
109
- };
61
+ }, async ({ name }) => {
62
+ const component = (0, loader_js_1.findComponentSkill)(name);
63
+ if (component) {
64
+ const content = (0, loader_js_1.readSkillFile)(component.file);
65
+ return { content: [{ type: "text", text: content }] };
110
66
  }
111
- const check = (0, paths_js_1.safeReadUnderRoot)(roots.reactRuntime.path, relativePath);
112
- if (!check.ok) {
113
- return { isError: true, content: [{ type: "text", text: check.error }] };
67
+ const token = (0, loader_js_1.findTokenSkill)(name);
68
+ if (token) {
69
+ const content = (0, loader_js_1.readSkillFile)(token.file);
70
+ return { content: [{ type: "text", text: content }] };
114
71
  }
115
- if (!node_fs_1.default.existsSync(check.absolute) || !node_fs_1.default.statSync(check.absolute).isFile()) {
116
- return { isError: true, content: [{ type: "text", text: `Not a file: ${relativePath}` }] };
117
- }
118
- const { text, truncated } = readFileSlice(check.absolute, startLine, endLine);
119
- const header = `${check.absolute}${truncated ? "\n[truncated]" : ""}\n\n`;
120
- return { content: [{ type: "text", text: header + text }] };
72
+ const index = (0, loader_js_1.loadIndex)();
73
+ const available = [
74
+ ...index.components.map((c) => c.name),
75
+ ...index.tokens.map((t) => t.name),
76
+ ].join(", ");
77
+ return {
78
+ isError: true,
79
+ content: [
80
+ {
81
+ type: "text",
82
+ text: `No skill found for "${name}". Available: ${available}\nUse list_skills to browse all, or search_skills to find by intent.`,
83
+ },
84
+ ],
85
+ };
121
86
  });
122
- mcp.registerTool("search_foundation_css", {
123
- title: "Search @wavemaker/foundation-css (or @wavemaker-ai/foundation-css)",
124
- description: "Search tokens, LESS, and CSS under the foundation-css package for variables, classes, or snippets.",
87
+ mcp.registerTool("search_skills", {
88
+ title: "Search WaveMaker skills by intent or keyword",
89
+ description: "Searches skill documents by free-text query and returns the top matching components and token groups with summaries. " +
90
+ 'Use when you are not sure which component to use (e.g. "I need a sortable table", "dropdown with search", "flex row layout"). ' +
91
+ "Returns component names you can then pass to get_skill.",
125
92
  inputSchema: {
126
- pattern: zod_1.z.string(),
127
- maxResults: zod_1.z.number().optional(),
128
- fileGlob: zod_1.z.string().optional(),
129
- workingDirectory: workingDirSchema,
93
+ query: zod_1.z
94
+ .string()
95
+ .describe('Free-text intent or keyword, e.g. "sortable data grid with pagination" or "dropdown select input".'),
96
+ topN: zod_1.z
97
+ .number()
98
+ .optional()
99
+ .describe("Max results to return (default 5)."),
130
100
  },
131
- }, async ({ pattern, maxResults, fileGlob, workingDirectory }) => {
132
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
133
- if (!roots.foundationCss) {
101
+ }, async ({ query, topN }) => {
102
+ const results = (0, loader_js_1.searchSkills)(query, topN ?? 5);
103
+ if (results.length === 0) {
134
104
  return {
135
- isError: true,
136
105
  content: [
137
106
  {
138
107
  type: "text",
139
- text: "foundation-css not found. Install @wavemaker/foundation-css or set WM_FOUNDATION_CSS_ROOT.",
108
+ text: `No skills matched "${query}". Use list_skills to see all available components.`,
140
109
  },
141
110
  ],
142
111
  };
143
112
  }
144
- const max = Math.min(200, Math.max(1, maxResults ?? 40));
145
- const root = roots.foundationCss.path;
146
- let matches = (0, search_js_1.searchWithRipgrep)(root, pattern, max, fileGlob);
147
- if (matches === null) {
148
- matches = await (0, search_js_1.searchWithNode)(root, pattern, max, fileGlob);
149
- }
150
- return { content: [{ type: "text", text: (0, search_js_1.formatMatches)("foundation-css", root, matches) }] };
151
- });
152
- mcp.registerTool("read_foundation_css_file", {
153
- title: "Read a file under foundation-css",
154
- description: "Read a file from the foundation-css package (tokens, LESS, CSS). Path is relative to package root.",
155
- inputSchema: {
156
- relativePath: zod_1.z.string(),
157
- startLine: zod_1.z.number().optional(),
158
- endLine: zod_1.z.number().optional(),
159
- workingDirectory: workingDirSchema,
160
- },
161
- }, async ({ relativePath, startLine, endLine, workingDirectory }) => {
162
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
163
- if (!roots.foundationCss) {
164
- return {
165
- isError: true,
166
- content: [{ type: "text", text: "foundation-css not found." }],
167
- };
168
- }
169
- const check = (0, paths_js_1.safeReadUnderRoot)(roots.foundationCss.path, relativePath);
170
- if (!check.ok) {
171
- return { isError: true, content: [{ type: "text", text: check.error }] };
172
- }
173
- if (!node_fs_1.default.existsSync(check.absolute) || !node_fs_1.default.statSync(check.absolute).isFile()) {
174
- return { isError: true, content: [{ type: "text", text: `Not a file: ${relativePath}` }] };
175
- }
176
- const { text, truncated } = readFileSlice(check.absolute, startLine, endLine);
177
- const header = `${check.absolute}${truncated ? "\n[truncated]" : ""}\n\n`;
178
- return { content: [{ type: "text", text: header + text }] };
113
+ const out = results.map((r) => ({
114
+ type: r.type,
115
+ name: r.entry.name,
116
+ summary: r.entry.summary,
117
+ tags: r.entry.tags,
118
+ score: r.score,
119
+ }));
120
+ return { content: [{ type: "text", text: JSON.stringify(out, null, 2) }] };
179
121
  });
180
- mcp.registerTool("find_wavemaker_component", {
181
- title: "Find props / paths for a WaveMaker widget",
182
- description: "Given a widget name like WmSelect or WmButton, list matching props.js/ts paths under components/, and optionally search for the name in source when path matching is ambiguous (e.g. charts).",
183
- inputSchema: {
184
- componentName: zod_1.z.string().describe('e.g. "WmSelect", "WmBarChart", or "select"'),
185
- workingDirectory: workingDirSchema,
186
- },
187
- }, async ({ componentName, workingDirectory }) => {
188
- const roots = (0, paths_js_1.resolveRoots)(resolveProjectRoot(workingDirectory));
189
- if (!roots.reactRuntime) {
190
- return {
191
- isError: true,
192
- content: [{ type: "text", text: "react-runtime not found." }],
193
- };
194
- }
195
- const root = roots.reactRuntime.path;
196
- const hints = await (0, components_js_1.findPropsPathsByHint)(root, componentName);
197
- const wmName = (0, components_js_1.toWmComponentName)(componentName);
198
- const refs = await (0, components_js_1.findComponentRefs)(root, wmName, 20);
199
- const lines = [
200
- `react-runtime: ${root}`,
201
- `normalized name for source search: ${wmName}`,
202
- "",
203
- "Props files matching path hint (components/**/props.*):",
204
- hints.length ? hints.map((p) => ` ${p}`).join("\n") : " (none — charts and some widgets use non-obvious folder names; use refs below or search_wavemaker_runtime)",
205
- "",
206
- `References to "${wmName}" under components/ (sample):`,
207
- refs.length ? (0, search_js_1.formatMatches)("refs", (0, paths_js_1.resolveRuntimeComponentsRoot)(root), refs) : " (none)",
208
- ];
209
- return { content: [{ type: "text", text: lines.join("\n") }] };
122
+ mcp.registerTool("skills_meta", {
123
+ title: "Get skills index metadata",
124
+ description: "Returns metadata about the bundled skill documents: version, generation timestamp, " +
125
+ "source git commit hashes (runtimeCommit, cssCommit), and component/token counts. " +
126
+ "Use to check whether skills are up to date with your WaveMaker repo versions.",
127
+ inputSchema: {},
128
+ }, async () => {
129
+ const index = (0, loader_js_1.loadIndex)();
130
+ const meta = {
131
+ version: index.version,
132
+ generated: index.generated,
133
+ sources: index.sources ?? {},
134
+ componentCount: index.components.length,
135
+ tokenCount: index.tokens.length,
136
+ };
137
+ return { content: [{ type: "text", text: JSON.stringify(meta, null, 2) }] };
210
138
  });
139
+ // ---------------------------------------------------------------------------
140
+ // Layout / spacing tools
141
+ // ---------------------------------------------------------------------------
211
142
  mcp.registerTool("suggest_component", {
212
143
  title: "Suggest WaveMaker layout component",
213
144
  description: "Rule-based mapping from layout intent to a WaveMaker component name and import path. " +
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface SkillEntry {
2
+ name: string;
3
+ file: string;
4
+ category?: string;
5
+ summary: string;
6
+ tags: string[];
7
+ }
8
+ export interface TokenEntry {
9
+ name: string;
10
+ file: string;
11
+ summary: string;
12
+ tags: string[];
13
+ }
14
+ export interface SkillIndex {
15
+ version: string;
16
+ generated: string;
17
+ sources?: {
18
+ runtimeCommit?: string;
19
+ cssCommit?: string;
20
+ };
21
+ components: SkillEntry[];
22
+ tokens: TokenEntry[];
23
+ }
24
+ export declare function loadIndex(): SkillIndex;
25
+ export declare function readSkillFile(relativePath: string): string;
26
+ /** Find a component skill by name (case-insensitive, strips "Wm" prefix for matching). */
27
+ export declare function findComponentSkill(query: string): SkillEntry | undefined;
28
+ /** Find a token skill by name. */
29
+ export declare function findTokenSkill(query: string): TokenEntry | undefined;
30
+ /** Search components and tokens by free-text query. Returns top matches. */
31
+ export declare function searchSkills(query: string, topN?: number): Array<{
32
+ type: "component" | "token";
33
+ entry: SkillEntry | TokenEntry;
34
+ score: number;
35
+ }>;
36
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAYD,wBAAgB,SAAS,IAAI,UAAU,CAMtC;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CASxE;AAED,kCAAkC;AAClC,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAIpE;AAiBD,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB3I"}