@volue/wave-mcp 0.1.0-next.4 → 0.1.0-next.5

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/README.md CHANGED
@@ -4,16 +4,16 @@
4
4
 
5
5
  ## Available Tools
6
6
 
7
- | Tool Name | Description |
8
- | --------------- | -------------------------------------------------------- |
9
- | init | Initialize the Wave Design System in your project |
10
- | list_components | List all available components grouped by category |
11
- | get_component | Get comprehensive documentation for a specific component |
12
- | list_patterns | List all UX patterns grouped by category |
13
- | get_pattern | Retrieve detailed guidance for a specific pattern |
14
- | get_color_usage | Get color token usage and guidelines |
15
- | list_icons | List all available icons in the Wave icon library |
16
- | get_icon | Get SVG code and usage information for a specific icon |
7
+ | Tool Name | Description |
8
+ | ----------------- | -------------------------------------------------------- |
9
+ | `init` | Initialize the Wave Design System in your project |
10
+ | `list_components` | List all available components grouped by category |
11
+ | `get_component` | Get comprehensive documentation for a specific component |
12
+ | `list_patterns` | List all UX patterns grouped by category |
13
+ | `get_pattern` | Retrieve detailed guidance for a specific pattern |
14
+ | `get_color_usage` | Get color token usage and guidelines |
15
+ | `list_icons` | List all available icons in the Wave icon library |
16
+ | `get_icon` | Get SVG code and usage information for a specific icon |
17
17
 
18
18
  ## Setup
19
19
 
@@ -40,7 +40,17 @@ Use the button above or manually add to your `.vscode/mcp.json`:
40
40
 
41
41
  ### Claude Code
42
42
 
43
- Add to your Claude Code MCP servers configuration:
43
+ Use the CLI:
44
+
45
+ ```bash
46
+ # 1. Navigate to your project
47
+ cd your-awesome-project
48
+
49
+ # 2. Add Wave MCP server
50
+ claude mcp add wave -- npx -y @volue/wave-mcp@latest
51
+ ```
52
+
53
+ Or manually add to your Claude Code MCP servers configuration:
44
54
 
