diff --git a/docs/.vitepress/client.ts b/docs/.vitepress/client.ts new file mode 100644 index 000000000..e250a9187 --- /dev/null +++ b/docs/.vitepress/client.ts @@ -0,0 +1,63 @@ +import { Client } from '@modelcontextprotocol/sdk/client/index.js' +import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' + + +async function main() { + let client: Client + const baseUrl = 'http://localhost:5173/__mcp' + + try { + const transport = new StreamableHTTPClientTransport(new URL(baseUrl)) + client = new Client( + { + name: 'vue-i18n-docs-client', + version: '0.0.1' + }, + { + capabilities: { + sampling: {} + } + } + ) + await client.connect(transport) + console.log('connected to server') + } catch (error) { + console.error('Failed to connect using Streamable HTTP transport:', error) + + console.log('Streamable HTTP connection failed, falling back to SSE transport') + client = new Client({ + name: 'vue-i18n-docs-sse-client', + version: '0.0.1' + }); + const sseTransport = new SSEClientTransport(new URL(`${baseUrl}/sse`)) + await client.connect(sseTransport) + console.log('Connected using SSE transport') + } + + const version = await client.getServerVersion() + console.log('Server version:', version) + + // List tools + const tools = await client.listTools() + console.log('list tools', tools) + + // List resources + const resources = await client.listResources() + console.log('list resources', resources) + const resourceTemplates = await client.listResourceTemplates() + console.log('list resource templates', resourceTemplates) + const contents = await client.readResource({ + uri: 'vue-i18n://docs' + }) + // console.log('read resource', contents) + // const page = await client.readResource({ + // uri: 'vue-i18n://docs{page}', + // params: { + // page: '/guide/installation.md' + // } + // }) + // console.log('read page', page) +} + +main() diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 449218f6e..476201b7a 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,10 +1,14 @@ -import type { HeadConfig } from 'vitepress' +import { ViteMcp as mcp } from 'vite-plugin-mcp' import { defineConfig } from 'vitepress' import llmstxt from 'vitepress-plugin-llms' +import pkg from '../../package.json' with { type: 'json' } +import mcpServer from './mcp' + +import type { HeadConfig } from 'vitepress' const head: HeadConfig[] = [['link', { rel: 'icon', href: '/vue-i18n-logo.png' }]] -export default defineConfig({ +const config = defineConfig({ title: 'Vue I18n', description: 'Internationalization plugin for Vue.js', @@ -15,7 +19,15 @@ export default defineConfig({ markdown: { attrs: { disable: true } }, vite: { - plugins: [llmstxt()] + plugins: [llmstxt(), mcp( + { + mcpServerInfo: { + name: 'Vue I18n MCP Docs', + version: pkg.version + }, + mcpServerSetup: mcpServer + } + )] }, themeConfig: { @@ -304,3 +316,5 @@ function sidebarEcosystem() { } ] } + +export default config diff --git a/docs/.vitepress/mcp.ts b/docs/.vitepress/mcp.ts new file mode 100644 index 000000000..79f42ad92 --- /dev/null +++ b/docs/.vitepress/mcp.ts @@ -0,0 +1,124 @@ +import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js' +import { existsSync } from 'node:fs' +import fs from 'node:fs/promises' +import path from 'node:path' + +import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import type { ViteDevServer } from 'vite' +import type { DefaultTheme, SiteConfig, SiteData } from 'vitepress' + +type Awaitable = T | PromiseLike; + +export default async function mcp(mcpServer: McpServer, viteServer: ViteDevServer): Awaitable { + const vitepress = (viteServer.config as any).vitepress as SiteConfig + const docRootDir = vitepress.srcDir + const docFiles = (vitepress.pages || []).map(page => path.resolve(docRootDir, page)).filter(file => existsSync(file)) + console.log('VitePress pages:', docFiles) + const themeConfig = vitepress.site.themeConfig as DefaultTheme.Config + console.log('VitePress site config:', vitepress) + // console.log('Setting up MCP server for Vue I18n docs...', themeConfig.sidebar) + const sidebarDirs = await getSidebarDirNames(docRootDir) + console.log('Sidebar:', themeConfig.sidebar, sidebarDirs) + // for (const [key, value] of Object.entries(themeConfig.sidebar || {})) { + // console.log(`Sidebar item: ${key}`) + // const items = (themeConfig.sidebar || {})[key] as DefaultTheme.SidebarItem[] + // for (const item of items) { + // console.log(item.text, item) + // } + // } + + // @ts-expect-error -- FIXME: + mcpServer.resource('contents', 'vue-i18n://docs', { + uri: 'vue-i18n://docs', + name: 'Vue I18n Documentation top', + description: 'Vue I18n documentation root, provides categories and links to documentation pages.', + }, async (uri) => { + const content = renderMarkdownTop(vitepress.site, getSideBar(sidebarDirs, themeConfig.sidebar || {})) + return { + contents: [ + { + uri, + text: content, + } + ] + } + }) + + const pageUri = 'vue-i18n://docs{page}' + const pageTempalte = new ResourceTemplate(pageUri, { list: undefined }) + mcpServer.resource('pages', pageTempalte, { + uri: pageUri, + name: 'Vue I18n Documentation page', + description: 'Vue I18n documentation page content', + }, async (uri, params) => { + console.log('Fetching page:', uri, params) + const p = Array.isArray(params.page) ? params.page[0] : params.page + const pagePath = path.resolve(docRootDir, p) + const file = await fs.readFile(pagePath, 'utf-8') + return { + contents: [{ + uri: uri.href, + text: file, + }] + } + }) + + return mcpServer +} + +function renderMarkdownTop(site: SiteData, sidebar: ReturnType) { + return `# ${site.title} + +${site.description} + +## Table of Contents + +${Object.entries(sidebar).map(([_caegory, items]) => { + const buf = [] as string[] + items.reduce((acc, item) => { + acc.push(`### ${item.text}`, '') + const items = (item.items || []) as DefaultTheme.SidebarItem[] + const itemBuf = [] as string[] + for (const subItem of items) { + if (subItem.link) { + itemBuf.push(`- [${subItem.text}](${subItem.link.endsWith('.md') ? subItem.link : `${subItem.link}.md`})`) + } + } + itemBuf.push('') + + if (itemBuf.length) { + acc.push(itemBuf.join('\n')) + } + return acc + }, buf) + return buf.join('\n') + }).join('\n\n') + } +` +} + +function getSideBar(sidebarDirs: string[], sideBar: DefaultTheme.Sidebar) { + return Object.keys(sideBar).reduce((acc, key) => { + const category = key.split('/').filter(Boolean)[0] + if (sidebarDirs.includes(category)) { + acc[category] = sideBar[key] || [] + } + return acc + }, {} as { [key: string]: DefaultTheme.SidebarItem[] }) +} + +const EXCLUDE_DIR_NAMES = [ + '.vitepress', + 'index.md', + 'public', +] + +async function getSidebarDirNames(root: string): Promise { + const dirs = await fs.readdir(root, { withFileTypes: true }); + return dirs.reduce((acc, dir) => { + if (dir.isDirectory() && !EXCLUDE_DIR_NAMES.includes(dir.name)) { + acc.push(dir.name) + } + return acc + }, [] as string[]) +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 66f6631d4..ae2d3c684 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -85,6 +85,7 @@ export default [ // ignore globally { ignores: [ + 'tools/mcp/**', '**/dist/**', '**/fixtures/**', '**/coverage/**', diff --git a/package.json b/package.json index 6df2f652c..74d6841fb 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "docs:dev": "vitepress dev docs", "docs:serve": "vitepress serve docs", "docs:setup": "pnpm build:typed && pnpm docs:apigen", + "docs:dev:mcp": "tsx docs/.vitepress/client.ts", "eslint:inspector": "npx @eslint/config-inspector", "example:ssr": "cd examples/ssr/vite && pnpm dev", "fix": "run-p lint:fix format:fix", @@ -160,6 +161,9 @@ "typescript-eslint": "^8.4.0", "vitepress": "1.6.3", "vitepress-plugin-llms": "^1.1.0", + "vite-plugin-mcp": "^0.2.2", + "@modelcontextprotocol/sdk": "^1.12.0", + "vite": "^6.0.0", "vitest": "^2.1.5", "vue": "3.5.13", "vue-i18n": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dbfbd33d1..23932a48f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,9 @@ importers: '@microsoft/api-extractor': specifier: 7.15.2 version: 7.15.2 + '@modelcontextprotocol/sdk': + specifier: ^1.12.0 + version: 1.12.0 '@rolldown/plugin-node-polyfills': specifier: ^1.0.0 version: 1.0.0 @@ -240,6 +243,12 @@ importers: typescript-eslint: specifier: ^8.4.0 version: 8.4.0(eslint@9.9.1(jiti@2.4.2))(typescript@5.7.2) + vite: + specifier: ^6.0.0 + version: 6.2.4(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1) + vite-plugin-mcp: + specifier: ^0.2.2 + version: 0.2.2(vite@6.2.4(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1)) vitepress: specifier: 1.6.3 version: 1.6.3(@algolia/client-search@5.20.0)(@types/node@22.10.3)(jiti@2.4.2)(postcss@8.5.3)(search-insights@2.13.0)(terser@5.27.0)(tsx@4.11.2)(typescript@5.7.2)(yaml@2.7.1) @@ -1540,8 +1549,8 @@ packages: resolution: {integrity: sha512-lH164+aDDptHZ3dBDbIhRa1dOPQUp+83iugpc+1upTOWCnwyC1PVis6rSWNMMJ8VQxvtHQB9JMib48K55y0PvQ==} engines: {node: '>= 16'} - '@intlify/shared@11.1.3': - resolution: {integrity: sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==} + '@intlify/shared@11.1.5': + resolution: {integrity: sha512-+I4vRzHm38VjLr/CAciEPJhGYFzWWW4HMTm+6H3WqknXLh0ozNX9oC8ogMUwTSXYR/wGUb1/lTpNziiCH5MybQ==} engines: {node: '>= 16'} '@intlify/shared@12.0.0-alpha.2': @@ -1652,6 +1661,10 @@ packages: '@microsoft/tsdoc@0.14.2': resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@modelcontextprotocol/sdk@1.12.0': + resolution: {integrity: sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==} + engines: {node: '>=18'} + '@napi-rs/wasm-runtime@0.2.6': resolution: {integrity: sha512-z8YVS3XszxFTO73iwvFDNpQIzdMmSDTP/mB3E/ucR37V3Sx57hSExcXyMoNwaucWxnsWf4xfbZv0iZ30jr0M4Q==} @@ -2986,6 +2999,10 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3050,9 +3067,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3109,6 +3123,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + anymatch@2.0.0: resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} @@ -3281,6 +3299,10 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + bonjour@3.5.0: resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} @@ -3400,10 +3422,18 @@ packages: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -3647,6 +3677,10 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -3660,10 +3694,18 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} @@ -3679,6 +3721,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -3701,6 +3747,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + crossws@0.2.4: resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} peerDependencies: @@ -3954,6 +4004,10 @@ packages: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} @@ -4007,6 +4061,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -4033,6 +4091,10 @@ packages: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -4040,6 +4102,10 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -4209,10 +4275,18 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.2: + resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==} + engines: {node: '>=18.0.0'} + eventsource@2.0.2: resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} engines: {node: '>=12.0.0'} + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -4244,10 +4318,20 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + extend-object@1.0.0: resolution: {integrity: sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==} @@ -4352,6 +4436,10 @@ packages: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-cache-dir@2.1.0: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} @@ -4447,6 +4535,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} @@ -4509,9 +4601,17 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stdin@5.0.1: resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==} engines: {node: '>=0.12.0'} @@ -4618,6 +4718,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4663,6 +4767,10 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -4697,6 +4805,10 @@ packages: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + hast-util-from-parse5@5.0.3: resolution: {integrity: sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==} @@ -5095,6 +5207,9 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -5536,6 +5651,10 @@ packages: match-index@1.0.3: resolution: {integrity: sha512-1XjyBWqCvEFFUDW/MPv0RwbITRD4xQXOvKoPYtLDq8IdZTfdF/cQSo5Yn4qvhfSSZgjgkTFsqJD2wOUG4ovV8Q==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} @@ -5597,6 +5716,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + memory-fs@0.4.1: resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} @@ -5623,6 +5746,10 @@ packages: merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5755,6 +5882,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} @@ -5763,6 +5894,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -5935,6 +6070,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -6035,6 +6174,10 @@ packages: object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -6308,6 +6451,10 @@ packages: path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} @@ -6326,6 +6473,9 @@ packages: pathe@2.0.2: resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -6385,6 +6535,10 @@ packages: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} @@ -6546,6 +6700,10 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + query-registry@3.0.1: resolution: {integrity: sha512-M9RxRITi2mHMVPU5zysNjctUT8bAPx6ltEXo/ir9+qmiM47Y7f0Ir3+OxUO5OjYAWdicBQRew7RtHtqUXydqlg==} engines: {node: '>=20'} @@ -6597,6 +6755,10 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + rc-config-loader@3.0.0: resolution: {integrity: sha512-bwfUSB37TWkHfP+PPjb/x8BUjChFmmBK44JMfVnU7paisWqZl/o5k7ttCH+EQLnrbn2Aq8Fo1LAsyUiz+WF4CQ==} @@ -6845,6 +7007,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrweb-cssom@0.7.1: resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} @@ -6952,6 +7118,10 @@ packages: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + sentence-splitter@3.2.3: resolution: {integrity: sha512-eDqaz4MasTn6Mp3dagKzIbiNsJpgpueMEQqCJeN9F9XQRFLDGFJ0kX8R3uMp+mU7J58dWjr4q6eks/nUX/vnJQ==} hasBin: true @@ -6976,6 +7146,10 @@ packages: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -7026,6 +7200,18 @@ packages: shiki@2.1.0: resolution: {integrity: sha512-yvKPdNGLXZv7WC4bl7JBbU3CEcUxnBanvMez8MG3gZXKpClGL4bHqFyLhTx+2zUvbjClUANs/S22HXb7aeOgmA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + side-channel@1.0.5: resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} engines: {node: '>= 0.4'} @@ -7034,6 +7220,10 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -7642,6 +7832,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.1: resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} engines: {node: '>= 0.4'} @@ -7920,6 +8114,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-mcp@0.2.2: + resolution: {integrity: sha512-bFIAPqKfBMNDPY7RiMuX9P+FbdBh6bOxuvYiF048PkqR5Vf0xiJ4WJnxaDHfUzsdZV/bJANud2qWbmwA/Pjrhw==} + peerDependencies: + vite: ^6.0.0 + vite@6.1.3: resolution: {integrity: sha512-JMnf752ldN0UhZoPYXuWiRPsC2Z5hPy9JeUwfNSPBY8TyFZbSHRE1f6/WA8umOEJp0EN3zTddgNNSLT6Fc10UQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -8384,8 +8583,13 @@ packages: resolution: {integrity: sha512-Mb6GzuRyUEl8X+6V6xzHbd4XV0au/4gOYrYP+CAfHL32uPmGswES+v2YqonZiW1NZWVA3jkssCKSU2knonm/aQ==} engines: {node: '>=20'} - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.25.32: + resolution: {integrity: sha512-OSm2xTIRfW8CV5/QKgngwmQW/8aPfGdaQFlrGoErlgg/Epm7cjb6K6VEyExfe65a3VybUOnu381edLb0dfJl0g==} zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} @@ -8708,7 +8912,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9135,7 +9339,7 @@ snapshots: '@intlify/shared@11.0.1': optional: true - '@intlify/shared@11.1.3': {} + '@intlify/shared@11.1.5': {} '@intlify/shared@12.0.0-alpha.2': {} @@ -9226,7 +9430,7 @@ snapshots: '@jsdevtools/ez-spawn@3.0.4': dependencies: call-me-maybe: 1.0.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 string-argv: 0.3.2 type-detect: 4.0.8 @@ -9277,6 +9481,22 @@ snapshots: '@microsoft/tsdoc@0.14.2': {} + '@modelcontextprotocol/sdk@1.12.0': + dependencies: + ajv: 6.12.6 + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.25.32 + zod-to-json-schema: 3.24.5(zod@3.25.32) + transitivePeerDependencies: + - supports-color + '@napi-rs/wasm-runtime@0.2.6': dependencies: '@emnapi/core': 1.3.1 @@ -9767,7 +9987,7 @@ snapshots: '@secretlint/resolver': 9.0.0 '@secretlint/types': 9.0.0 ajv: 8.17.1 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) rc-config-loader: 4.1.3 try-resolve: 1.0.1 transitivePeerDependencies: @@ -9777,7 +9997,7 @@ snapshots: dependencies: '@secretlint/profiler': 9.0.0 '@secretlint/types': 9.0.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) structured-source: 4.0.0 transitivePeerDependencies: - supports-color @@ -9790,7 +10010,7 @@ snapshots: '@textlint/module-interop': 14.4.2 '@textlint/types': 14.4.2 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) pluralize: 8.0.0 strip-ansi: 6.0.1 table: 6.9.0 @@ -9807,7 +10027,7 @@ snapshots: '@secretlint/profiler': 9.0.0 '@secretlint/source-creator': 9.0.0 '@secretlint/types': 9.0.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) p-map: 4.0.0 transitivePeerDependencies: - supports-color @@ -9947,7 +10167,7 @@ snapshots: '@textlint/ast-tester@12.6.1': dependencies: '@textlint/ast-node-types': 12.6.1 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color @@ -9961,7 +10181,7 @@ snapshots: '@textlint/module-interop': 12.6.1 '@textlint/types': 12.6.1 '@textlint/utils': 12.6.1 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) rc-config-loader: 4.1.3 try-resolve: 1.0.1 transitivePeerDependencies: @@ -9974,7 +10194,7 @@ snapshots: '@textlint/module-interop': 12.6.1 '@textlint/types': 12.6.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) diff: 4.0.2 is-file: 1.0.0 string-width: 4.2.3 @@ -9993,7 +10213,7 @@ snapshots: '@textlint/source-code-fixer': 12.6.1 '@textlint/types': 12.6.1 '@textlint/utils': 12.6.1 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) deep-equal: 1.1.2 structured-source: 4.0.0 transitivePeerDependencies: @@ -10006,7 +10226,7 @@ snapshots: '@textlint/module-interop': 12.6.1 '@textlint/types': 12.6.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) is-file: 1.0.0 js-yaml: 3.14.1 lodash: 4.17.21 @@ -10028,7 +10248,7 @@ snapshots: '@textlint/resolver': 14.4.2 '@textlint/types': 14.4.2 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) js-yaml: 3.14.1 lodash: 4.17.21 pluralize: 2.0.0 @@ -10042,7 +10262,7 @@ snapshots: '@textlint/markdown-to-ast@12.6.1': dependencies: '@textlint/ast-node-types': 12.6.1 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) mdast-util-gfm-autolink-literal: 0.1.3 remark-footnotes: 3.0.0 remark-frontmatter: 3.0.0 @@ -10062,7 +10282,7 @@ snapshots: '@textlint/source-code-fixer@12.6.1': dependencies: '@textlint/types': 12.6.1 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color @@ -10250,7 +10470,7 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) eslint: 9.9.1(jiti@2.4.2) optionalDependencies: typescript: 5.7.2 @@ -10266,7 +10486,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.7.2) '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@2.4.2))(typescript@5.7.2) - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) ts-api-utils: 1.3.0(typescript@5.7.2) optionalDependencies: typescript: 5.7.2 @@ -10280,7 +10500,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -10779,6 +10999,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 @@ -10807,7 +11032,7 @@ snapshots: agent-base@7.1.0: dependencies: - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color @@ -10833,13 +11058,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -10898,6 +11116,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.17.0: {} + anymatch@2.0.0(supports-color@6.1.0): dependencies: micromatch: 3.1.10(supports-color@6.1.0) @@ -10912,7 +11132,7 @@ snapshots: api-docs-gen@0.4.0(@types/node@22.10.3): dependencies: - '@intlify/shared': 11.1.3 + '@intlify/shared': 11.1.5 '@microsoft/api-extractor-model': 7.28.9(@types/node@22.10.3) '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 @@ -11090,6 +11310,20 @@ snapshots: transitivePeerDependencies: - supports-color + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0(supports-color@6.1.0) + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + bonjour@3.5.0: dependencies: array-flatten: 2.1.2 @@ -11282,6 +11516,11 @@ snapshots: union-value: 1.0.1 unset-value: 1.0.0 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -11290,6 +11529,11 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.1 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} callsites@3.1.0: {} @@ -11539,6 +11783,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + content-type@1.0.5: {} convert-source-map@2.0.0: {} @@ -11547,8 +11795,12 @@ snapshots: cookie-signature@1.0.6: {} + cookie-signature@1.2.2: {} + cookie@0.6.0: {} + cookie@0.7.2: {} + copy-anything@3.0.5: dependencies: is-what: 4.1.16 @@ -11566,6 +11818,11 @@ snapshots: core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + create-ecdh@4.0.4: dependencies: bn.js: 4.12.0 @@ -11606,6 +11863,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + crossws@0.2.4: {} crypt@0.0.2: {} @@ -11683,9 +11946,11 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.0: + debug@4.4.0(supports-color@6.1.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 6.1.0 decamelize-keys@1.1.1: dependencies: @@ -11830,6 +12095,12 @@ snapshots: dotenv@16.4.7: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 @@ -11886,6 +12157,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -11952,10 +12225,16 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} + es-errors@1.3.0: {} es-module-lexer@1.6.0: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.4 @@ -12208,8 +12487,14 @@ snapshots: events@3.3.0: {} + eventsource-parser@3.0.2: {} + eventsource@2.0.2: {} + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.2 + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 @@ -12227,7 +12512,7 @@ snapshots: execa@2.1.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 5.2.0 is-stream: 2.0.1 merge-stream: 2.0.0 @@ -12239,7 +12524,7 @@ snapshots: execa@8.0.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -12282,6 +12567,10 @@ snapshots: expect-type@1.1.0: {} + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + express@4.19.2(supports-color@6.1.0): dependencies: accepts: 1.3.8 @@ -12318,6 +12607,38 @@ snapshots: transitivePeerDependencies: - supports-color + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0(supports-color@6.1.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + extend-object@1.0.0: {} extend-shallow@2.0.1: @@ -12440,6 +12761,17 @@ snapshots: transitivePeerDependencies: - supports-color + finalhandler@2.1.0: + dependencies: + debug: 4.4.0(supports-color@6.1.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 @@ -12526,7 +12858,7 @@ snapshots: foreground-child@3.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 form-data@4.0.0: @@ -12545,6 +12877,8 @@ snapshots: fresh@0.5.2: {} + fresh@2.0.0: {} + from2@2.3.0: dependencies: inherits: 2.0.4 @@ -12613,8 +12947,26 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.1 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-port-please@3.1.2: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stdin@5.0.1: {} get-stream@4.1.0: @@ -12754,6 +13106,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -12810,6 +13164,8 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -12850,6 +13206,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + hast-util-from-parse5@5.0.3: dependencies: ccount: 1.1.0 @@ -12950,7 +13310,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color @@ -12979,7 +13339,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color @@ -13053,7 +13413,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.1 - side-channel: 1.0.5 + side-channel: 1.0.6 interpret@1.4.0: {} @@ -13224,6 +13584,8 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-promise@4.0.0: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.6 @@ -13709,6 +14071,8 @@ snapshots: dependencies: regexp.prototype.flags: 1.5.2 + math-intrinsics@1.1.0: {} + md5.js@1.3.5: dependencies: hash-base: 3.1.0 @@ -13853,6 +14217,8 @@ snapshots: media-typer@0.3.0: {} + media-typer@1.1.0: {} + memory-fs@0.4.1: dependencies: errno: 0.1.8 @@ -13886,6 +14252,8 @@ snapshots: merge-descriptors@1.0.1: {} + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -14059,7 +14427,7 @@ snapshots: micromark@2.11.4: dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -14067,7 +14435,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -14127,6 +14495,8 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.18: dependencies: mime-db: 1.33.0 @@ -14135,6 +14505,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mime@2.6.0: {} @@ -14310,6 +14684,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@1.0.0: {} + neo-async@2.6.2: {} nice-try@1.0.5: {} @@ -14437,6 +14813,8 @@ snapshots: object-inspect@1.13.1: {} + object-inspect@1.13.4: {} + object-is@1.1.5: dependencies: call-bind: 1.0.7 @@ -14710,6 +15088,8 @@ snapshots: path-to-regexp@3.3.0: {} + path-to-regexp@8.2.0: {} + path-type@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -14726,6 +15106,8 @@ snapshots: pathe@2.0.2: {} + pathe@2.0.3: {} + pathval@2.0.0: {} pbkdf2@3.1.2: @@ -14770,6 +15152,8 @@ snapshots: pinkie@2.0.4: {} + pkce-challenge@5.0.0: {} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 @@ -14944,13 +15328,17 @@ snapshots: dependencies: side-channel: 1.0.6 + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + query-registry@3.0.1: dependencies: query-string: 9.1.0 quick-lru: 7.0.0 url-join: 5.0.0 validate-npm-package-name: 5.0.1 - zod: 3.23.8 + zod: 3.25.32 zod-package-json: 1.0.3 query-string@4.3.4: @@ -14996,9 +15384,16 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + rc-config-loader@3.0.0: dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) js-yaml: 3.14.1 json5: 2.2.3 require-from-string: 2.0.2 @@ -15007,7 +15402,7 @@ snapshots: rc-config-loader@4.1.3: dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) js-yaml: 4.1.0 json5: 2.2.3 require-from-string: 2.0.2 @@ -15385,6 +15780,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 + router@2.2.0: + dependencies: + debug: 4.4.0(supports-color@6.1.0) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + rrweb-cssom@0.7.1: {} run-parallel@1.2.0: @@ -15448,7 +15853,7 @@ snapshots: '@secretlint/formatter': 9.0.0 '@secretlint/node': 9.0.0 '@secretlint/profiler': 9.0.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) globby: 14.1.0 meow: 12.1.1 read-pkg: 8.1.0 @@ -15511,6 +15916,22 @@ snapshots: transitivePeerDependencies: - supports-color + send@1.2.0: + dependencies: + debug: 4.4.0(supports-color@6.1.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + sentence-splitter@3.2.3: dependencies: '@textlint/ast-node-types': 4.4.3 @@ -15562,6 +15983,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + set-blocking@2.0.0: {} set-function-length@1.2.1: @@ -15622,6 +16052,26 @@ snapshots: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + side-channel@1.0.5: dependencies: call-bind: 1.0.7 @@ -15636,6 +16086,14 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.1 + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -15754,7 +16212,7 @@ snapshots: spdy-transport@3.0.0(supports-color@6.1.0): dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.4.0(supports-color@6.1.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -15968,7 +16426,7 @@ snapshots: table@6.8.1: dependencies: - ajv: 8.12.0 + ajv: 8.17.1 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -15976,7 +16434,7 @@ snapshots: table@6.9.0: dependencies: - ajv: 8.12.0 + ajv: 8.17.1 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -16300,6 +16758,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.1: dependencies: call-bind: 1.0.7 @@ -16608,7 +17072,7 @@ snapshots: vite-node@2.1.9(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1): dependencies: cac: 6.7.14 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 6.2.4(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1) @@ -16626,6 +17090,17 @@ snapshots: - tsx - yaml + vite-plugin-mcp@0.2.2(vite@6.2.4(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1)): + dependencies: + '@modelcontextprotocol/sdk': 1.12.0 + ansis: 3.17.0 + debug: 4.4.0(supports-color@6.1.0) + pathe: 2.0.3 + vite: 6.2.4(@types/node@22.10.3)(jiti@2.4.2)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1) + zod: 3.25.32 + transitivePeerDependencies: + - supports-color + vite@6.1.3(@types/node@22.10.3)(jiti@1.21.0)(terser@5.27.0)(tsx@4.11.2)(yaml@2.7.1): dependencies: esbuild: 0.24.2 @@ -16743,7 +17218,7 @@ snapshots: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 chai: 5.1.2 - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) expect-type: 1.1.0 magic-string: 0.30.17 pathe: 1.1.2 @@ -16778,7 +17253,7 @@ snapshots: vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@2.4.2)): dependencies: - debug: 4.4.0 + debug: 4.4.0(supports-color@6.1.0) eslint: 9.9.1(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -17215,9 +17690,13 @@ snapshots: zod-package-json@1.0.3: dependencies: - zod: 3.23.8 + zod: 3.25.32 + + zod-to-json-schema@3.24.5(zod@3.25.32): + dependencies: + zod: 3.25.32 - zod@3.23.8: {} + zod@3.25.32: {} zwitch@1.0.5: {} diff --git a/tsconfig.json b/tsconfig.json index f3f535547..a5e464409 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -82,5 +82,5 @@ "shim.d.ts", "*.config.ts" ], - "exclude": ["node_modules"] + "exclude": ["node_modules", "tools/mcp"] }