docs: prepare native WebMCP migration (#363)

* docs: prepare native WebMCP migration

* docs: update Geistdocs to 2.7.5
This commit is contained in:
Railly Hugo
2026-10-01 14:18:31 -03:00
committed by GitHub
parent c2600d7390
commit fc2a696a50
5 changed files with 215 additions and 18 deletions
+7
View File
@@ -0,0 +1,7 @@
import { createMcpRoute } from "@vercel/geistdocs/routes/mcp";
import { config } from "@/lib/geistdocs/config";
import { GET as search } from "../search/route";
const handler = createMcpRoute({ config, search });
export { handler as GET, handler as POST };
+1 -1
View File
@@ -31,7 +31,7 @@
"@upstash/ratelimit": "^2.0.8",
"@upstash/redis": "^1.36.1",
"@vercel/analytics": "^1.6.1",
"@vercel/geistdocs": "2.4.1",
"@vercel/geistdocs": "2.7.5",
"@vercel/speed-insights": "^1.3.1",
"@visual-json/react": "0.1.1",
"ai": "^6.0.33",
+62
View File
@@ -1,3 +1,4 @@
import assert from "node:assert/strict";
import process from "node:process";
import { spawn } from "node:child_process";
import { createServer } from "node:net";
@@ -95,6 +96,67 @@ try {
"Docs server did not become ready. Run the docs build first.",
);
if (!stopping) {
const bridge = await fetch(`${url}/api/mcp?webmcp-script`, {
signal: AbortSignal.timeout(30000),
});
assert.equal(bridge.status, 200);
assert.match(bridge.headers.get("content-type") ?? "", /javascript/);
assert.match(await bridge.text(), /registerTool/);
console.log("PASS native WebMCP bridge returns JavaScript (200)");
const rpc = async (method, params = {}) => {
const response = await fetch(`${url}/api/mcp`, {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
},
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
signal: AbortSignal.timeout(30000),
});
assert.equal(response.status, 200);
const type = response.headers.get("content-type")?.split(";")[0];
assert.ok(["application/json", "text/event-stream"].includes(type));
const body = await response.text();
const messages =
type === "application/json"
? [JSON.parse(body)]
: body
.split(/\r?\n\r?\n/)
.map((event) =>
event
.split(/\r?\n/)
.filter((line) => line.startsWith("data:"))
.map((line) => line.slice(5).replace(/^ /, ""))
.join("\n"),
)
.filter(Boolean)
.map((data) => JSON.parse(data));
const replies = messages.filter((message) => message.id === 1);
assert.equal(replies.length, 1);
const [message] = replies;
assert.equal(message.jsonrpc, "2.0");
assert.equal(message.error, undefined);
return message.result;
};
const { tools } = await rpc("tools/list");
assert.deepEqual(
tools.map((tool) => tool.name),
["search_docs"],
);
console.log("PASS MCP tools/list exposes search_docs");
const result = await rpc("tools/call", {
name: "search_docs",
arguments: { query: "StateProvider", locale: "en" },
});
assert.notEqual(result.isError, true);
const matches = JSON.parse(
result.content.find((item) => item.type === "text").text,
);
assert.ok(matches.some((item) => item.url.startsWith("/docs/")));
console.log("PASS MCP tools/call returns actual docs search results");
tests = launch(["--test", "tests/docs-routes.test.mjs"], {
...process.env,
DOCS_TEST_URL: url,
+9 -2
View File
@@ -3,10 +3,17 @@ import {
geistdocsFrontmatterSchema,
geistdocsMetaSchema,
} from "@vercel/geistdocs/source-config";
import { defineConfig, defineDocs } from "fumadocs-mdx/config";
import {
defineConfig,
defineDocs,
type DocsCollection,
} from "fumadocs-mdx/config";
import { remarkLegacyHeadings } from "./lib/remark-legacy-headings";
export const docs = defineDocs({
export const docs: DocsCollection<
typeof geistdocsFrontmatterSchema,
typeof geistdocsMetaSchema
> = defineDocs({
dir: "content/docs",
docs: {
schema: geistdocsFrontmatterSchema,
+136 -15
View File
@@ -125,8 +125,8 @@ importers:
specifier: ^1.6.1
version: 1.6.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
'@vercel/geistdocs':
specifier: 2.4.1
version: 2.4.1(4d4756382f845489d64dfb2804df7ab8)
specifier: 2.7.5
version: 2.7.5(4d4756382f845489d64dfb2804df7ab8)
'@vercel/speed-insights':
specifier: ^1.3.1
version: 1.3.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
@@ -1528,10 +1528,10 @@ importers:
dependencies:
'@ai-sdk/gateway':
specifier: ^3.0.50
version: 3.0.57(zod@4.3.6)
version: 3.0.57(zod@4.6.5)
ai:
specifier: ^6.0.91
version: 6.0.103(zod@4.3.6)
version: 6.0.103(zod@4.6.5)
next:
specifier: ^16.1.6
version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -2110,10 +2110,10 @@ importers:
version: link:../core
'@modelcontextprotocol/ext-apps':
specifier: ^1.2.0
version: 1.2.0(@modelcontextprotocol/sdk@1.27.1(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6)
version: 1.2.0(@modelcontextprotocol/sdk@1.27.1(zod@4.6.5))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.6.5)
'@modelcontextprotocol/sdk':
specifier: ^1.27.1
version: 1.27.1(zod@4.3.6)
version: 1.27.1(zod@4.6.5)
react:
specifier: ^19.0.0
version: 19.2.4
@@ -5128,6 +5128,10 @@ packages:
'@mistralai/mistralai@2.2.1':
resolution: {integrity: sha512-uKU8CZmL2RzYKmplsU01hii4p3pe4HqJefpWNRWXm1Tcm0Sm4xXfwSLIy4k7ZCPlbETCGcp69E7hZs+WOJ5itQ==}
'@modelcontextprotocol/core@2.1.0':
resolution: {integrity: sha512-YdFj5gMRHr0gYNAhTbQDgjLHiEJdIAUYxomhKseUNye7ZGlISQmUoLh2sveFFCiQ7j2YMffT1kgSND0FSfIFjQ==}
engines: {node: '>=20'}
'@modelcontextprotocol/ext-apps@1.2.0':
resolution: {integrity: sha512-ijUQJX/FmNq8PWgOLzph/BAfy84sUZxoIRuHzr+F37wYtWjhdl8pliBJybapYolppY+XJ8oqjFZmTOuMqxwbWQ==}
peerDependencies:
@@ -5161,6 +5165,10 @@ packages:
'@cfworker/json-schema':
optional: true
'@modelcontextprotocol/server@2.1.0':
resolution: {integrity: sha512-FdvwZU5N03O77Suh35JqjAqq5R1ZTEPFtwu6N4BgBq28qrQtrCnpbLL5U2pwYCuE194jAw0xnlOVmIqhfoYuUQ==}
engines: {node: '>=20'}
'@monogrid/gainmap-js@3.4.0':
resolution: {integrity: sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==}
peerDependencies:
@@ -9009,8 +9017,8 @@ packages:
resolution: {integrity: sha512-g9XerViJ/paZujufXYcu5XYI2vU2rtB4sgdpjUHde5RnOkdmpu0ngH46LCFGHoPXO/C+qDPSczIHIRN+8Q2YKQ==}
engines: {node: '>= 18'}
'@vercel/geistdocs@2.4.1':
resolution: {integrity: sha512-mTGqEWG0SATR95I2sKzG37UEllFQRwfKVCy0mYY7Iu0Vrq6Nr4Iere7DlDrnPVMXUIT2ksFBz9qhlXrum+9+4Q==}
'@vercel/geistdocs@2.7.5':
resolution: {integrity: sha512-SjEOusPjrviI0fO3NPWCmL/Kw/63Yh3Hyb3ysxyZg0+cLrlRoMxq2YqeQ1deI85xZhva5i3vSR22r+rw+FSw1w==}
hasBin: true
peerDependencies:
next: ^16.3.3
@@ -13127,6 +13135,17 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
mcp-handler@2.2.0:
resolution: {integrity: sha512-loJsIem4jM1jLUsI4x2errOHSzvU+Et6XV4Aqq1AEUkHOqridUoY4dLM02OlRfsku+OjtMlk+tHyYjpfO65X6g==}
engines: {node: '>=20'}
hasBin: true
peerDependencies:
'@modelcontextprotocol/server': ^2.0.0
next: '>=13.0.0'
peerDependenciesMeta:
next:
optional: true
mdast-util-find-and-replace@3.0.2:
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
@@ -16592,6 +16611,9 @@ packages:
zod@4.3.6:
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
zod@4.6.5:
resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==}
zustand@4.5.7:
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
engines: {node: '>=12.7.0'}
@@ -16661,6 +16683,13 @@ snapshots:
'@vercel/oidc': 3.2.0
zod: 4.3.6
'@ai-sdk/gateway@3.0.104(zod@4.6.5)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.6.5)
'@vercel/oidc': 3.2.0
zod: 4.6.5
'@ai-sdk/gateway@3.0.39(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
@@ -16696,6 +16725,13 @@ snapshots:
'@vercel/oidc': 3.1.0
zod: 4.3.6
'@ai-sdk/gateway@3.0.57(zod@4.6.5)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.15(zod@4.6.5)
'@vercel/oidc': 3.1.0
zod: 4.6.5
'@ai-sdk/gateway@3.0.66(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
@@ -16792,6 +16828,13 @@ snapshots:
eventsource-parser: 3.0.6
zod: 4.3.6
'@ai-sdk/provider-utils@4.0.15(zod@4.6.5)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
zod: 4.6.5
'@ai-sdk/provider-utils@4.0.19(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
@@ -16806,6 +16849,13 @@ snapshots:
eventsource-parser: 3.0.6
zod: 4.3.6
'@ai-sdk/provider-utils@4.0.23(zod@4.6.5)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
zod: 4.6.5
'@ai-sdk/provider-utils@5.0.0-canary.48(zod@3.25.76)':
dependencies:
'@ai-sdk/provider': 4.0.0-canary.18
@@ -16830,10 +16880,10 @@ snapshots:
dependencies:
json-schema: 0.4.0
'@ai-sdk/react@3.0.170(react@19.2.3)(zod@4.3.6)':
'@ai-sdk/react@3.0.170(react@19.2.3)(zod@4.6.5)':
dependencies:
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
ai: 6.0.168(zod@4.3.6)
'@ai-sdk/provider-utils': 4.0.23(zod@4.6.5)
ai: 6.0.168(zod@4.6.5)
react: 19.2.3
swr: 2.4.0(react@19.2.3)
throttleit: 2.1.0
@@ -19420,6 +19470,10 @@ snapshots:
- bufferutil
- utf-8-validate
'@modelcontextprotocol/core@2.1.0':
dependencies:
zod: 4.3.6
'@modelcontextprotocol/ext-apps@1.2.0(@modelcontextprotocol/sdk@1.27.1(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6)':
dependencies:
'@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6)
@@ -19428,6 +19482,14 @@ snapshots:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
'@modelcontextprotocol/ext-apps@1.2.0(@modelcontextprotocol/sdk@1.27.1(zod@4.6.5))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.6.5)':
dependencies:
'@modelcontextprotocol/sdk': 1.27.1(zod@4.6.5)
zod: 4.6.5
optionalDependencies:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
'@modelcontextprotocol/sdk@1.26.0(zod@3.25.76)':
dependencies:
'@hono/node-server': 1.19.9(hono@4.12.0)
@@ -19472,6 +19534,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@modelcontextprotocol/sdk@1.27.1(zod@4.6.5)':
dependencies:
'@hono/node-server': 1.19.9(hono@4.12.0)
ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1)
content-type: 1.0.5
cors: 2.8.6
cross-spawn: 7.0.6
eventsource: 3.0.7
eventsource-parser: 3.0.6
express: 5.2.1
express-rate-limit: 8.2.1(express@5.2.1)
hono: 4.12.0
jose: 6.1.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
raw-body: 3.0.2
zod: 4.6.5
zod-to-json-schema: 3.25.1(zod@4.6.5)
transitivePeerDependencies:
- supports-color
'@modelcontextprotocol/server@2.1.0':
dependencies:
'@modelcontextprotocol/core': 2.1.0
zod: 4.3.6
'@monogrid/gainmap-js@3.4.0(three@0.182.0)':
dependencies:
promise-worker-transferable: 1.0.4
@@ -24756,10 +24845,11 @@ snapshots:
dependencies:
execa: 5.1.1
'@vercel/geistdocs@2.4.1(4d4756382f845489d64dfb2804df7ab8)':
'@vercel/geistdocs@2.7.5(4d4756382f845489d64dfb2804df7ab8)':
dependencies:
'@ai-sdk/react': 3.0.170(react@19.2.3)(zod@4.3.6)
'@ai-sdk/react': 3.0.170(react@19.2.3)(zod@4.6.5)
'@clack/prompts': 0.11.0
'@modelcontextprotocol/server': 2.1.0
'@next/env': 16.3.3
'@orama/tokenizers': 3.1.18
'@streamdown/cjk': 1.0.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.3)(unified@11.0.5)
@@ -24767,7 +24857,7 @@ snapshots:
'@types/react': 19.2.14
'@vercel/agent-readability': 0.7.0(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
'@vercel/oidc': 3.8.7
ai: 6.0.168(zod@4.3.6)
ai: 6.0.168(zod@4.6.5)
class-variance-authority: 0.7.1
clsx: 2.1.1
commander: 14.0.2
@@ -24778,6 +24868,7 @@ snapshots:
fumadocs-ui: 16.2.2(@tanstack/react-router@1.170.32(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.3))(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.2.1)
geist: 1.7.1(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
glob: 11.1.0
mcp-handler: 2.2.0(@modelcontextprotocol/server@2.1.0)(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
mermaid: 11.15.0
motion: 12.43.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next: 16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -24803,7 +24894,7 @@ snapshots:
unist-util-visit: 5.1.0
use-stick-to-bottom: 1.1.6(react@19.2.3)
vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.14)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
zod: 4.3.6
zod: 4.6.5
transitivePeerDependencies:
- '@emotion/is-prop-valid'
- '@fumadocs/mdx-remote'
@@ -25206,6 +25297,14 @@ snapshots:
'@opentelemetry/api': 1.9.0
zod: 4.3.6
ai@6.0.103(zod@4.6.5):
dependencies:
'@ai-sdk/gateway': 3.0.57(zod@4.6.5)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.15(zod@4.6.5)
'@opentelemetry/api': 1.9.0
zod: 4.6.5
ai@6.0.116(zod@4.3.6):
dependencies:
'@ai-sdk/gateway': 3.0.66(zod@4.3.6)
@@ -25222,6 +25321,14 @@ snapshots:
'@opentelemetry/api': 1.9.0
zod: 4.3.6
ai@6.0.168(zod@4.6.5):
dependencies:
'@ai-sdk/gateway': 3.0.104(zod@4.6.5)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.6.5)
'@opentelemetry/api': 1.9.0
zod: 4.6.5
ai@6.0.77(zod@4.3.6):
dependencies:
'@ai-sdk/gateway': 3.0.39(zod@4.3.6)
@@ -29842,6 +29949,14 @@ snapshots:
math-intrinsics@1.1.0: {}
mcp-handler@2.2.0(@modelcontextprotocol/server@2.1.0)(next@16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)):
dependencies:
'@modelcontextprotocol/server': 2.1.0
chalk: 5.6.2
commander: 11.1.0
optionalDependencies:
next: 16.3.4(patch_hash=a620718f9d934500c4f0364aa9312b2539559e0ac911cdc37c97b92e1e9b4550)(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
mdast-util-find-and-replace@3.0.2:
dependencies:
'@types/mdast': 4.0.4
@@ -34776,6 +34891,10 @@ snapshots:
dependencies:
zod: 4.3.6
zod-to-json-schema@3.25.1(zod@4.6.5):
dependencies:
zod: 4.6.5
zod@3.22.3: {}
zod@3.25.76: {}
@@ -34784,6 +34903,8 @@ snapshots:
zod@4.3.6: {}
zod@4.6.5: {}
zustand@4.5.7(@types/react@19.2.3)(immer@11.1.4)(react@19.2.4):
dependencies:
use-sync-external-store: 1.6.0(react@19.2.4)