45
55
  ```json
46
56
  {
@@ -1,4 +1,4 @@
1
- var N=Object.defineProperty;var r=(e,t)=>N(e,"name",{value:t,configurable:!0});import{a as u,f as p,u as f,g as m}from"./server-OHiiWrEh.js";import{createRequire as W}from"node:module";import I from"remark-parse";import A from"unified";import{z as g}from"zod";const j=A().use(I),$={Components:"component","UX patterns":"pattern"};function F(e,t){const o=j.parse(e);let n=null;return o.children.reduce((a,i)=>{if(u(i,"heading")&&i.depth===2)return n=B(i),a;if(!n||!u(i,"list"))return a;const s=n,c=i.children.map(l=>P(l,s,t)).filter(l=>l!==null);return a.concat(c)},[])}r(F,"parseLlmsIndex");function B(e){const[t]=e.children;if(!t||!u(t,"text"))return null;const o=t.value.trim();if(!(o in $))return null;const n=$[o];return{title:o,type:n}}r(B,"extractSectionContext");function P(e,t,o){const[n]=e.children;if(!n||!u(n,"paragraph")||n.children.length!==2)return null;const[a,i]=n.children;if(!u(a,"link")||!u(i,"text")||a.children.length!==1)return null;const s=a.children[0];if(!u(s,"text"))return null;const c=s.value.trim(),l=a.url.replace(/^\//,""),L=new URL(l,`${o}/`).toString(),D=O(l),U=M(t.title,l,t.type),k=z(i.value);return{name:c,slug:D,category:U,section:t.title,type:t.type,url:L,description:k??void 0}}r(P,"listItemToResource");function O(e){return e.replace(/\.md$/,"").split("/").pop()??""}r(O,"deriveSlug");function M(e,t,o){const n=t.replace(/\.md$/,"").split("/");if(o==="component"||o==="pattern"){const a=n.length>=3?n[n.length-2]:null;return a?`${e} / ${V(a)}`:e}return e}r(M,"deriveCategory");function V(e){return e.split("-").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}r(V,"formatSegment");function z(e){if(!e)return null;const t=e.replace(/^\s*:\s*/,"").trim();return t.toLowerCase()==="no description available"?null:t}r(z,"normalizeDescription");const E=W(import.meta.url),H=E("@volue/design-colors/generic"),X=E("@volue/design-icons"),h=process.env.USE_STABLE_DOCS==="true"||process.env.USE_STABLE_DOCS==="1"?"https://wave.volue.com":"https://wave-design-system.vercel.app",G=`${h}/llms.txt`,q=1e3*60*15,J=process.env.WAVE_RESOURCES_CACHE_TIME?Number.parseInt(process.env.WAVE_RESOURCES_CACHE_TIME,10):q;function y(e){const t=new URL(e,h);return t.pathname.endsWith(".md")||(t.pathname+=".md"),t.toString()}r(y,"createUrl");let v=null,C=0;async function Y(){if(v!==null&&Date.now()<C)return v;const e=await K();return v=e,C=Date.now()+J,e}r(Y,"listCachedResources");let d=null;async function K(){return d||(d=Q().finally(()=>{d=null})),d}r(K,"idempotentLoadResourcesFromLlms");async function Q(){const e=await p(G,void 0,"fetch llms.txt");return F(e,h)}r(Q,"loadResourcesFromLlms");async function Z(e){return p(e.url,void 0,`fetch ${e.name} documentation`)}r(Z,"fetchComponent");function ee(e){return p(e.url,void 0,`fetch ${e.name} pattern`)}r(ee,"fetchPattern");async function te(){return p(y("get-started/developing"),void 0,"fetch developing guide")}r(te,"fetchDevelopingGuide");async function ne(){return p(y("tokens/colors"),void 0,"fetch color usage guidelines")}r(ne,"fetchColorUsageGuidelines");function x(){return Object.entries(X).map(([e,t])=>({name:e,svg:t}))}r(x,"listIcons");function oe(){const e=x();return f(e.map(t=>t.name))}r(oe,"getIconNames");function re(e,t){const o=t.trim().toLowerCase();return e.find(n=>n.name.toLowerCase()===o)}r(re,"findIconByName");async function T(e){return(await Y()).filter(o=>o.type===e)}r(T,"listResourcesByType");function b(e,t){const o=t.trim().toLowerCase();return e.find(n=>n.name.toLowerCase()===o)}r(b,"findResourceByName");function w(){return T("component")}r(w,"listComponents");async function ae(){const e=await w();return f(e.map(t=>t.name))}r(ae,"getComponentNames");function S(){return T("pattern")}r(S,"listPatterns");async function ie(){const e=await S();return f(e.map(t=>t.name))}r(ie,"getPatternNames");function _(e){return e.reduce((t,o)=>(t[o.category]||(t[o.category]=[]),t[o.category].push(o),t),{})}r(_,"groupResourcesByCategory");const se={name:"get_color_usage",description:"Retrieve the Wave Design System color tokens and guidelines for applying color in user interfaces.",exec(e,{name:t,description:o}){e.tool(t,o,async()=>{try{const n=await ne();return{content:[{type:"text",text:JSON.stringify(H)},{type:"text",text:`Here are the Wave Design System color usage guidelines:
1
+ var N=Object.defineProperty;var r=(e,t)=>N(e,"name",{value:t,configurable:!0});import{a as u,f as p,u as f,g as m}from"./server-DrYJkNtU.js";import{createRequire as W}from"node:module";import I from"remark-parse";import A from"unified";import{z as g}from"zod";const j=A().use(I),$={Components:"component","UX patterns":"pattern"};function F(e,t){const o=j.parse(e);let n=null;return o.children.reduce((a,i)=>{if(u(i,"heading")&&i.depth===2)return n=B(i),a;if(!n||!u(i,"list"))return a;const s=n,c=i.children.map(l=>P(l,s,t)).filter(l=>l!==null);return a.concat(c)},[])}r(F,"parseLlmsIndex");function B(e){const[t]=e.children;if(!t||!u(t,"text"))return null;const o=t.value.trim();if(!(o in $))return null;const n=$[o];return{title:o,type:n}}r(B,"extractSectionContext");function P(e,t,o){const[n]=e.children;if(!n||!u(n,"paragraph")||n.children.length!==2)return null;const[a,i]=n.children;if(!u(a,"link")||!u(i,"text")||a.children.length!==1)return null;const s=a.children[0];if(!u(s,"text"))return null;const c=s.value.trim(),l=a.url.replace(/^\//,""),L=new URL(l,`${o}/`).toString(),D=O(l),U=M(t.title,l,t.type),k=z(i.value);return{name:c,slug:D,category:U,section:t.title,type:t.type,url:L,description:k??void 0}}r(P,"listItemToResource");function O(e){return e.replace(/\.md$/,"").split("/").pop()??""}r(O,"deriveSlug");function M(e,t,o){const n=t.replace(/\.md$/,"").split("/");if(o==="component"||o==="pattern"){const a=n.length>=3?n[n.length-2]:null;return a?`${e} / ${V(a)}`:e}return e}r(M,"deriveCategory");function V(e){return e.split("-").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}r(V,"formatSegment");function z(e){if(!e)return null;const t=e.replace(/^\s*:\s*/,"").trim();return t.toLowerCase()==="no description available"?null:t}r(z,"normalizeDescription");const E=W(import.meta.url),H=E("@volue/design-colors/generic"),X=E("@volue/design-icons"),h=process.env.USE_STABLE_DOCS==="true"||process.env.USE_STABLE_DOCS==="1"?"https://wave.volue.com":"https://wave-design-system.vercel.app",G=`${h}/llms.txt`,q=1e3*60*15,J=process.env.WAVE_RESOURCES_CACHE_TIME?Number.parseInt(process.env.WAVE_RESOURCES_CACHE_TIME,10):q;function y(e){const t=new URL(e,h);return t.pathname.endsWith(".md")||(t.pathname+=".md"),t.toString()}r(y,"createUrl");let v=null,C=0;async function Y(){if(v!==null&&Date.now()<C)return v;const e=await K();return v=e,C=Date.now()+J,e}r(Y,"listCachedResources");let d=null;async function K(){return d||(d=Q().finally(()=>{d=null})),d}r(K,"idempotentLoadResourcesFromLlms");async function Q(){const e=await p(G,void 0,"fetch llms.txt");return F(e,h)}r(Q,"loadResourcesFromLlms");async function Z(e){return p(e.url,void 0,`fetch ${e.name} documentation`)}r(Z,"fetchComponent");function ee(e){return p(e.url,void 0,`fetch ${e.name} pattern`)}r(ee,"fetchPattern");async function te(){return p(y("get-started/developing"),void 0,"fetch developing guide")}r(te,"fetchDevelopingGuide");async function ne(){return p(y("tokens/colors"),void 0,"fetch color usage guidelines")}r(ne,"fetchColorUsageGuidelines");function x(){return Object.entries(X).map(([e,t])=>({name:e,svg:t}))}r(x,"listIcons");function oe(){const e=x();return f(e.map(t=>t.name))}r(oe,"getIconNames");function re(e,t){const o=t.trim().toLowerCase();return e.find(n=>n.name.toLowerCase()===o)}r(re,"findIconByName");async function T(e){return(await Y()).filter(o=>o.type===e)}r(T,"listResourcesByType");function b(e,t){const o=t.trim().toLowerCase();return e.find(n=>n.name.toLowerCase()===o)}r(b,"findResourceByName");function w(){return T("component")}r(w,"listComponents");async function ae(){const e=await w();return f(e.map(t=>t.name))}r(ae,"getComponentNames");function S(){return T("pattern")}r(S,"listPatterns");async function ie(){const e=await S();return f(e.map(t=>t.name))}r(ie,"getPatternNames");function _(e){return e.reduce((t,o)=>(t[o.category]||(t[o.category]=[]),t[o.category].push(o),t),{})}r(_,"groupResourcesByCategory");const se={name:"get_color_usage",description:"Retrieve the Wave Design System color tokens and guidelines for applying color in user interfaces.",exec(e,{name:t,description:o}){e.tool(t,o,async()=>{try{const n=await ne();return{content:[{type:"text",text:JSON.stringify(H)},{type:"text",text:`Here are the Wave Design System color usage guidelines:
2
2
 
3
3
  ${n}
4
4
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var e=Object.defineProperty;var t=(o,r)=>e(o,"name",{value:r,configurable:!0});import{i}from"./server-OHiiWrEh.js";import{s as g}from"./server-OHiiWrEh.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";if(i(import.meta.url)){const r=process.argv.slice(2)[0]||"stdio";async function s(){try{switch(r){case"stdio":await import("./transports/stdio.js");break;case"http":process.argv.push("--auto-run"),await import("./transports/http.js");break;default:console.error(`Unknown transport: ${r}`),console.error("Available transports: stdio, http"),process.exit(1)}}catch(a){console.error("Error running transport:",a),process.exit(1)}}t(s,"run"),s()}export{g as server};
2
+ var e=Object.defineProperty;var t=(o,r)=>e(o,"name",{value:r,configurable:!0});import{i}from"./server-DrYJkNtU.js";import{s as g}from"./server-DrYJkNtU.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";if(i(import.meta.url)){const r=process.argv.slice(2)[0]||"stdio";async function s(){try{switch(r){case"stdio":await import("./transports/stdio.js");break;case"http":process.argv.push("--auto-run"),await import("./transports/http.js");break;default:console.error(`Unknown transport: ${r}`),console.error("Available transports: stdio, http"),process.exit(1)}}catch(a){console.error("Error running transport:",a),process.exit(1)}}t(s,"run"),s()}export{g as server};
@@ -1 +1 @@
1
- var i=Object.defineProperty;var t=(e,r)=>i(e,"name",{value:r,configurable:!0});import{realpathSync as c}from"node:fs";import{pathToFileURL as f}from"node:url";import{McpServer as p}from"@modelcontextprotocol/sdk/server/mcp.js";async function u(e,r,n){const s=await fetch(e,r);if(!s.ok){const a=n??`fetch ${e}`;throw new Error(`Failed to ${a}: ${s.status} ${s.statusText}`)}return s.text()}t(u,"fetchMarkdown");function m(e,r){return e.type===r}t(m,"isNodeType");function v(e){return Array.from(new Set(e))}t(v,"uniq");function h(e){return e instanceof Error?e.message:"Unknown error"}t(h,"getErrorMessage");function g(e){if(!process.argv[1])return!1;const r=c(process.argv[1]),n=f(r);return e===n.href}t(g,"isEntryFile");var l="0.1.0-next.4",o={version:l};const w=new p({name:"Wave Design System",version:o.version,capabilities:{prompts:{},resources:{},tools:{}}});export{m as a,u as f,h as g,g as i,o as p,w as s,v as u};
1
+ var i=Object.defineProperty;var t=(e,r)=>i(e,"name",{value:r,configurable:!0});import{realpathSync as c}from"node:fs";import{pathToFileURL as f}from"node:url";import{McpServer as p}from"@modelcontextprotocol/sdk/server/mcp.js";async function u(e,r,n){const s=await fetch(e,r);if(!s.ok){const a=n??`fetch ${e}`;throw new Error(`Failed to ${a}: ${s.status} ${s.statusText}`)}return s.text()}t(u,"fetchMarkdown");function m(e,r){return e.type===r}t(m,"isNodeType");function v(e){return Array.from(new Set(e))}t(v,"uniq");function h(e){return e instanceof Error?e.message:"Unknown error"}t(h,"getErrorMessage");function g(e){if(!process.argv[1])return!1;const r=c(process.argv[1]),n=f(r);return e===n.href}t(g,"isEntryFile");var l="0.1.0-next.5",o={version:l};const w=new p({name:"Wave Design System",version:o.version,capabilities:{prompts:{},resources:{},tools:{}}});export{m as a,u as f,h as g,g as i,o as p,w as s,v as u};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var h=Object.defineProperty;var i=(e,s)=>h(e,"name",{value:s,configurable:!0});import{StreamableHTTPServerTransport as f}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as g}from"@modelcontextprotocol/sdk/types.js";import I from"cors";import l from"express";import{randomUUID as S}from"node:crypto";import{s as m,p as T,i as w}from"../server-OHiiWrEh.js";import{i as y}from"../index-MOeVmAI0.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";import"node:module";import"remark-parse";import"unified";import"zod";const t=l(),P=process.env.CORS_ORIGIN?.split(",")??"*";t.use(I({origin:P,exposedHeaders:["Mcp-Session-Id"],allowedHeaders:["Content-Type","mcp-session-id"]})),t.use(l.json());const r=new Map;t.post("/mcp",async(e,s)=>{const n=e.headers["mcp-session-id"];let o;if(n&&r.has(n))o=r.get(n);else if(!n&&g(e.body))o=new f({sessionIdGenerator:i(()=>S(),"sessionIdGenerator"),onsessioninitialized:i(v=>{r.set(v,o)},"onsessioninitialized")}),o.onclose=()=>{o.sessionId&&r.has(o.sessionId)&&r.delete(o.sessionId)},await y(m),await m.connect(o);else return s.status(400).json({error:{message:"Bad Request: No valid session ID provided"}});await o.handleRequest(e,s,e.body)});const d=i(async(e,s)=>{const n=e.headers["mcp-session-id"];if(!n||!r.has(n))return s.status(404).send("Invalid or missing session ID");await r.get(n).handleRequest(e,s)},"handleSessionRequest");t.get("/mcp",d),t.delete("/mcp",d),t.get("/",(e,s)=>{s.json({name:"Wave MCPc Server",version:T.version,description:"MCP server for Wave Design System",endpoints:{"/":"Server information (this response)","/mcp":"Streamable HTTP endpoint for MCP connection","/health":"Health check endpoint"}})}),t.get("/health",(e,s)=>{s.json({status:"healthy",timestamp:new Date().toISOString(),uptime:process.uptime()})});const a=process.env.HOST??"localhost",p=process.env.PORT?Number(process.env.PORT):3e3;let c=null;(process.argv.includes("--auto-run")||w(import.meta.url))&&(c=t.listen(p,a,e=>{e&&(console.error("\u274C Failed to start server:",e),process.exit(1)),console.log(`\u{1F680} Wave MCP Server running on http://${a}:${p}`),console.log(`\u{1F517} Connect via http://${a}:${p}/mcp`)}));const u=i(async()=>{const e=Array.from(r.values()).map(s=>s.close());c&&e.push(new Promise(s=>c.close(()=>s()))),await Promise.allSettled(e),console.log("\u{1F44B} Server shut down gracefully"),process.exit(0)},"cleanup");process.on("SIGTERM",u),process.on("SIGINT",u);export{t as default};
2
+ var h=Object.defineProperty;var i=(e,s)=>h(e,"name",{value:s,configurable:!0});import{StreamableHTTPServerTransport as f}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as g}from"@modelcontextprotocol/sdk/types.js";import I from"cors";import l from"express";import{randomUUID as S}from"node:crypto";import{s as m,p as T,i as w}from"../server-DrYJkNtU.js";import{i as y}from"../index-Bz3fxPpO.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";import"node:module";import"remark-parse";import"unified";import"zod";const t=l(),P=process.env.CORS_ORIGIN?.split(",")??"*";t.use(I({origin:P,exposedHeaders:["Mcp-Session-Id"],allowedHeaders:["Content-Type","mcp-session-id"]})),t.use(l.json());const r=new Map;t.post("/mcp",async(e,s)=>{const n=e.headers["mcp-session-id"];let o;if(n&&r.has(n))o=r.get(n);else if(!n&&g(e.body))o=new f({sessionIdGenerator:i(()=>S(),"sessionIdGenerator"),onsessioninitialized:i(v=>{r.set(v,o)},"onsessioninitialized")}),o.onclose=()=>{o.sessionId&&r.has(o.sessionId)&&r.delete(o.sessionId)},await y(m),await m.connect(o);else return s.status(400).json({error:{message:"Bad Request: No valid session ID provided"}});await o.handleRequest(e,s,e.body)});const d=i(async(e,s)=>{const n=e.headers["mcp-session-id"];if(!n||!r.has(n))return s.status(404).send("Invalid or missing session ID");await r.get(n).handleRequest(e,s)},"handleSessionRequest");t.get("/mcp",d),t.delete("/mcp",d),t.get("/",(e,s)=>{s.json({name:"Wave MCPc Server",version:T.version,description:"MCP server for Wave Design System",endpoints:{"/":"Server information (this response)","/mcp":"Streamable HTTP endpoint for MCP connection","/health":"Health check endpoint"}})}),t.get("/health",(e,s)=>{s.json({status:"healthy",timestamp:new Date().toISOString(),uptime:process.uptime()})});const a=process.env.HOST??"localhost",p=process.env.PORT?Number(process.env.PORT):3e3;let c=null;(process.argv.includes("--auto-run")||w(import.meta.url))&&(c=t.listen(p,a,e=>{e&&(console.error("\u274C Failed to start server:",e),process.exit(1)),console.log(`\u{1F680} Wave MCP Server running on http://${a}:${p}`),console.log(`\u{1F517} Connect via http://${a}:${p}/mcp`)}));const u=i(async()=>{const e=Array.from(r.values()).map(s=>s.close());c&&e.push(new Promise(s=>c.close(()=>s()))),await Promise.allSettled(e),console.log("\u{1F44B} Server shut down gracefully"),process.exit(0)},"cleanup");process.on("SIGTERM",u),process.on("SIGINT",u);export{t as default};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var s=Object.defineProperty;var t=(o,r)=>s(o,"name",{value:r,configurable:!0});import{StdioServerTransport as e}from"@modelcontextprotocol/sdk/server/stdio.js";import{s as i}from"../server-OHiiWrEh.js";import{i as a}from"../index-MOeVmAI0.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";import"node:module";import"remark-parse";import"unified";import"zod";async function n(){await a(i);const o=new e;await i.connect(o);const r=t(async()=>{await o.close(),process.exit(0)},"cleanup");process.on("SIGTERM",r),process.on("SIGINT",r)}t(n,"main"),n().catch(o=>{console.error("\u274C Failed to start server:",o),process.exit(1)});
2
+ var s=Object.defineProperty;var t=(o,r)=>s(o,"name",{value:r,configurable:!0});import{StdioServerTransport as e}from"@modelcontextprotocol/sdk/server/stdio.js";import{s as i}from"../server-DrYJkNtU.js";import{i as a}from"../index-Bz3fxPpO.js";import"node:fs";import"node:url";import"@modelcontextprotocol/sdk/server/mcp.js";import"node:module";import"remark-parse";import"unified";import"zod";async function n(){await a(i);const o=new e;await i.connect(o);const r=t(async()=>{await o.close(),process.exit(0)},"cleanup");process.on("SIGTERM",r),process.on("SIGINT",r)}t(n,"main"),n().catch(o=>{console.error("\u274C Failed to start server:",o),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volue/wave-mcp",
3
- "version": "0.1.0-next.4",
3
+ "version": "0.1.0-next.5",
4
4
  "description": "An MCP server that connects AI tools to the Wave Design System",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -51,12 +51,12 @@
51
51
  "inspect:http": "yarn dlx -q @modelcontextprotocol/inspector --transport http --server-url http://localhost:3000/mcp"
52
52
  },
53
53
  "dependencies": {
54
- "@modelcontextprotocol/sdk": "1.17.5",
54
+ "@modelcontextprotocol/sdk": "1.19.1",
55
55
  "@types/cors": "2.8.19",
56
56
  "@types/express": "5.0.3",
57
57
  "@types/express-serve-static-core": "5.0.7",
58
- "@volue/design-colors": "^3.0.10-next.2",
59
- "@volue/design-icons": "^1.9.4-next.2",
58
+ "@volue/design-colors": "^3.0.10-next.3",
59
+ "@volue/design-icons": "^1.9.4-next.3",
60
60
  "cors": "2.8.5",
61
61
  "express": "5.1.0",
62
62
  "remark-parse": "8.0.3",
@@ -65,15 +65,15 @@
65
65
  "zod": "3.25.76"
66
66
  },
67
67
  "devDependencies": {
68
- "@types/mdast": "3.0.3",
69
- "@types/node": "22.18.1",
68
+ "@types/mdast": "3.0.15",
69
+ "@types/node": "22.18.8",
70
70
  "@volue/eslint-config": "1.3.11",
71
- "eslint": "9.32.0",
71
+ "eslint": "9.36.0",
72
72
  "npm-run-all2": "8.0.4",
73
- "pkgroll": "2.15.3",
73
+ "pkgroll": "2.17.0",
74
74
  "premove": "4.0.0",
75
75
  "prettier": "3.6.2",
76
- "tsx": "4.20.5",
77
- "typescript": "5.9.2"
76
+ "tsx": "4.20.6",
77
+ "typescript": "5.9.3"
78
78
  }
79
79
  }