{"owner":"DayuanJiang","repo":"next-ai-draw-io","hasSkills":true,"totalSkillsCount":7,"totalTokensCount":22106,"categories":["anthropic-skill","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"drawio":{"command":"npx","args":["@next-ai-drawio/mcp-server@latest"]}}},"found":["packages/mcp-server/package.json","packages/claude-plugin/.mcp.json","packages/mcp-server/tsconfig.json","packages/claude-plugin/README.md","packages/mcp-server/README.md","packages/mcp-server/package-lock.json","packages/claude-plugin/.claude-plugin/plugin.json"],"skills":{"packages/mcp-server/package.json":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"description\": \"draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo\",\n    \"mcpName\": \"io.github.DayuanJiang/next-ai-drawio\",\n    \"type\": \"module\",\n    \"main\": \"dist/index.js\",\n    \"bin\": {\n        \"next-ai-drawio-mcp\": \"./dist/index.js\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && tsc -p shell && node scripts/copy-assets.mjs && node scripts/fetch-drawio.mjs && node scripts/build-shell.mjs\",\n        \"check-drawio\": \"node scripts/check-drawio-files.mjs\",\n        \"check-package\": \"node scripts/check-package.mjs\",\n        \"dev\": \"tsx watch src/index.ts\",\n        \"start\": \"node dist/index.js\",\n        \"test\": \"vitest run\",\n        \"test:watch\": \"vitest\",\n        \"test:e2e\": \"playwright test\",\n        \"prepublishOnly\": \"npm run build\"\n    },\n    \"keywords\": [\n        \"mcp\",\n        \"mcp-server\",\n        \"drawio\",\n        \"draw.io\",\n        \"diagrams.net\",\n        \"diagram\",\n        \"architecture-diagram\",\n        \"flowchart\",\n        \"ai\",\n        \"claude\",\n        \"claude-code\",\n        \"cursor\",\n        \"codex\",\n        \"model-context-protocol\"\n    ],\n    \"author\": \"DayuanJiang\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n        \"directory\": \"packages/mcp-server\"\n    },\n    \"homepage\": \"https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io/issues\"\n    },\n    \"publishConfig\": {\n        \"access\": \"public\"\n    },\n    \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n        \"linkedom\": \"^0.18.0\",\n        \"open\": \"^11.0.0\",\n        \"pako\": \"^2.2.0\",\n        \"saxes\": \"^6.0.0\",\n        \"zod\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"^24.0.0\",\n        \"@types/pako\": \"^2.0.4\",\n        \"tsx\": \"^4.19.0\",\n        \"typescript\": \"^5\",\n        \"vitest\": \"^4.1.8\"\n    },\n    \"engines\": {\n        \"node\": \">=18\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","packages/claude-plugin/.mcp.json":"{\n    \"mcpServers\": {\n        \"drawio\": {\n            \"command\": \"npx\",\n            \"args\": [\"@next-ai-drawio/mcp-server@latest\"]\n        }\n    }\n}\n","packages/mcp-server/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"ES2022\",\n        \"module\": \"Node16\",\n        \"moduleResolution\": \"Node16\",\n        \"outDir\": \"./dist\",\n        \"rootDir\": \"./src\",\n        \"strict\": true,\n        \"esModuleInterop\": true,\n        \"skipLibCheck\": true,\n        \"forceConsistentCasingInFileNames\": true,\n        \"sourceMap\": true,\n        \"resolveJsonModule\": true,\n        \"rewriteRelativeImportExtensions\": true,\n        \"types\": [\"node\"]\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\", \"dist\"]\n}\n","packages/claude-plugin/README.md":"# Next AI Draw.io - Claude Code Plugin\n\nAI-powered Draw.io diagram generation with real-time browser preview for Claude Code.\n\n## Installation\n\n### From the Claude Code community marketplace\n\n```\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\nThis needs Claude Code 2.1.275 or later. On an older version, run `/plugin marketplace add anthropics/claude-plugins-community` first, then `/plugin install next-ai-drawio@claude-community`.\n\n### Manual Installation\n\n```bash\nclaude --plugin-dir /path/to/packages/claude-plugin\n```\n\nOr add the MCP server directly, for every project (`--scope user`):\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n## Features\n\n- **Real-time Preview**: Diagrams appear and update in your browser as Claude creates them. The preview is the web app's canvas: a change Claude makes to the page on screen is outlined, and one Ctrl+Z takes it back\n- **Selection**: Select shapes in the preview and say \"move these\"; Claude reads what you selected with `get_selection`\n- **Drawing Rules and Shape Libraries**: Claude gets the web app's layout and style rules and the icon docs for AWS, Azure, GCP, Kubernetes and more\n- **Self-check**: Claude can take a screenshot of the rendered diagram and fix what looks wrong\n- **Draw from Your Files**: ask Claude to draw from a document, image or web page; it reads the source with its own tools and draws. Existing .drawio files open with load_diagram\n- **Version History**: The last 20 versions appear as cards next to the canvas, with thumbnails; restore one, undo the latest, or compare a version with the canvas\n- **Natural Language**: Describe diagrams in plain text - flowcharts, architecture diagrams, etc.\n- **Edit Support**: Modify existing diagrams with natural language instructions, including your own edits in the browser\n- **Export**: Save diagrams as `.drawio`, `.png`, `.svg`, or `.drawio.svg` files\n- **Auto-save**: Each diagram is saved to `~/.next-ai-drawio/`, so `claude --resume` can pick it up again\n- **Custom Instructions**: keep your own drawing rules in `~/.next-ai-drawio/instructions.md` (for example \"Always draw in minimal style\"); they are appended to the drawing guide on every call\n- **Self-contained**: Embedded server and the draw.io editor in one package; the preview works offline after install\n\n## Use Case Examples\n\n### 1. Create Architecture Diagrams\n\n```\nGenerate an AWS architecture diagram with Lambda, API Gateway, DynamoDB,\nand S3 for a serverless REST API\n```\n\n### 2. Flowchart Generation\n\n```\nCreate a flowchart showing the CI/CD pipeline: code commit -> build ->\ntest -> staging deploy -> production deploy with approval gates\n```\n\n### 3. System Design Documentation\n\n```\nDesign a microservices e-commerce system with user service, product catalog,\nshopping cart, order processing, and payment gateway\n```\n\n### 4. Cloud Architecture (AWS/GCP/Azure)\n\n```\nGenerate a GCP architecture diagram with Cloud Run, Cloud SQL, and\nCloud Storage for a web application\n```\n\n### 5. Sequence Diagrams\n\n```\nCreate a sequence diagram showing OAuth 2.0 authorization code flow\nbetween user, client app, auth server, and resource server\n```\n\n### 6. Draw From a Document\n\n```\nRead docs/architecture.md and draw the system as a diagram\n```\n\n### 7. Recreate a Sketch\n\n```\nRecreate the whiteboard photo at ~/Desktop/sketch.jpg as a clean draw.io diagram\n```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `start_session` | Opens browser with real-time diagram preview; the result includes the drawing rules. Pass `session_id` to continue a saved diagram |\n| `list_saved_diagrams` | List the auto-saved diagrams of earlier sessions, newest first, with their pages |\n| `get_drawing_guide` | Return the drawing rules again |\n| `get_shape_library` | Return the shapes and icon styles of a library such as `aws4` |\n| `create_new_diagram` | Create a new diagram from XML |\n| `load_diagram` | Load a `.drawio` or `.drawio.svg` file from disk |\n| `edit_diagram` | Edit diagram by ID-based operations; all or nothing |\n| `get_diagram` | Get the current diagram XML |\n| `get_selection` | Return the shapes and edges you selected in the preview, so Claude can act on \"these\" |\n| `screenshot_diagram` | Return a PNG of a page so Claude can check the result |\n| `export_diagram` | Save diagram to a `.drawio`, `.png`, `.svg`, or `.drawio.svg` file |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Work with multi-page diagrams |\n| `restore_version` | Undo: go back to an earlier version from History (redo is possible too) |\n\n## How It Works\n\n```\nClaude Code <--stdio--> MCP Server <--http--> Browser (draw.io)\n```\n\n1. Ask Claude to create a diagram\n2. Claude calls `start_session` to open a browser window\n3. Claude generates diagram XML and sends it to the browser\n4. You see the diagram update in real-time!\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `6002` | Port for the embedded HTTP server |\n| `DRAWIO_BASE_URL` | unset (the bundled draw.io) | An external draw.io, such as a self-hosted instance. With it Claude's changes are not outlined on the canvas, Ctrl+Z does not take them back and `get_selection` cannot read the selection |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for auto-saved diagrams and your `instructions.md`; `off` turns auto-save off (`instructions.md` is then read from the default folder) |\n| `DRAWIO_LANG` | unset | Language of the draw.io editor, such as `en`, `zh`, `zh-tw`, `ja` or `de`. Unset, draw.io chooses (the browser language on `embed.diagrams.net`, English on a self-hosted draw.io) and the user can change it under **Extras > Language** |\n| `DRAWIO_UI` | unset | draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple`. Unset, the user picks one under **Extras > Theme** |\n| `DRAWIO_DARK` | `auto` | Dark mode of the preview and the editor until the user switches it with the button at the top right: `auto` follows the system, `1` starts dark, `0` starts light |\n| `DRAWIO_PREVIEW_UI` | `shell` | The preview page; `classic` opens the previous preview page for one more release |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | Set to `true` to attach a screenshot to every `create_new_diagram` and `edit_diagram` result (costs 2 to 10 s per call) |\n| `DEBUG` | unset | Set to `true` to log debug messages |\n\n## Links\n\n- [Homepage](https://next-ai-drawio.jiang.jp)\n- [MCP server page](https://next-ai-drawio.jiang.jp/en/mcp): every client's setup and how it compares with other draw.io MCP servers\n- [Use it from Claude Code](https://next-ai-drawio.jiang.jp/en/docs/claude-code): the docs page for this plugin\n- [Gallery](https://next-ai-drawio.jiang.jp/en/gallery): diagrams Claude drew with this server, with their prompts\n- [GitHub Repository](https://github.com/DayuanJiang/next-ai-draw-io)\n- [MCP Server Documentation](https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server)\n\n## License\n\nApache-2.0\n","packages/mcp-server/README.md":"# Next AI Draw.io MCP Server\n\nAn MCP server that lets Claude Code, Cursor, VS Code and other AI agents draw draw.io diagrams from your project's files, with a live preview in your browser. The preview is the canvas of the [Next AI Draw.io web app](https://next-ai-drawio.jiang.jp/): the AI's changes are outlined, Ctrl+Z takes them back, and you can edit by hand at any time.\n\nhttps://github.com/user-attachments/assets/6f53a67b-ab21-4113-9fee-7fb32f9de678\n\n## Install\n\nIn VS Code or Cursor, one click adds it: [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522drawio%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540next-ai-drawio%252Fmcp-server%2540latest%2522%255D%257D) [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_Server-000000?style=flat-square)](https://cursor.com/en/install-mcp?name=drawio&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAbmV4dC1haS1kcmF3aW8vbWNwLXNlcnZlckBsYXRlc3QiXX0%3D)\n\n### Let your AI agent install it\n\nPaste this into Claude Code, Codex, Cursor, VS Code, Cline or any agent that can edit files and run commands:\n\n```text\nInstall the drawio MCP server for the client you are running in, following\nhttps://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/main/packages/mcp-server/README.md\nInstall it for all my projects (user scope, for Claude Code \"--scope user\"),\nname the server \"drawio\" and keep the servers that are already configured.\nThen tell me how to reload so its tools show up.\n```\n\n### Install by hand\n\n**Claude Code**\n\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n`--scope user` makes the tools available in every project. Without it, they exist only in the folder where you ran the command.\n\nOr install it as a plugin from the Claude Code community marketplace (Claude Code 2.1.275 or later):\n\n```text\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\n**Codex CLI**\n\n```bash\ncodex mcp add drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\nCodex asks before each drawio tool that changes the diagram, and `codex exec` without full access fails with \"MCP tool call requires approval\". To let the drawio tools run without asking, add one line to the server's section in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.drawio]\ncommand = \"npx\"\nargs = [\"@next-ai-drawio/mcp-server@latest\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\nTo approve only some tools, use `[mcp_servers.drawio.tools.<tool name>]` with `approval_mode = \"approve\"` instead.\n\n**VS Code** (`.vscode/mcp.json`)\n\n```json\n{\n  \"servers\": {\n    \"drawio\": { \"type\": \"stdio\", \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\n**Cursor, Claude Desktop, Cline and most other clients** (`~/.cursor/mcp.json`, `claude_desktop_config.json`, `cline_mcp_settings.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"drawio\": { \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\nRestart the client, then ask, for example, \"Read this repo and draw its architecture\". The preview opens in your browser and the diagram appears as it is drawn.\n\n## Features\n\n- **Draws from your project**: the agent reads your code and documents with its own tools. Existing `.drawio` and `.drawio.svg` files open with `load_diagram`.\n- **The web app's canvas**: the AI's changes are outlined for a few seconds (never in exports) and one Ctrl+Z takes them back. Select shapes and say \"these\" (`get_selection`). Your hand edits are read before the AI edits again.\n- **Real icons**: the web app's drawing rules and shape libraries (AWS, Azure, GCP, Kubernetes, Cisco and more), so the AI uses real icon names.\n- **Self-check**: the AI can look at a screenshot of the rendered diagram and fix overlaps (`screenshot: true`, or `screenshot_diagram`).\n- **Versions**: the last 20 versions as cards next to the canvas; restore or compare one, or ask the AI to undo (`restore_version`).\n- **Pages and export**: multi-page diagrams; save as `.drawio`, `.png`, `.svg` or `.drawio.svg`. Images get a 20 px margin, and PNGs a white background (`transparent: true` for none).\n- **Offline**: the draw.io editor ships inside the package.\n\n## Choosing a draw.io MCP server\n\nSeveral MCP servers draw draw.io diagrams. As of October 2026 they differ like this:\n\n| Server | How you see and change the diagram | A good fit when |\n|---|---|---|\n| This server, `@next-ai-drawio/mcp-server` | A live draw.io canvas in your browser. The AI reads it back, including your hand edits and selection; its changes are outlined, Ctrl+Z takes them back, and earlier versions can be restored | You and the AI take turns on the same diagram |\n| draw.io's official [`@drawio/mcp`](https://github.com/jgraph/drawio-mcp) | Opens each diagram from XML, CSV or Mermaid in the draw.io editor in a new tab; no tool reads it back | You want the diagram in the full draw.io editor and edit it yourself from there |\n| draw.io's hosted MCP app, `https://mcp.draw.io/mcp` | Shows the diagram inside the chat in Claude.ai, ChatGPT, VS Code or Cursor, with nothing to install; the diagram is sent to draw.io's server | You work in a chat app and want to see the diagram in the conversation |\n| draw.io's plugin for Claude Code, Codex CLI and Copilot CLI | A skill that writes `.drawio` files; PNG, SVG and PDF export needs draw.io Desktop | You want diagram files in your repository without an MCP server |\n| [`lgazo/drawio-mcp-server`](https://github.com/lgazo/drawio-mcp-server) | A draw.io editor on localhost, or your own draw.io through a browser extension; tools create, read, update and delete single shapes, layers and pages | You want fine-grained tools, several documents at once, or Mermaid import |\n\n## Saved diagrams\n\nEvery change is saved to `~/.next-ai-drawio/<session-id>.drawio` with its last 20 versions; the newest 50 diagrams are kept. To continue one in a later conversation, ask the AI for it: it finds it with `list_saved_diagrams` and reopens it with `start_session`.\n\n## Your own drawing rules\n\nWrite them in `~/.next-ai-drawio/instructions.md`, for example \"Always use a minimal style\". They are added to the drawing guide on every call, so edits apply without a restart. The first 5000 characters are used.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `start_session` | Open the preview and return the drawing guide; `session_id` continues a saved diagram |\n| `create_new_diagram` | Draw a new diagram from `mxCell` XML |\n| `edit_diagram` | Add, update or delete cells by id, all or nothing |\n| `get_diagram` | The current XML, including your edits in the browser |\n| `get_selection` | The shapes you selected in the preview |\n| `screenshot_diagram` | A PNG of a page, for the AI to check |\n| `load_diagram`, `export_diagram` | Open a `.drawio` or `.drawio.svg` file; save `.drawio`, `.png`, `.svg` or `.drawio.svg` |\n| `restore_version` | Go back to an earlier version; a redo stays possible |\n| `list_saved_diagrams` | Diagrams saved by earlier sessions, newest first |\n| `get_drawing_guide`, `get_shape_library` | The drawing rules again; the icon styles of a library such as `aws4` |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Pages (tabs) |\n\n## Configuration\n\nEnvironment variables, set in the client's `env` for the server:\n\n| Variable | Default | What it does |\n|---|---|---|\n| `PORT` | `6002` | Preview port; when it is taken, the next free one up to 6020 is used |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for saved diagrams and `instructions.md`; `off` turns saving off |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | `true` attaches a screenshot to every create and edit result (2 to 10 s per call) |\n| `DRAWIO_BASE_URL` | the bundled draw.io | Use another draw.io, such as a self-hosted one (see below) |\n| `DRAWIO_LANG` | unset | Fix the editor and preview language: `en`, `zh`, `zh-tw`, `ja`, `de` and so on |\n| `DRAWIO_UI` | unset | Fix the draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple` |\n| `DRAWIO_DARK` | `auto` | `1` starts dark, `0` starts light, `auto` follows the system |\n| `BROWSER` | unset | `none` does not open the preview by itself; `start_session` still returns the URL |\n| `DRAWIO_PREVIEW_UI` | `shell` | `classic` opens the previous preview page, without outlines, Ctrl+Z or `get_selection` |\n| `DEBUG` | unset | `true` logs debug messages to stderr |\n\n### Self-hosted draw.io\n\n```bash\ndocker run -d -p 8080:8080 jgraph/drawio\n```\n\nThen set `DRAWIO_BASE_URL=http://localhost:8080`. The preview cannot reach into a draw.io from another origin, so the AI's changes are not outlined, Ctrl+Z does not take them back (use the version cards) and `get_selection` does not work. The bundled copy leaves out a few features that load code on demand, such as the org chart layout. It also has no image proxy, so exported images leave out pictures inserted by their web address; see [Offline deployment](https://github.com/DayuanJiang/next-ai-draw-io/blob/main/docs/en/offline-deployment.md#insert-images-from-other-websites).\n\n## Troubleshooting\n\n- **Blank preview in VS Code Simple Browser or Cursor's browser**: the page refuses to be embedded in other pages. Open the URL in a regular browser.\n- **Screenshot or PNG/SVG export times out**: the preview tab renders them, and browsers slow down background tabs. Bring the tab to the front and try again.\n- **\"No active session\"**: the AI has to call `start_session` first.\n- **The preview does not update**: open the URL that `start_session` returned; its `?mcp=` part connects the page to the session.\n\n## How it works\n\nThe server talks to the agent over stdio and runs an HTTP server on `127.0.0.1` that serves the preview page and the bundled draw.io; the page polls it for changes. Every `/api` request needs a token that only the preview page has, so other websites cannot read or change your diagram.\n\n## License\n\nApache-2.0\n","packages/mcp-server/package-lock.json":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"lockfileVersion\": 3,\n    \"requires\": true,\n    \"packages\": {\n        \"\": {\n            \"name\": \"@next-ai-drawio/mcp-server\",\n            \"version\": \"0.4.6\",\n            \"license\": \"Apache-2.0\",\n            \"dependencies\": {\n                \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n                \"linkedom\": \"^0.18.0\",\n                \"open\": \"^11.0.0\",\n                \"pako\": \"^2.2.0\",\n                \"saxes\": \"^6.0.0\",\n                \"zod\": \"^4.0.0\"\n            },\n            \"bin\": {\n                \"next-ai-drawio-mcp\": \"dist/index.js\"\n            },\n            \"devDependencies\": {\n                \"@types/node\": \"^24.0.0\",\n                \"@types/pako\": \"^2.0.4\",\n                \"tsx\": \"^4.19.0\",\n                \"typescript\": \"^5\",\n                \"vitest\": \"^4.1.8\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@emnapi/core\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz\",\n            \"integrity\": \"sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/wasi-threads\": \"1.2.1\",\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/runtime\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz\",\n            \"integrity\": \"sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/wasi-threads\": {\n            \"version\": \"1.2.1\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz\",\n            \"integrity\": \"sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@esbuild/aix-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"aix\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-loong64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz\",\n            \"integrity\": \"sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==\",\n            \"cpu\": [\n                \"loong64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-mips64el\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz\",\n            \"integrity\": \"sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==\",\n            \"cpu\": [\n                \"mips64el\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-riscv64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz\",\n            \"integrity\": \"sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==\",\n            \"cpu\": [\n                \"riscv64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-s390x\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz\",\n            \"integrity\": \"sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openharmony-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/sunos-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"sunos\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@hono/node-server\": {\n            \"version\": \"2.1.3\",\n            \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.3.tgz\",\n            \"integrity\": \"sha512-TA//nWMqPhbfdfneACk6t5a9eqbS9lABEPyKn0/xZTah3H3U2XaVg85rJFl0/Fyit0I552YDHgXGVSf3GwqbUw==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=20\"\n            },\n            \"peerDependencies\": {\n                \"hono\": \"^4\"\n            }\n        },\n        \"node_modules/@jridgewell/sourcemap-codec\": {\n            \"version\": \"1.5.5\",\n            \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n            \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@modelcontextprotocol/sdk\": {\n            \"version\": \"1.32.0\",\n            \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.0.tgz\",\n            \"integrity\": \"sha512-8BviX/hK4Gd2eL1KdTwm0gfl4d3wdoErW0Jd00h6nomUAtk6IJk5vwQJc6kfWtJTzN5OEV/lgIiJKI8fiDGAlA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n                \"ajv\": \"^8.17.1\",\n                \"ajv-formats\": \"^3.0.1\",\n                \"content-type\": \"^1.0.5\",\n                \"cors\": \"^2.8.5\",\n                \"cross-spawn\": \"^7.0.5\",\n                \"eventsource\": \"^3.0.2\",\n                \"eventsource-parser\": \"^3.0.0\",\n                \"express\": \"^5.2.1\",\n                \"express-rate-limit\": \"^8.2.1\",\n                \"hono\": \"^4.11.4\",\n                \"jose\": \"^6.1.3\",\n                \"json-schema-typed\": \"^8.0.2\",\n                \"pkce-challenge\": \"^5.0.0\",\n                \"raw-body\": \"^3.0.0\",\n                \"zod\": \"^3.25 || ^4.0\",\n                \"zod-to-json-schema\": \"^3.25.1\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"peerDependencies\": {\n                \"@cfworker/json-schema\": \"^4.1.1\",\n                \"zod\": \"^3.25 || ^4.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"@cfworker/json-schema\": {\n                    \"optional\": true\n                },\n                \"zod\": {\n                    \"optional\": false\n                }\n            }\n        },\n        \"node_modules/@napi-rs/wasm-runtime\": {\n            \"version\": \"1.1.4\",\n            \"resolved\": \"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz\",\n            \"integrity\": \"sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@tybys/wasm-util\": \"^0.10.1\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n            },\n            \"peerDependencies\": {\n                \"@emnapi/core\": \"^1.7.1\",\n                \"@emnapi/runtime\": \"^1.7.1\"\n            }\n        },\n        \"node_modules/@oxc-project/types\": {\n            \"version\": \"0.133.0\",\n            \"resolved\": \"https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz\",\n            \"integrity\": \"sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/Boshen\"\n            }\n        },\n        \"node_modules/@rolldown/binding-android-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-freebsd-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm-gnueabihf\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz\",\n            \"integrity\": \"sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-ppc64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-s390x-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-openharmony-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-wasm32-wasi\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz\",\n            \"integrity\": \"sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==\",\n            \"cpu\": [\n                \"wasm32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/core\": \"1.10.0\",\n                \"@emnapi/runtime\": \"1.10.0\",\n                \"@napi-rs/wasm-runtime\": \"^1.1.4\"\n            },\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-arm64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-x64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/pluginutils\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz\",\n            \"integrity\": \"sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@standard-schema/spec\": {\n            \"version\": \"1.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz\",\n            \"integrity\": \"sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@tybys/wasm-util\": {\n            \"version\": \"0.10.2\",\n            \"resolved\": \"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz\",\n            \"integrity\": \"sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@types/chai\": {\n            \"version\": \"5.2.3\",\n            \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz\",\n            \"integrity\": \"sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@types/deep-eql\": \"*\",\n                \"assertion-error\": \"^2.0.1\"\n            }\n        },\n        \"node_modules/@types/deep-eql\": {\n            \"version\": \"4.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n            \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/estree\": {\n            \"version\": \"1.0.9\",\n            \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz\",\n            \"integrity\": \"sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/node\": {\n            \"version\": \"24.19.1\",\n            \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz\",\n            \"integrity\": \"sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"undici-types\": \">=7.24.0 <7.24.7\"\n            }\n        },\n        \"node_modules/@types/pako\": {\n            \"version\": \"2.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz\",\n            \"integrity\": \"sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@vitest/expect\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz\",\n            \"integrity\": \"sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@standard-schema/spec\": \"^1.1.0\",\n                \"@types/chai\": \"^5.2.2\",\n                \"@vitest/spy\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"chai\": \"^6.2.2\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/mocker\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz\",\n            \"integrity\": \"sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/spy\": \"4.1.11\",\n                \"estree-walker\": \"^3.0.3\",\n                \"magic-string\": \"^0.30.21\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            },\n            \"peerDependencies\": {\n                \"msw\": \"^2.4.9\",\n                \"vite\": \"^6.0.0 || ^7.0.0 || ^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"msw\": {\n                    \"optional\": true\n                },\n                \"vite\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/@vitest/pretty-format\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz\",\n            \"integrity\": \"sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/runner\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz\",\n            \"integrity\": \"sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/utils\": \"4.1.11\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/snapshot\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz\",\n            \"integrity\": \"sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"magic-string\": \"^0.30.21\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/spy\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz\",\n            \"integrity\": \"sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/utils\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz\",\n            \"integrity\": \"sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"convert-source-map\": \"^2.0.0\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/accepts\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n            \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"mime-types\": \"^3.0.0\",\n                \"negotiator\": \"^1.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/ajv\": {\n            \"version\": \"8.20.0\",\n            \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n            \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"fast-deep-equal\": \"^3.1.3\",\n                \"fast-uri\": \"^3.0.1\",\n                \"json-schema-traverse\": \"^1.0.0\",\n                \"require-from-string\": \"^2.0.2\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/epoberezkin\"\n            }\n        },\n        \"node_modules/ajv-formats\": {\n            \"version\": \"3.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n            \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"ajv\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/assertion-error\": {\n            \"version\": \"2.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n            \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=12\"\n            }\n        },\n        \"node_modules/body-parser\": {\n            \"version\": \"2.3.0\",\n            \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n            \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"bytes\": \"^3.1.2\",\n                \"content-type\": \"^2.0.0\",\n                \"debug\": \"^4.4.3\",\n                \"http-errors\": \"^2.0.1\",\n                \"iconv-lite\": \"^0.7.2\",\n                \"on-finished\": \"^2.4.1\",\n                \"qs\": \"^6.15.2\",\n                \"raw-body\": \"^3.0.2\",\n                \"type-is\": \"^2.1.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/body-parser/node_modules/content-type\": {\n            \"version\": \"2.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n            \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/boolbase\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz\",\n            \"integrity\": \"sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==\",\n            \"license\": \"ISC\",\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/bundle-name\": {\n            \"version\": \"4.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n            \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"run-applescript\": \"^7.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/sindresorhus\"\n            }\n        },\n        \"node_modules/bytes\": {\n            \"version\": \"3.1.2\",\n            \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n            \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.8\"\n            }\n        },\n        \"node_modules/call-bind-apply-helpers\": {\n            \"version\": \"1.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n            \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"es-errors\": \"^1.3.0\",\n                \"function-bind\": \"^1.1.2\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            }\n        },\n        \"node_modules/call-bound\": {\n            \"version\": \"1.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n            \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"call-bind-apply-helpers\": \"^1.0.2\",\n                \"get-intrinsic\": \"^1.3.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/ljharb\"\n            }\n        },\n        \"node_modules/chai\": {\n            \"version\": \"6.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/chai/-/chai-6.2.2.tgz\",\n            \"integrity\": \"sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/content-disposition\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz\",\n            \"integrity\": \"sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/content-type\": {\n            \"version\": \"1.0.5\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n            \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/convert-source-map\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n            \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/cookie\": {\n            \"version\": \"0.7.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n            \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/cookie-signature\": {\n            \"version\": \"1.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n            \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=6.6.0\"\n            }\n        },\n        \"node_modules/cors\": {\n            \"version\": \"2.8.5\",\n            \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.5.tgz\",\n            \"integrity\": \"sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"object-assign\": \"^4\",\n                \"vary\": \"^1\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.10\"\n            }\n        },\n        \"node_modules/cross-spawn\": {\n            \"version\": \"7.0.6\",\n            \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n            \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"path-key\": \"^3.1.0\",\n                \"shebang-command\": \"^2.0.0\",\n                \"which\": \"^2.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">= 8\"\n            }\n        },\n        \"node_modules/css-select\": {\n            \"version\": \"7.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-7.0.0.tgz\",\n            \"integrity\": \"sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==\",\n            \"license\": \"BSD-2-Clause\",\n            \"dependencies\": {\n                \"boolbase\": \"^2.0.0\",\n                \"css-what\": \"^8.0.0\",\n                \"domhandler\": \"^6.0.1\",\n                \"domutils\": \"^4.0.2\",\n                \"nth-check\": \"^3.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/css-select/node_modules/dom-serializer\": {\n            \"version\": \"3.1.1\",\n            \"resolved\": \"https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz\",\n            \"integrity\": \"sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"domelementtype\": \"^3","packages/claude-plugin/.claude-plugin/plugin.json":"{\n    \"name\": \"next-ai-drawio\",\n    \"version\": \"1.0.0\",\n    \"description\": \"AI-powered Draw.io diagram generation with real-time browser preview. Create flowcharts, architecture diagrams, and more through natural language.\",\n    \"author\": {\n        \"name\": \"DayuanJiang\"\n    },\n    \"repository\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n    \"homepage\": \"https://next-ai-drawio.jiang.jp\",\n    \"license\": \"Apache-2.0\"\n}\n"},"files":{"packages/mcp-server/package.json":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"description\": \"draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo\",\n    \"mcpName\": \"io.github.DayuanJiang/next-ai-drawio\",\n    \"type\": \"module\",\n    \"main\": \"dist/index.js\",\n    \"bin\": {\n        \"next-ai-drawio-mcp\": \"./dist/index.js\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && tsc -p shell && node scripts/copy-assets.mjs && node scripts/fetch-drawio.mjs && node scripts/build-shell.mjs\",\n        \"check-drawio\": \"node scripts/check-drawio-files.mjs\",\n        \"check-package\": \"node scripts/check-package.mjs\",\n        \"dev\": \"tsx watch src/index.ts\",\n        \"start\": \"node dist/index.js\",\n        \"test\": \"vitest run\",\n        \"test:watch\": \"vitest\",\n        \"test:e2e\": \"playwright test\",\n        \"prepublishOnly\": \"npm run build\"\n    },\n    \"keywords\": [\n        \"mcp\",\n        \"mcp-server\",\n        \"drawio\",\n        \"draw.io\",\n        \"diagrams.net\",\n        \"diagram\",\n        \"architecture-diagram\",\n        \"flowchart\",\n        \"ai\",\n        \"claude\",\n        \"claude-code\",\n        \"cursor\",\n        \"codex\",\n        \"model-context-protocol\"\n    ],\n    \"author\": \"DayuanJiang\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n        \"directory\": \"packages/mcp-server\"\n    },\n    \"homepage\": \"https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io/issues\"\n    },\n    \"publishConfig\": {\n        \"access\": \"public\"\n    },\n    \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n        \"linkedom\": \"^0.18.0\",\n        \"open\": \"^11.0.0\",\n        \"pako\": \"^2.2.0\",\n        \"saxes\": \"^6.0.0\",\n        \"zod\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"^24.0.0\",\n        \"@types/pako\": \"^2.0.4\",\n        \"tsx\": \"^4.19.0\",\n        \"typescript\": \"^5\",\n        \"vitest\": \"^4.1.8\"\n    },\n    \"engines\": {\n        \"node\": \">=18\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","packages/claude-plugin/.mcp.json":"{\n    \"mcpServers\": {\n        \"drawio\": {\n            \"command\": \"npx\",\n            \"args\": [\"@next-ai-drawio/mcp-server@latest\"]\n        }\n    }\n}\n","packages/mcp-server/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"ES2022\",\n        \"module\": \"Node16\",\n        \"moduleResolution\": \"Node16\",\n        \"outDir\": \"./dist\",\n        \"rootDir\": \"./src\",\n        \"strict\": true,\n        \"esModuleInterop\": true,\n        \"skipLibCheck\": true,\n        \"forceConsistentCasingInFileNames\": true,\n        \"sourceMap\": true,\n        \"resolveJsonModule\": true,\n        \"rewriteRelativeImportExtensions\": true,\n        \"types\": [\"node\"]\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\", \"dist\"]\n}\n","packages/claude-plugin/README.md":"# Next AI Draw.io - Claude Code Plugin\n\nAI-powered Draw.io diagram generation with real-time browser preview for Claude Code.\n\n## Installation\n\n### From the Claude Code community marketplace\n\n```\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\nThis needs Claude Code 2.1.275 or later. On an older version, run `/plugin marketplace add anthropics/claude-plugins-community` first, then `/plugin install next-ai-drawio@claude-community`.\n\n### Manual Installation\n\n```bash\nclaude --plugin-dir /path/to/packages/claude-plugin\n```\n\nOr add the MCP server directly, for every project (`--scope user`):\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n## Features\n\n- **Real-time Preview**: Diagrams appear and update in your browser as Claude creates them. The preview is the web app's canvas: a change Claude makes to the page on screen is outlined, and one Ctrl+Z takes it back\n- **Selection**: Select shapes in the preview and say \"move these\"; Claude reads what you selected with `get_selection`\n- **Drawing Rules and Shape Libraries**: Claude gets the web app's layout and style rules and the icon docs for AWS, Azure, GCP, Kubernetes and more\n- **Self-check**: Claude can take a screenshot of the rendered diagram and fix what looks wrong\n- **Draw from Your Files**: ask Claude to draw from a document, image or web page; it reads the source with its own tools and draws. Existing .drawio files open with load_diagram\n- **Version History**: The last 20 versions appear as cards next to the canvas, with thumbnails; restore one, undo the latest, or compare a version with the canvas\n- **Natural Language**: Describe diagrams in plain text - flowcharts, architecture diagrams, etc.\n- **Edit Support**: Modify existing diagrams with natural language instructions, including your own edits in the browser\n- **Export**: Save diagrams as `.drawio`, `.png`, `.svg`, or `.drawio.svg` files\n- **Auto-save**: Each diagram is saved to `~/.next-ai-drawio/`, so `claude --resume` can pick it up again\n- **Custom Instructions**: keep your own drawing rules in `~/.next-ai-drawio/instructions.md` (for example \"Always draw in minimal style\"); they are appended to the drawing guide on every call\n- **Self-contained**: Embedded server and the draw.io editor in one package; the preview works offline after install\n\n## Use Case Examples\n\n### 1. Create Architecture Diagrams\n\n```\nGenerate an AWS architecture diagram with Lambda, API Gateway, DynamoDB,\nand S3 for a serverless REST API\n```\n\n### 2. Flowchart Generation\n\n```\nCreate a flowchart showing the CI/CD pipeline: code commit -> build ->\ntest -> staging deploy -> production deploy with approval gates\n```\n\n### 3. System Design Documentation\n\n```\nDesign a microservices e-commerce system with user service, product catalog,\nshopping cart, order processing, and payment gateway\n```\n\n### 4. Cloud Architecture (AWS/GCP/Azure)\n\n```\nGenerate a GCP architecture diagram with Cloud Run, Cloud SQL, and\nCloud Storage for a web application\n```\n\n### 5. Sequence Diagrams\n\n```\nCreate a sequence diagram showing OAuth 2.0 authorization code flow\nbetween user, client app, auth server, and resource server\n```\n\n### 6. Draw From a Document\n\n```\nRead docs/architecture.md and draw the system as a diagram\n```\n\n### 7. Recreate a Sketch\n\n```\nRecreate the whiteboard photo at ~/Desktop/sketch.jpg as a clean draw.io diagram\n```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `start_session` | Opens browser with real-time diagram preview; the result includes the drawing rules. Pass `session_id` to continue a saved diagram |\n| `list_saved_diagrams` | List the auto-saved diagrams of earlier sessions, newest first, with their pages |\n| `get_drawing_guide` | Return the drawing rules again |\n| `get_shape_library` | Return the shapes and icon styles of a library such as `aws4` |\n| `create_new_diagram` | Create a new diagram from XML |\n| `load_diagram` | Load a `.drawio` or `.drawio.svg` file from disk |\n| `edit_diagram` | Edit diagram by ID-based operations; all or nothing |\n| `get_diagram` | Get the current diagram XML |\n| `get_selection` | Return the shapes and edges you selected in the preview, so Claude can act on \"these\" |\n| `screenshot_diagram` | Return a PNG of a page so Claude can check the result |\n| `export_diagram` | Save diagram to a `.drawio`, `.png`, `.svg`, or `.drawio.svg` file |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Work with multi-page diagrams |\n| `restore_version` | Undo: go back to an earlier version from History (redo is possible too) |\n\n## How It Works\n\n```\nClaude Code <--stdio--> MCP Server <--http--> Browser (draw.io)\n```\n\n1. Ask Claude to create a diagram\n2. Claude calls `start_session` to open a browser window\n3. Claude generates diagram XML and sends it to the browser\n4. You see the diagram update in real-time!\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `6002` | Port for the embedded HTTP server |\n| `DRAWIO_BASE_URL` | unset (the bundled draw.io) | An external draw.io, such as a self-hosted instance. With it Claude's changes are not outlined on the canvas, Ctrl+Z does not take them back and `get_selection` cannot read the selection |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for auto-saved diagrams and your `instructions.md`; `off` turns auto-save off (`instructions.md` is then read from the default folder) |\n| `DRAWIO_LANG` | unset | Language of the draw.io editor, such as `en`, `zh`, `zh-tw`, `ja` or `de`. Unset, draw.io chooses (the browser language on `embed.diagrams.net`, English on a self-hosted draw.io) and the user can change it under **Extras > Language** |\n| `DRAWIO_UI` | unset | draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple`. Unset, the user picks one under **Extras > Theme** |\n| `DRAWIO_DARK` | `auto` | Dark mode of the preview and the editor until the user switches it with the button at the top right: `auto` follows the system, `1` starts dark, `0` starts light |\n| `DRAWIO_PREVIEW_UI` | `shell` | The preview page; `classic` opens the previous preview page for one more release |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | Set to `true` to attach a screenshot to every `create_new_diagram` and `edit_diagram` result (costs 2 to 10 s per call) |\n| `DEBUG` | unset | Set to `true` to log debug messages |\n\n## Links\n\n- [Homepage](https://next-ai-drawio.jiang.jp)\n- [MCP server page](https://next-ai-drawio.jiang.jp/en/mcp): every client's setup and how it compares with other draw.io MCP servers\n- [Use it from Claude Code](https://next-ai-drawio.jiang.jp/en/docs/claude-code): the docs page for this plugin\n- [Gallery](https://next-ai-drawio.jiang.jp/en/gallery): diagrams Claude drew with this server, with their prompts\n- [GitHub Repository](https://github.com/DayuanJiang/next-ai-draw-io)\n- [MCP Server Documentation](https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server)\n\n## License\n\nApache-2.0\n","packages/mcp-server/README.md":"# Next AI Draw.io MCP Server\n\nAn MCP server that lets Claude Code, Cursor, VS Code and other AI agents draw draw.io diagrams from your project's files, with a live preview in your browser. The preview is the canvas of the [Next AI Draw.io web app](https://next-ai-drawio.jiang.jp/): the AI's changes are outlined, Ctrl+Z takes them back, and you can edit by hand at any time.\n\nhttps://github.com/user-attachments/assets/6f53a67b-ab21-4113-9fee-7fb32f9de678\n\n## Install\n\nIn VS Code or Cursor, one click adds it: [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522drawio%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540next-ai-drawio%252Fmcp-server%2540latest%2522%255D%257D) [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_Server-000000?style=flat-square)](https://cursor.com/en/install-mcp?name=drawio&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAbmV4dC1haS1kcmF3aW8vbWNwLXNlcnZlckBsYXRlc3QiXX0%3D)\n\n### Let your AI agent install it\n\nPaste this into Claude Code, Codex, Cursor, VS Code, Cline or any agent that can edit files and run commands:\n\n```text\nInstall the drawio MCP server for the client you are running in, following\nhttps://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/main/packages/mcp-server/README.md\nInstall it for all my projects (user scope, for Claude Code \"--scope user\"),\nname the server \"drawio\" and keep the servers that are already configured.\nThen tell me how to reload so its tools show up.\n```\n\n### Install by hand\n\n**Claude Code**\n\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n`--scope user` makes the tools available in every project. Without it, they exist only in the folder where you ran the command.\n\nOr install it as a plugin from the Claude Code community marketplace (Claude Code 2.1.275 or later):\n\n```text\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\n**Codex CLI**\n\n```bash\ncodex mcp add drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\nCodex asks before each drawio tool that changes the diagram, and `codex exec` without full access fails with \"MCP tool call requires approval\". To let the drawio tools run without asking, add one line to the server's section in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.drawio]\ncommand = \"npx\"\nargs = [\"@next-ai-drawio/mcp-server@latest\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\nTo approve only some tools, use `[mcp_servers.drawio.tools.<tool name>]` with `approval_mode = \"approve\"` instead.\n\n**VS Code** (`.vscode/mcp.json`)\n\n```json\n{\n  \"servers\": {\n    \"drawio\": { \"type\": \"stdio\", \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\n**Cursor, Claude Desktop, Cline and most other clients** (`~/.cursor/mcp.json`, `claude_desktop_config.json`, `cline_mcp_settings.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"drawio\": { \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\nRestart the client, then ask, for example, \"Read this repo and draw its architecture\". The preview opens in your browser and the diagram appears as it is drawn.\n\n## Features\n\n- **Draws from your project**: the agent reads your code and documents with its own tools. Existing `.drawio` and `.drawio.svg` files open with `load_diagram`.\n- **The web app's canvas**: the AI's changes are outlined for a few seconds (never in exports) and one Ctrl+Z takes them back. Select shapes and say \"these\" (`get_selection`). Your hand edits are read before the AI edits again.\n- **Real icons**: the web app's drawing rules and shape libraries (AWS, Azure, GCP, Kubernetes, Cisco and more), so the AI uses real icon names.\n- **Self-check**: the AI can look at a screenshot of the rendered diagram and fix overlaps (`screenshot: true`, or `screenshot_diagram`).\n- **Versions**: the last 20 versions as cards next to the canvas; restore or compare one, or ask the AI to undo (`restore_version`).\n- **Pages and export**: multi-page diagrams; save as `.drawio`, `.png`, `.svg` or `.drawio.svg`. Images get a 20 px margin, and PNGs a white background (`transparent: true` for none).\n- **Offline**: the draw.io editor ships inside the package.\n\n## Choosing a draw.io MCP server\n\nSeveral MCP servers draw draw.io diagrams. As of October 2026 they differ like this:\n\n| Server | How you see and change the diagram | A good fit when |\n|---|---|---|\n| This server, `@next-ai-drawio/mcp-server` | A live draw.io canvas in your browser. The AI reads it back, including your hand edits and selection; its changes are outlined, Ctrl+Z takes them back, and earlier versions can be restored | You and the AI take turns on the same diagram |\n| draw.io's official [`@drawio/mcp`](https://github.com/jgraph/drawio-mcp) | Opens each diagram from XML, CSV or Mermaid in the draw.io editor in a new tab; no tool reads it back | You want the diagram in the full draw.io editor and edit it yourself from there |\n| draw.io's hosted MCP app, `https://mcp.draw.io/mcp` | Shows the diagram inside the chat in Claude.ai, ChatGPT, VS Code or Cursor, with nothing to install; the diagram is sent to draw.io's server | You work in a chat app and want to see the diagram in the conversation |\n| draw.io's plugin for Claude Code, Codex CLI and Copilot CLI | A skill that writes `.drawio` files; PNG, SVG and PDF export needs draw.io Desktop | You want diagram files in your repository without an MCP server |\n| [`lgazo/drawio-mcp-server`](https://github.com/lgazo/drawio-mcp-server) | A draw.io editor on localhost, or your own draw.io through a browser extension; tools create, read, update and delete single shapes, layers and pages | You want fine-grained tools, several documents at once, or Mermaid import |\n\n## Saved diagrams\n\nEvery change is saved to `~/.next-ai-drawio/<session-id>.drawio` with its last 20 versions; the newest 50 diagrams are kept. To continue one in a later conversation, ask the AI for it: it finds it with `list_saved_diagrams` and reopens it with `start_session`.\n\n## Your own drawing rules\n\nWrite them in `~/.next-ai-drawio/instructions.md`, for example \"Always use a minimal style\". They are added to the drawing guide on every call, so edits apply without a restart. The first 5000 characters are used.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `start_session` | Open the preview and return the drawing guide; `session_id` continues a saved diagram |\n| `create_new_diagram` | Draw a new diagram from `mxCell` XML |\n| `edit_diagram` | Add, update or delete cells by id, all or nothing |\n| `get_diagram` | The current XML, including your edits in the browser |\n| `get_selection` | The shapes you selected in the preview |\n| `screenshot_diagram` | A PNG of a page, for the AI to check |\n| `load_diagram`, `export_diagram` | Open a `.drawio` or `.drawio.svg` file; save `.drawio`, `.png`, `.svg` or `.drawio.svg` |\n| `restore_version` | Go back to an earlier version; a redo stays possible |\n| `list_saved_diagrams` | Diagrams saved by earlier sessions, newest first |\n| `get_drawing_guide`, `get_shape_library` | The drawing rules again; the icon styles of a library such as `aws4` |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Pages (tabs) |\n\n## Configuration\n\nEnvironment variables, set in the client's `env` for the server:\n\n| Variable | Default | What it does |\n|---|---|---|\n| `PORT` | `6002` | Preview port; when it is taken, the next free one up to 6020 is used |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for saved diagrams and `instructions.md`; `off` turns saving off |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | `true` attaches a screenshot to every create and edit result (2 to 10 s per call) |\n| `DRAWIO_BASE_URL` | the bundled draw.io | Use another draw.io, such as a self-hosted one (see below) |\n| `DRAWIO_LANG` | unset | Fix the editor and preview language: `en`, `zh`, `zh-tw`, `ja`, `de` and so on |\n| `DRAWIO_UI` | unset | Fix the draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple` |\n| `DRAWIO_DARK` | `auto` | `1` starts dark, `0` starts light, `auto` follows the system |\n| `BROWSER` | unset | `none` does not open the preview by itself; `start_session` still returns the URL |\n| `DRAWIO_PREVIEW_UI` | `shell` | `classic` opens the previous preview page, without outlines, Ctrl+Z or `get_selection` |\n| `DEBUG` | unset | `true` logs debug messages to stderr |\n\n### Self-hosted draw.io\n\n```bash\ndocker run -d -p 8080:8080 jgraph/drawio\n```\n\nThen set `DRAWIO_BASE_URL=http://localhost:8080`. The preview cannot reach into a draw.io from another origin, so the AI's changes are not outlined, Ctrl+Z does not take them back (use the version cards) and `get_selection` does not work. The bundled copy leaves out a few features that load code on demand, such as the org chart layout. It also has no image proxy, so exported images leave out pictures inserted by their web address; see [Offline deployment](https://github.com/DayuanJiang/next-ai-draw-io/blob/main/docs/en/offline-deployment.md#insert-images-from-other-websites).\n\n## Troubleshooting\n\n- **Blank preview in VS Code Simple Browser or Cursor's browser**: the page refuses to be embedded in other pages. Open the URL in a regular browser.\n- **Screenshot or PNG/SVG export times out**: the preview tab renders them, and browsers slow down background tabs. Bring the tab to the front and try again.\n- **\"No active session\"**: the AI has to call `start_session` first.\n- **The preview does not update**: open the URL that `start_session` returned; its `?mcp=` part connects the page to the session.\n\n## How it works\n\nThe server talks to the agent over stdio and runs an HTTP server on `127.0.0.1` that serves the preview page and the bundled draw.io; the page polls it for changes. Every `/api` request needs a token that only the preview page has, so other websites cannot read or change your diagram.\n\n## License\n\nApache-2.0\n","packages/mcp-server/package-lock.json":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"lockfileVersion\": 3,\n    \"requires\": true,\n    \"packages\": {\n        \"\": {\n            \"name\": \"@next-ai-drawio/mcp-server\",\n            \"version\": \"0.4.6\",\n            \"license\": \"Apache-2.0\",\n            \"dependencies\": {\n                \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n                \"linkedom\": \"^0.18.0\",\n                \"open\": \"^11.0.0\",\n                \"pako\": \"^2.2.0\",\n                \"saxes\": \"^6.0.0\",\n                \"zod\": \"^4.0.0\"\n            },\n            \"bin\": {\n                \"next-ai-drawio-mcp\": \"dist/index.js\"\n            },\n            \"devDependencies\": {\n                \"@types/node\": \"^24.0.0\",\n                \"@types/pako\": \"^2.0.4\",\n                \"tsx\": \"^4.19.0\",\n                \"typescript\": \"^5\",\n                \"vitest\": \"^4.1.8\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@emnapi/core\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz\",\n            \"integrity\": \"sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/wasi-threads\": \"1.2.1\",\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/runtime\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz\",\n            \"integrity\": \"sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/wasi-threads\": {\n            \"version\": \"1.2.1\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz\",\n            \"integrity\": \"sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@esbuild/aix-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"aix\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-loong64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz\",\n            \"integrity\": \"sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==\",\n            \"cpu\": [\n                \"loong64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-mips64el\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz\",\n            \"integrity\": \"sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==\",\n            \"cpu\": [\n                \"mips64el\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-riscv64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz\",\n            \"integrity\": \"sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==\",\n            \"cpu\": [\n                \"riscv64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-s390x\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz\",\n            \"integrity\": \"sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openharmony-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/sunos-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"sunos\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@hono/node-server\": {\n            \"version\": \"2.1.3\",\n            \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.3.tgz\",\n            \"integrity\": \"sha512-TA//nWMqPhbfdfneACk6t5a9eqbS9lABEPyKn0/xZTah3H3U2XaVg85rJFl0/Fyit0I552YDHgXGVSf3GwqbUw==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=20\"\n            },\n            \"peerDependencies\": {\n                \"hono\": \"^4\"\n            }\n        },\n        \"node_modules/@jridgewell/sourcemap-codec\": {\n            \"version\": \"1.5.5\",\n            \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n            \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@modelcontextprotocol/sdk\": {\n            \"version\": \"1.32.0\",\n            \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.0.tgz\",\n            \"integrity\": \"sha512-8BviX/hK4Gd2eL1KdTwm0gfl4d3wdoErW0Jd00h6nomUAtk6IJk5vwQJc6kfWtJTzN5OEV/lgIiJKI8fiDGAlA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n                \"ajv\": \"^8.17.1\",\n                \"ajv-formats\": \"^3.0.1\",\n                \"content-type\": \"^1.0.5\",\n                \"cors\": \"^2.8.5\",\n                \"cross-spawn\": \"^7.0.5\",\n                \"eventsource\": \"^3.0.2\",\n                \"eventsource-parser\": \"^3.0.0\",\n                \"express\": \"^5.2.1\",\n                \"express-rate-limit\": \"^8.2.1\",\n                \"hono\": \"^4.11.4\",\n                \"jose\": \"^6.1.3\",\n                \"json-schema-typed\": \"^8.0.2\",\n                \"pkce-challenge\": \"^5.0.0\",\n                \"raw-body\": \"^3.0.0\",\n                \"zod\": \"^3.25 || ^4.0\",\n                \"zod-to-json-schema\": \"^3.25.1\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"peerDependencies\": {\n                \"@cfworker/json-schema\": \"^4.1.1\",\n                \"zod\": \"^3.25 || ^4.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"@cfworker/json-schema\": {\n                    \"optional\": true\n                },\n                \"zod\": {\n                    \"optional\": false\n                }\n            }\n        },\n        \"node_modules/@napi-rs/wasm-runtime\": {\n            \"version\": \"1.1.4\",\n            \"resolved\": \"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz\",\n            \"integrity\": \"sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@tybys/wasm-util\": \"^0.10.1\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n            },\n            \"peerDependencies\": {\n                \"@emnapi/core\": \"^1.7.1\",\n                \"@emnapi/runtime\": \"^1.7.1\"\n            }\n        },\n        \"node_modules/@oxc-project/types\": {\n            \"version\": \"0.133.0\",\n            \"resolved\": \"https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz\",\n            \"integrity\": \"sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/Boshen\"\n            }\n        },\n        \"node_modules/@rolldown/binding-android-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-freebsd-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm-gnueabihf\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz\",\n            \"integrity\": \"sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-ppc64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-s390x-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-openharmony-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-wasm32-wasi\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz\",\n            \"integrity\": \"sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==\",\n            \"cpu\": [\n                \"wasm32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/core\": \"1.10.0\",\n                \"@emnapi/runtime\": \"1.10.0\",\n                \"@napi-rs/wasm-runtime\": \"^1.1.4\"\n            },\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-arm64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-x64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/pluginutils\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz\",\n            \"integrity\": \"sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@standard-schema/spec\": {\n            \"version\": \"1.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz\",\n            \"integrity\": \"sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@tybys/wasm-util\": {\n            \"version\": \"0.10.2\",\n            \"resolved\": \"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz\",\n            \"integrity\": \"sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@types/chai\": {\n            \"version\": \"5.2.3\",\n            \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz\",\n            \"integrity\": \"sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@types/deep-eql\": \"*\",\n                \"assertion-error\": \"^2.0.1\"\n            }\n        },\n        \"node_modules/@types/deep-eql\": {\n            \"version\": \"4.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n            \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/estree\": {\n            \"version\": \"1.0.9\",\n            \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz\",\n            \"integrity\": \"sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/node\": {\n            \"version\": \"24.19.1\",\n            \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz\",\n            \"integrity\": \"sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"undici-types\": \">=7.24.0 <7.24.7\"\n            }\n        },\n        \"node_modules/@types/pako\": {\n            \"version\": \"2.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz\",\n            \"integrity\": \"sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@vitest/expect\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz\",\n            \"integrity\": \"sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@standard-schema/spec\": \"^1.1.0\",\n                \"@types/chai\": \"^5.2.2\",\n                \"@vitest/spy\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"chai\": \"^6.2.2\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/mocker\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz\",\n            \"integrity\": \"sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/spy\": \"4.1.11\",\n                \"estree-walker\": \"^3.0.3\",\n                \"magic-string\": \"^0.30.21\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            },\n            \"peerDependencies\": {\n                \"msw\": \"^2.4.9\",\n                \"vite\": \"^6.0.0 || ^7.0.0 || ^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"msw\": {\n                    \"optional\": true\n                },\n                \"vite\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/@vitest/pretty-format\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz\",\n            \"integrity\": \"sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/runner\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz\",\n            \"integrity\": \"sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/utils\": \"4.1.11\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/snapshot\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz\",\n            \"integrity\": \"sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"magic-string\": \"^0.30.21\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/spy\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz\",\n            \"integrity\": \"sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/utils\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz\",\n            \"integrity\": \"sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"convert-source-map\": \"^2.0.0\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/accepts\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n            \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"mime-types\": \"^3.0.0\",\n                \"negotiator\": \"^1.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/ajv\": {\n            \"version\": \"8.20.0\",\n            \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n            \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"fast-deep-equal\": \"^3.1.3\",\n                \"fast-uri\": \"^3.0.1\",\n                \"json-schema-traverse\": \"^1.0.0\",\n                \"require-from-string\": \"^2.0.2\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/epoberezkin\"\n            }\n        },\n        \"node_modules/ajv-formats\": {\n            \"version\": \"3.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n            \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"ajv\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/assertion-error\": {\n            \"version\": \"2.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n            \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=12\"\n            }\n        },\n        \"node_modules/body-parser\": {\n            \"version\": \"2.3.0\",\n            \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n            \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"bytes\": \"^3.1.2\",\n                \"content-type\": \"^2.0.0\",\n                \"debug\": \"^4.4.3\",\n                \"http-errors\": \"^2.0.1\",\n                \"iconv-lite\": \"^0.7.2\",\n                \"on-finished\": \"^2.4.1\",\n                \"qs\": \"^6.15.2\",\n                \"raw-body\": \"^3.0.2\",\n                \"type-is\": \"^2.1.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/body-parser/node_modules/content-type\": {\n            \"version\": \"2.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n            \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/boolbase\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz\",\n            \"integrity\": \"sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==\",\n            \"license\": \"ISC\",\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/bundle-name\": {\n            \"version\": \"4.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n            \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"run-applescript\": \"^7.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/sindresorhus\"\n            }\n        },\n        \"node_modules/bytes\": {\n            \"version\": \"3.1.2\",\n            \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n            \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.8\"\n            }\n        },\n        \"node_modules/call-bind-apply-helpers\": {\n            \"version\": \"1.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n            \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"es-errors\": \"^1.3.0\",\n                \"function-bind\": \"^1.1.2\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            }\n        },\n        \"node_modules/call-bound\": {\n            \"version\": \"1.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n            \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"call-bind-apply-helpers\": \"^1.0.2\",\n                \"get-intrinsic\": \"^1.3.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/ljharb\"\n            }\n        },\n        \"node_modules/chai\": {\n            \"version\": \"6.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/chai/-/chai-6.2.2.tgz\",\n            \"integrity\": \"sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/content-disposition\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz\",\n            \"integrity\": \"sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/content-type\": {\n            \"version\": \"1.0.5\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n            \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/convert-source-map\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n            \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/cookie\": {\n            \"version\": \"0.7.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n            \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/cookie-signature\": {\n            \"version\": \"1.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n            \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=6.6.0\"\n            }\n        },\n        \"node_modules/cors\": {\n            \"version\": \"2.8.5\",\n            \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.5.tgz\",\n            \"integrity\": \"sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"object-assign\": \"^4\",\n                \"vary\": \"^1\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.10\"\n            }\n        },\n        \"node_modules/cross-spawn\": {\n            \"version\": \"7.0.6\",\n            \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n            \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"path-key\": \"^3.1.0\",\n                \"shebang-command\": \"^2.0.0\",\n                \"which\": \"^2.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">= 8\"\n            }\n        },\n        \"node_modules/css-select\": {\n            \"version\": \"7.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-7.0.0.tgz\",\n            \"integrity\": \"sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==\",\n            \"license\": \"BSD-2-Clause\",\n            \"dependencies\": {\n                \"boolbase\": \"^2.0.0\",\n                \"css-what\": \"^8.0.0\",\n                \"domhandler\": \"^6.0.1\",\n                \"domutils\": \"^4.0.2\",\n                \"nth-check\": \"^3.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/css-select/node_modules/dom-serializer\": {\n            \"version\": \"3.1.1\",\n            \"resolved\": \"https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz\",\n            \"integrity\": \"sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"domelementtype\": \"^3","packages/claude-plugin/.claude-plugin/plugin.json":"{\n    \"name\": \"next-ai-drawio\",\n    \"version\": \"1.0.0\",\n    \"description\": \"AI-powered Draw.io diagram generation with real-time browser preview. Create flowcharts, architecture diagrams, and more through natural language.\",\n    \"author\": {\n        \"name\": \"DayuanJiang\"\n    },\n    \"repository\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n    \"homepage\": \"https://next-ai-drawio.jiang.jp\",\n    \"license\": \"Apache-2.0\"\n}\n"},"items":[{"name":".mcp.json","path":"packages/claude-plugin/.mcp.json","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/claude-plugin/.mcp.json","title":"Claude-plugin Skill","category":"anthropic-skill","format":"json","content":"{\n    \"mcpServers\": {\n        \"drawio\": {\n            \"command\": \"npx\",\n            \"args\": [\"@next-ai-drawio/mcp-server@latest\"]\n        }\n    }\n}\n","frontmatter":{"mcpServers":{"drawio":{"command":"npx","args":["@next-ai-drawio/mcp-server@latest"]}}},"isInternal":false,"tokens":45,"sizeBytes":148},{"name":"package-lock.json","path":"packages/mcp-server/package-lock.json","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/mcp-server/package-lock.json","title":"Mcp-server Skill","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"lockfileVersion\": 3,\n    \"requires\": true,\n    \"packages\": {\n        \"\": {\n            \"name\": \"@next-ai-drawio/mcp-server\",\n            \"version\": \"0.4.6\",\n            \"license\": \"Apache-2.0\",\n            \"dependencies\": {\n                \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n                \"linkedom\": \"^0.18.0\",\n                \"open\": \"^11.0.0\",\n                \"pako\": \"^2.2.0\",\n                \"saxes\": \"^6.0.0\",\n                \"zod\": \"^4.0.0\"\n            },\n            \"bin\": {\n                \"next-ai-drawio-mcp\": \"dist/index.js\"\n            },\n            \"devDependencies\": {\n                \"@types/node\": \"^24.0.0\",\n                \"@types/pako\": \"^2.0.4\",\n                \"tsx\": \"^4.19.0\",\n                \"typescript\": \"^5\",\n                \"vitest\": \"^4.1.8\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@emnapi/core\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz\",\n            \"integrity\": \"sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/wasi-threads\": \"1.2.1\",\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/runtime\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz\",\n            \"integrity\": \"sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/wasi-threads\": {\n            \"version\": \"1.2.1\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz\",\n            \"integrity\": \"sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@esbuild/aix-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"aix\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-loong64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz\",\n            \"integrity\": \"sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==\",\n            \"cpu\": [\n                \"loong64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-mips64el\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz\",\n            \"integrity\": \"sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==\",\n            \"cpu\": [\n                \"mips64el\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-riscv64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz\",\n            \"integrity\": \"sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==\",\n            \"cpu\": [\n                \"riscv64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-s390x\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz\",\n            \"integrity\": \"sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openharmony-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/sunos-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"sunos\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@hono/node-server\": {\n            \"version\": \"2.1.3\",\n            \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.3.tgz\",\n            \"integrity\": \"sha512-TA//nWMqPhbfdfneACk6t5a9eqbS9lABEPyKn0/xZTah3H3U2XaVg85rJFl0/Fyit0I552YDHgXGVSf3GwqbUw==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=20\"\n            },\n            \"peerDependencies\": {\n                \"hono\": \"^4\"\n            }\n        },\n        \"node_modules/@jridgewell/sourcemap-codec\": {\n            \"version\": \"1.5.5\",\n            \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n            \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@modelcontextprotocol/sdk\": {\n            \"version\": \"1.32.0\",\n            \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.0.tgz\",\n            \"integrity\": \"sha512-8BviX/hK4Gd2eL1KdTwm0gfl4d3wdoErW0Jd00h6nomUAtk6IJk5vwQJc6kfWtJTzN5OEV/lgIiJKI8fiDGAlA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n                \"ajv\": \"^8.17.1\",\n                \"ajv-formats\": \"^3.0.1\",\n                \"content-type\": \"^1.0.5\",\n                \"cors\": \"^2.8.5\",\n                \"cross-spawn\": \"^7.0.5\",\n                \"eventsource\": \"^3.0.2\",\n                \"eventsource-parser\": \"^3.0.0\",\n                \"express\": \"^5.2.1\",\n                \"express-rate-limit\": \"^8.2.1\",\n                \"hono\": \"^4.11.4\",\n                \"jose\": \"^6.1.3\",\n                \"json-schema-typed\": \"^8.0.2\",\n                \"pkce-challenge\": \"^5.0.0\",\n                \"raw-body\": \"^3.0.0\",\n                \"zod\": \"^3.25 || ^4.0\",\n                \"zod-to-json-schema\": \"^3.25.1\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"peerDependencies\": {\n                \"@cfworker/json-schema\": \"^4.1.1\",\n                \"zod\": \"^3.25 || ^4.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"@cfworker/json-schema\": {\n                    \"optional\": true\n                },\n                \"zod\": {\n                    \"optional\": false\n                }\n            }\n        },\n        \"node_modules/@napi-rs/wasm-runtime\": {\n            \"version\": \"1.1.4\",\n            \"resolved\": \"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz\",\n            \"integrity\": \"sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@tybys/wasm-util\": \"^0.10.1\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n            },\n            \"peerDependencies\": {\n                \"@emnapi/core\": \"^1.7.1\",\n                \"@emnapi/runtime\": \"^1.7.1\"\n            }\n        },\n        \"node_modules/@oxc-project/types\": {\n            \"version\": \"0.133.0\",\n            \"resolved\": \"https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz\",\n            \"integrity\": \"sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/Boshen\"\n            }\n        },\n        \"node_modules/@rolldown/binding-android-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-freebsd-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm-gnueabihf\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz\",\n            \"integrity\": \"sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-ppc64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-s390x-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-openharmony-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-wasm32-wasi\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz\",\n            \"integrity\": \"sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==\",\n            \"cpu\": [\n                \"wasm32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/core\": \"1.10.0\",\n                \"@emnapi/runtime\": \"1.10.0\",\n                \"@napi-rs/wasm-runtime\": \"^1.1.4\"\n            },\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-arm64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-x64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/pluginutils\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz\",\n            \"integrity\": \"sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@standard-schema/spec\": {\n            \"version\": \"1.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz\",\n            \"integrity\": \"sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@tybys/wasm-util\": {\n            \"version\": \"0.10.2\",\n            \"resolved\": \"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz\",\n            \"integrity\": \"sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@types/chai\": {\n            \"version\": \"5.2.3\",\n            \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz\",\n            \"integrity\": \"sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@types/deep-eql\": \"*\",\n                \"assertion-error\": \"^2.0.1\"\n            }\n        },\n        \"node_modules/@types/deep-eql\": {\n            \"version\": \"4.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n            \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/estree\": {\n            \"version\": \"1.0.9\",\n            \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz\",\n            \"integrity\": \"sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/node\": {\n            \"version\": \"24.19.1\",\n            \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz\",\n            \"integrity\": \"sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"undici-types\": \">=7.24.0 <7.24.7\"\n            }\n        },\n        \"node_modules/@types/pako\": {\n            \"version\": \"2.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz\",\n            \"integrity\": \"sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@vitest/expect\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz\",\n            \"integrity\": \"sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@standard-schema/spec\": \"^1.1.0\",\n                \"@types/chai\": \"^5.2.2\",\n                \"@vitest/spy\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"chai\": \"^6.2.2\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/mocker\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz\",\n            \"integrity\": \"sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/spy\": \"4.1.11\",\n                \"estree-walker\": \"^3.0.3\",\n                \"magic-string\": \"^0.30.21\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            },\n            \"peerDependencies\": {\n                \"msw\": \"^2.4.9\",\n                \"vite\": \"^6.0.0 || ^7.0.0 || ^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"msw\": {\n                    \"optional\": true\n                },\n                \"vite\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/@vitest/pretty-format\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz\",\n            \"integrity\": \"sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/runner\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz\",\n            \"integrity\": \"sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/utils\": \"4.1.11\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/snapshot\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz\",\n            \"integrity\": \"sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"magic-string\": \"^0.30.21\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/spy\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz\",\n            \"integrity\": \"sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/utils\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz\",\n            \"integrity\": \"sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"convert-source-map\": \"^2.0.0\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/accepts\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n            \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"mime-types\": \"^3.0.0\",\n                \"negotiator\": \"^1.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/ajv\": {\n            \"version\": \"8.20.0\",\n            \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n            \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"fast-deep-equal\": \"^3.1.3\",\n                \"fast-uri\": \"^3.0.1\",\n                \"json-schema-traverse\": \"^1.0.0\",\n                \"require-from-string\": \"^2.0.2\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/epoberezkin\"\n            }\n        },\n        \"node_modules/ajv-formats\": {\n            \"version\": \"3.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n            \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"ajv\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/assertion-error\": {\n            \"version\": \"2.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n            \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=12\"\n            }\n        },\n        \"node_modules/body-parser\": {\n            \"version\": \"2.3.0\",\n            \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n            \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"bytes\": \"^3.1.2\",\n                \"content-type\": \"^2.0.0\",\n                \"debug\": \"^4.4.3\",\n                \"http-errors\": \"^2.0.1\",\n                \"iconv-lite\": \"^0.7.2\",\n                \"on-finished\": \"^2.4.1\",\n                \"qs\": \"^6.15.2\",\n                \"raw-body\": \"^3.0.2\",\n                \"type-is\": \"^2.1.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/body-parser/node_modules/content-type\": {\n            \"version\": \"2.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n            \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/boolbase\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz\",\n            \"integrity\": \"sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==\",\n            \"license\": \"ISC\",\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/bundle-name\": {\n            \"version\": \"4.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n            \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"run-applescript\": \"^7.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/sindresorhus\"\n            }\n        },\n        \"node_modules/bytes\": {\n            \"version\": \"3.1.2\",\n            \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n            \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.8\"\n            }\n        },\n        \"node_modules/call-bind-apply-helpers\": {\n            \"version\": \"1.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n            \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"es-errors\": \"^1.3.0\",\n                \"function-bind\": \"^1.1.2\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            }\n        },\n        \"node_modules/call-bound\": {\n            \"version\": \"1.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n            \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"call-bind-apply-helpers\": \"^1.0.2\",\n                \"get-intrinsic\": \"^1.3.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/ljharb\"\n            }\n        },\n        \"node_modules/chai\": {\n            \"version\": \"6.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/chai/-/chai-6.2.2.tgz\",\n            \"integrity\": \"sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/content-disposition\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz\",\n            \"integrity\": \"sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/content-type\": {\n            \"version\": \"1.0.5\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n            \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/convert-source-map\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n            \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/cookie\": {\n            \"version\": \"0.7.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n            \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/cookie-signature\": {\n            \"version\": \"1.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n            \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=6.6.0\"\n            }\n        },\n        \"node_modules/cors\": {\n            \"version\": \"2.8.5\",\n            \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.5.tgz\",\n            \"integrity\": \"sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"object-assign\": \"^4\",\n                \"vary\": \"^1\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.10\"\n            }\n        },\n        \"node_modules/cross-spawn\": {\n            \"version\": \"7.0.6\",\n            \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n            \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"path-key\": \"^3.1.0\",\n                \"shebang-command\": \"^2.0.0\",\n                \"which\": \"^2.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">= 8\"\n            }\n        },\n        \"node_modules/css-select\": {\n            \"version\": \"7.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-7.0.0.tgz\",\n            \"integrity\": \"sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==\",\n            \"license\": \"BSD-2-Clause\",\n            \"dependencies\": {\n                \"boolbase\": \"^2.0.0\",\n                \"css-what\": \"^8.0.0\",\n                \"domhandler\": \"^6.0.1\",\n                \"domutils\": \"^4.0.2\",\n                \"nth-check\": \"^3.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/css-select/node_modules/dom-serializer\": {\n            \"version\": \"3.1.1\",\n            \"resolved\": \"https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz\",\n            \"integrity\": \"sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"domelementtype\": \"^3","isInternal":false,"tokens":16631,"sizeBytes":50000},{"name":"package.json","path":"packages/mcp-server/package.json","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/mcp-server/package.json","title":"@next-ai-drawio/mcp-server","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"description\": \"draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo\",\n    \"mcpName\": \"io.github.DayuanJiang/next-ai-drawio\",\n    \"type\": \"module\",\n    \"main\": \"dist/index.js\",\n    \"bin\": {\n        \"next-ai-drawio-mcp\": \"./dist/index.js\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && tsc -p shell && node scripts/copy-assets.mjs && node scripts/fetch-drawio.mjs && node scripts/build-shell.mjs\",\n        \"check-drawio\": \"node scripts/check-drawio-files.mjs\",\n        \"check-package\": \"node scripts/check-package.mjs\",\n        \"dev\": \"tsx watch src/index.ts\",\n        \"start\": \"node dist/index.js\",\n        \"test\": \"vitest run\",\n        \"test:watch\": \"vitest\",\n        \"test:e2e\": \"playwright test\",\n        \"prepublishOnly\": \"npm run build\"\n    },\n    \"keywords\": [\n        \"mcp\",\n        \"mcp-server\",\n        \"drawio\",\n        \"draw.io\",\n        \"diagrams.net\",\n        \"diagram\",\n        \"architecture-diagram\",\n        \"flowchart\",\n        \"ai\",\n        \"claude\",\n        \"claude-code\",\n        \"cursor\",\n        \"codex\",\n        \"model-context-protocol\"\n    ],\n    \"author\": \"DayuanJiang\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n        \"directory\": \"packages/mcp-server\"\n    },\n    \"homepage\": \"https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io/issues\"\n    },\n    \"publishConfig\": {\n        \"access\": \"public\"\n    },\n    \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n        \"linkedom\": \"^0.18.0\",\n        \"open\": \"^11.0.0\",\n        \"pako\": \"^2.2.0\",\n        \"saxes\": \"^6.0.0\",\n        \"zod\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"^24.0.0\",\n        \"@types/pako\": \"^2.0.4\",\n        \"tsx\": \"^4.19.0\",\n        \"typescript\": \"^5\",\n        \"vitest\": \"^4.1.8\"\n    },\n    \"engines\": {\n        \"node\": \">=18\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","frontmatter":{"name":"@next-ai-drawio/mcp-server","version":"0.4.6","description":"draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo","mcpName":"io.github.DayuanJiang/next-ai-drawio","type":"module","main":"dist/index.js","bin":{"next-ai-drawio-mcp":"./dist/index.js"},"scripts":{"build":"tsc && tsc -p shell && node scripts/copy-assets.mjs && node scripts/fetch-drawio.mjs && node scripts/build-shell.mjs","check-drawio":"node scripts/check-drawio-files.mjs","check-package":"node scripts/check-package.mjs","dev":"tsx watch src/index.ts","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","test:e2e":"playwright test","prepublishOnly":"npm run build"},"keywords":["mcp","mcp-server","drawio","draw.io","diagrams.net","diagram","architecture-diagram","flowchart","ai","claude","claude-code","cursor","codex","model-context-protocol"],"author":"DayuanJiang","license":"Apache-2.0","repository":{"type":"git","url":"https://github.com/DayuanJiang/next-ai-draw-io","directory":"packages/mcp-server"},"homepage":"https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server#readme","bugs":{"url":"https://github.com/DayuanJiang/next-ai-draw-io/issues"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.31.0","linkedom":"^0.18.0","open":"^11.0.0","pako":"^2.2.0","saxes":"^6.0.0","zod":"^4.0.0"},"devDependencies":{"@types/node":"^24.0.0","@types/pako":"^2.0.4","tsx":"^4.19.0","typescript":"^5","vitest":"^4.1.8"},"engines":{"node":">=18"},"files":["dist"]},"isInternal":false,"tokens":663,"sizeBytes":2184},{"name":"tsconfig.json","path":"packages/mcp-server/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/mcp-server/tsconfig.json","title":"Mcp-server Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"target\": \"ES2022\",\n        \"module\": \"Node16\",\n        \"moduleResolution\": \"Node16\",\n        \"outDir\": \"./dist\",\n        \"rootDir\": \"./src\",\n        \"strict\": true,\n        \"esModuleInterop\": true,\n        \"skipLibCheck\": true,\n        \"forceConsistentCasingInFileNames\": true,\n        \"sourceMap\": true,\n        \"resolveJsonModule\": true,\n        \"rewriteRelativeImportExtensions\": true,\n        \"types\": [\"node\"]\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\", \"dist\"]\n}\n","frontmatter":{"compilerOptions":{"target":"ES2022","module":"Node16","moduleResolution":"Node16","outDir":"./dist","rootDir":"./src","strict":true,"esModuleInterop":true,"skipLibCheck":true,"forceConsistentCasingInFileNames":true,"sourceMap":true,"resolveJsonModule":true,"rewriteRelativeImportExtensions":true,"types":["node"]},"include":["src/**/*"],"exclude":["node_modules","dist"]},"isInternal":false,"tokens":137,"sizeBytes":529},{"name":"plugin.json","path":"packages/claude-plugin/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/claude-plugin/.claude-plugin/plugin.json","title":"next-ai-drawio","category":"plugin-manifest","format":"json","content":"{\n    \"name\": \"next-ai-drawio\",\n    \"version\": \"1.0.0\",\n    \"description\": \"AI-powered Draw.io diagram generation with real-time browser preview. Create flowcharts, architecture diagrams, and more through natural language.\",\n    \"author\": {\n        \"name\": \"DayuanJiang\"\n    },\n    \"repository\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n    \"homepage\": \"https://next-ai-drawio.jiang.jp\",\n    \"license\": \"Apache-2.0\"\n}\n","frontmatter":{"name":"next-ai-drawio","version":"1.0.0","description":"AI-powered Draw.io diagram generation with real-time browser preview. Create flowcharts, architecture diagrams, and more through natural language.","author":{"name":"DayuanJiang"},"repository":"https://github.com/DayuanJiang/next-ai-draw-io","homepage":"https://next-ai-drawio.jiang.jp","license":"Apache-2.0"},"isInternal":false,"tokens":122,"sizeBytes":427},{"name":"README.md","path":"packages/claude-plugin/README.md","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/claude-plugin/README.md","title":"claude-plugin Documentation","category":"plugin-manifest","format":"markdown","content":"# Next AI Draw.io - Claude Code Plugin\n\nAI-powered Draw.io diagram generation with real-time browser preview for Claude Code.\n\n## Installation\n\n### From the Claude Code community marketplace\n\n```\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\nThis needs Claude Code 2.1.275 or later. On an older version, run `/plugin marketplace add anthropics/claude-plugins-community` first, then `/plugin install next-ai-drawio@claude-community`.\n\n### Manual Installation\n\n```bash\nclaude --plugin-dir /path/to/packages/claude-plugin\n```\n\nOr add the MCP server directly, for every project (`--scope user`):\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n## Features\n\n- **Real-time Preview**: Diagrams appear and update in your browser as Claude creates them. The preview is the web app's canvas: a change Claude makes to the page on screen is outlined, and one Ctrl+Z takes it back\n- **Selection**: Select shapes in the preview and say \"move these\"; Claude reads what you selected with `get_selection`\n- **Drawing Rules and Shape Libraries**: Claude gets the web app's layout and style rules and the icon docs for AWS, Azure, GCP, Kubernetes and more\n- **Self-check**: Claude can take a screenshot of the rendered diagram and fix what looks wrong\n- **Draw from Your Files**: ask Claude to draw from a document, image or web page; it reads the source with its own tools and draws. Existing .drawio files open with load_diagram\n- **Version History**: The last 20 versions appear as cards next to the canvas, with thumbnails; restore one, undo the latest, or compare a version with the canvas\n- **Natural Language**: Describe diagrams in plain text - flowcharts, architecture diagrams, etc.\n- **Edit Support**: Modify existing diagrams with natural language instructions, including your own edits in the browser\n- **Export**: Save diagrams as `.drawio`, `.png`, `.svg`, or `.drawio.svg` files\n- **Auto-save**: Each diagram is saved to `~/.next-ai-drawio/`, so `claude --resume` can pick it up again\n- **Custom Instructions**: keep your own drawing rules in `~/.next-ai-drawio/instructions.md` (for example \"Always draw in minimal style\"); they are appended to the drawing guide on every call\n- **Self-contained**: Embedded server and the draw.io editor in one package; the preview works offline after install\n\n## Use Case Examples\n\n### 1. Create Architecture Diagrams\n\n```\nGenerate an AWS architecture diagram with Lambda, API Gateway, DynamoDB,\nand S3 for a serverless REST API\n```\n\n### 2. Flowchart Generation\n\n```\nCreate a flowchart showing the CI/CD pipeline: code commit -> build ->\ntest -> staging deploy -> production deploy with approval gates\n```\n\n### 3. System Design Documentation\n\n```\nDesign a microservices e-commerce system with user service, product catalog,\nshopping cart, order processing, and payment gateway\n```\n\n### 4. Cloud Architecture (AWS/GCP/Azure)\n\n```\nGenerate a GCP architecture diagram with Cloud Run, Cloud SQL, and\nCloud Storage for a web application\n```\n\n### 5. Sequence Diagrams\n\n```\nCreate a sequence diagram showing OAuth 2.0 authorization code flow\nbetween user, client app, auth server, and resource server\n```\n\n### 6. Draw From a Document\n\n```\nRead docs/architecture.md and draw the system as a diagram\n```\n\n### 7. Recreate a Sketch\n\n```\nRecreate the whiteboard photo at ~/Desktop/sketch.jpg as a clean draw.io diagram\n```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `start_session` | Opens browser with real-time diagram preview; the result includes the drawing rules. Pass `session_id` to continue a saved diagram |\n| `list_saved_diagrams` | List the auto-saved diagrams of earlier sessions, newest first, with their pages |\n| `get_drawing_guide` | Return the drawing rules again |\n| `get_shape_library` | Return the shapes and icon styles of a library such as `aws4` |\n| `create_new_diagram` | Create a new diagram from XML |\n| `load_diagram` | Load a `.drawio` or `.drawio.svg` file from disk |\n| `edit_diagram` | Edit diagram by ID-based operations; all or nothing |\n| `get_diagram` | Get the current diagram XML |\n| `get_selection` | Return the shapes and edges you selected in the preview, so Claude can act on \"these\" |\n| `screenshot_diagram` | Return a PNG of a page so Claude can check the result |\n| `export_diagram` | Save diagram to a `.drawio`, `.png`, `.svg`, or `.drawio.svg` file |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Work with multi-page diagrams |\n| `restore_version` | Undo: go back to an earlier version from History (redo is possible too) |\n\n## How It Works\n\n```\nClaude Code <--stdio--> MCP Server <--http--> Browser (draw.io)\n```\n\n1. Ask Claude to create a diagram\n2. Claude calls `start_session` to open a browser window\n3. Claude generates diagram XML and sends it to the browser\n4. You see the diagram update in real-time!\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `6002` | Port for the embedded HTTP server |\n| `DRAWIO_BASE_URL` | unset (the bundled draw.io) | An external draw.io, such as a self-hosted instance. With it Claude's changes are not outlined on the canvas, Ctrl+Z does not take them back and `get_selection` cannot read the selection |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for auto-saved diagrams and your `instructions.md`; `off` turns auto-save off (`instructions.md` is then read from the default folder) |\n| `DRAWIO_LANG` | unset | Language of the draw.io editor, such as `en`, `zh`, `zh-tw`, `ja` or `de`. Unset, draw.io chooses (the browser language on `embed.diagrams.net`, English on a self-hosted draw.io) and the user can change it under **Extras > Language** |\n| `DRAWIO_UI` | unset | draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple`. Unset, the user picks one under **Extras > Theme** |\n| `DRAWIO_DARK` | `auto` | Dark mode of the preview and the editor until the user switches it with the button at the top right: `auto` follows the system, `1` starts dark, `0` starts light |\n| `DRAWIO_PREVIEW_UI` | `shell` | The preview page; `classic` opens the previous preview page for one more release |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | Set to `true` to attach a screenshot to every `create_new_diagram` and `edit_diagram` result (costs 2 to 10 s per call) |\n| `DEBUG` | unset | Set to `true` to log debug messages |\n\n## Links\n\n- [Homepage](https://next-ai-drawio.jiang.jp)\n- [MCP server page](https://next-ai-drawio.jiang.jp/en/mcp): every client's setup and how it compares with other draw.io MCP servers\n- [Use it from Claude Code](https://next-ai-drawio.jiang.jp/en/docs/claude-code): the docs page for this plugin\n- [Gallery](https://next-ai-drawio.jiang.jp/en/gallery): diagrams Claude drew with this server, with their prompts\n- [GitHub Repository](https://github.com/DayuanJiang/next-ai-draw-io)\n- [MCP Server Documentation](https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server)\n\n## License\n\nApache-2.0\n","isInternal":false,"tokens":1772,"sizeBytes":7031},{"name":"README.md","path":"packages/mcp-server/README.md","rawUrl":"https://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/HEAD/packages/mcp-server/README.md","title":"mcp-server Documentation","category":"plugin-manifest","format":"markdown","content":"# Next AI Draw.io MCP Server\n\nAn MCP server that lets Claude Code, Cursor, VS Code and other AI agents draw draw.io diagrams from your project's files, with a live preview in your browser. The preview is the canvas of the [Next AI Draw.io web app](https://next-ai-drawio.jiang.jp/): the AI's changes are outlined, Ctrl+Z takes them back, and you can edit by hand at any time.\n\nhttps://github.com/user-attachments/assets/6f53a67b-ab21-4113-9fee-7fb32f9de678\n\n## Install\n\nIn VS Code or Cursor, one click adds it: [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522drawio%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540next-ai-drawio%252Fmcp-server%2540latest%2522%255D%257D) [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_Server-000000?style=flat-square)](https://cursor.com/en/install-mcp?name=drawio&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAbmV4dC1haS1kcmF3aW8vbWNwLXNlcnZlckBsYXRlc3QiXX0%3D)\n\n### Let your AI agent install it\n\nPaste this into Claude Code, Codex, Cursor, VS Code, Cline or any agent that can edit files and run commands:\n\n```text\nInstall the drawio MCP server for the client you are running in, following\nhttps://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/main/packages/mcp-server/README.md\nInstall it for all my projects (user scope, for Claude Code \"--scope user\"),\nname the server \"drawio\" and keep the servers that are already configured.\nThen tell me how to reload so its tools show up.\n```\n\n### Install by hand\n\n**Claude Code**\n\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n`--scope user` makes the tools available in every project. Without it, they exist only in the folder where you ran the command.\n\nOr install it as a plugin from the Claude Code community marketplace (Claude Code 2.1.275 or later):\n\n```text\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\n**Codex CLI**\n\n```bash\ncodex mcp add drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\nCodex asks before each drawio tool that changes the diagram, and `codex exec` without full access fails with \"MCP tool call requires approval\". To let the drawio tools run without asking, add one line to the server's section in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.drawio]\ncommand = \"npx\"\nargs = [\"@next-ai-drawio/mcp-server@latest\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\nTo approve only some tools, use `[mcp_servers.drawio.tools.<tool name>]` with `approval_mode = \"approve\"` instead.\n\n**VS Code** (`.vscode/mcp.json`)\n\n```json\n{\n  \"servers\": {\n    \"drawio\": { \"type\": \"stdio\", \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\n**Cursor, Claude Desktop, Cline and most other clients** (`~/.cursor/mcp.json`, `claude_desktop_config.json`, `cline_mcp_settings.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"drawio\": { \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\nRestart the client, then ask, for example, \"Read this repo and draw its architecture\". The preview opens in your browser and the diagram appears as it is drawn.\n\n## Features\n\n- **Draws from your project**: the agent reads your code and documents with its own tools. Existing `.drawio` and `.drawio.svg` files open with `load_diagram`.\n- **The web app's canvas**: the AI's changes are outlined for a few seconds (never in exports) and one Ctrl+Z takes them back. Select shapes and say \"these\" (`get_selection`). Your hand edits are read before the AI edits again.\n- **Real icons**: the web app's drawing rules and shape libraries (AWS, Azure, GCP, Kubernetes, Cisco and more), so the AI uses real icon names.\n- **Self-check**: the AI can look at a screenshot of the rendered diagram and fix overlaps (`screenshot: true`, or `screenshot_diagram`).\n- **Versions**: the last 20 versions as cards next to the canvas; restore or compare one, or ask the AI to undo (`restore_version`).\n- **Pages and export**: multi-page diagrams; save as `.drawio`, `.png`, `.svg` or `.drawio.svg`. Images get a 20 px margin, and PNGs a white background (`transparent: true` for none).\n- **Offline**: the draw.io editor ships inside the package.\n\n## Choosing a draw.io MCP server\n\nSeveral MCP servers draw draw.io diagrams. As of October 2026 they differ like this:\n\n| Server | How you see and change the diagram | A good fit when |\n|---|---|---|\n| This server, `@next-ai-drawio/mcp-server` | A live draw.io canvas in your browser. The AI reads it back, including your hand edits and selection; its changes are outlined, Ctrl+Z takes them back, and earlier versions can be restored | You and the AI take turns on the same diagram |\n| draw.io's official [`@drawio/mcp`](https://github.com/jgraph/drawio-mcp) | Opens each diagram from XML, CSV or Mermaid in the draw.io editor in a new tab; no tool reads it back | You want the diagram in the full draw.io editor and edit it yourself from there |\n| draw.io's hosted MCP app, `https://mcp.draw.io/mcp` | Shows the diagram inside the chat in Claude.ai, ChatGPT, VS Code or Cursor, with nothing to install; the diagram is sent to draw.io's server | You work in a chat app and want to see the diagram in the conversation |\n| draw.io's plugin for Claude Code, Codex CLI and Copilot CLI | A skill that writes `.drawio` files; PNG, SVG and PDF export needs draw.io Desktop | You want diagram files in your repository without an MCP server |\n| [`lgazo/drawio-mcp-server`](https://github.com/lgazo/drawio-mcp-server) | A draw.io editor on localhost, or your own draw.io through a browser extension; tools create, read, update and delete single shapes, layers and pages | You want fine-grained tools, several documents at once, or Mermaid import |\n\n## Saved diagrams\n\nEvery change is saved to `~/.next-ai-drawio/<session-id>.drawio` with its last 20 versions; the newest 50 diagrams are kept. To continue one in a later conversation, ask the AI for it: it finds it with `list_saved_diagrams` and reopens it with `start_session`.\n\n## Your own drawing rules\n\nWrite them in `~/.next-ai-drawio/instructions.md`, for example \"Always use a minimal style\". They are added to the drawing guide on every call, so edits apply without a restart. The first 5000 characters are used.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `start_session` | Open the preview and return the drawing guide; `session_id` continues a saved diagram |\n| `create_new_diagram` | Draw a new diagram from `mxCell` XML |\n| `edit_diagram` | Add, update or delete cells by id, all or nothing |\n| `get_diagram` | The current XML, including your edits in the browser |\n| `get_selection` | The shapes you selected in the preview |\n| `screenshot_diagram` | A PNG of a page, for the AI to check |\n| `load_diagram`, `export_diagram` | Open a `.drawio` or `.drawio.svg` file; save `.drawio`, `.png`, `.svg` or `.drawio.svg` |\n| `restore_version` | Go back to an earlier version; a redo stays possible |\n| `list_saved_diagrams` | Diagrams saved by earlier sessions, newest first |\n| `get_drawing_guide`, `get_shape_library` | The drawing rules again; the icon styles of a library such as `aws4` |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Pages (tabs) |\n\n## Configuration\n\nEnvironment variables, set in the client's `env` for the server:\n\n| Variable | Default | What it does |\n|---|---|---|\n| `PORT` | `6002` | Preview port; when it is taken, the next free one up to 6020 is used |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for saved diagrams and `instructions.md`; `off` turns saving off |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | `true` attaches a screenshot to every create and edit result (2 to 10 s per call) |\n| `DRAWIO_BASE_URL` | the bundled draw.io | Use another draw.io, such as a self-hosted one (see below) |\n| `DRAWIO_LANG` | unset | Fix the editor and preview language: `en`, `zh`, `zh-tw`, `ja`, `de` and so on |\n| `DRAWIO_UI` | unset | Fix the draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple` |\n| `DRAWIO_DARK` | `auto` | `1` starts dark, `0` starts light, `auto` follows the system |\n| `BROWSER` | unset | `none` does not open the preview by itself; `start_session` still returns the URL |\n| `DRAWIO_PREVIEW_UI` | `shell` | `classic` opens the previous preview page, without outlines, Ctrl+Z or `get_selection` |\n| `DEBUG` | unset | `true` logs debug messages to stderr |\n\n### Self-hosted draw.io\n\n```bash\ndocker run -d -p 8080:8080 jgraph/drawio\n```\n\nThen set `DRAWIO_BASE_URL=http://localhost:8080`. The preview cannot reach into a draw.io from another origin, so the AI's changes are not outlined, Ctrl+Z does not take them back (use the version cards) and `get_selection` does not work. The bundled copy leaves out a few features that load code on demand, such as the org chart layout. It also has no image proxy, so exported images leave out pictures inserted by their web address; see [Offline deployment](https://github.com/DayuanJiang/next-ai-draw-io/blob/main/docs/en/offline-deployment.md#insert-images-from-other-websites).\n\n## Troubleshooting\n\n- **Blank preview in VS Code Simple Browser or Cursor's browser**: the page refuses to be embedded in other pages. Open the URL in a regular browser.\n- **Screenshot or PNG/SVG export times out**: the preview tab renders them, and browsers slow down background tabs. Bring the tab to the front and try again.\n- **\"No active session\"**: the AI has to call `start_session` first.\n- **The preview does not update**: open the URL that `start_session` returned; its `?mcp=` part connects the page to the session.\n\n## How it works\n\nThe server talks to the agent over stdio and runs an HTTP server on `127.0.0.1` that serves the preview page and the bundled draw.io; the page polls it for changes. Every `/api` request needs a token that only the preview page has, so other websites cannot read or change your diagram.\n\n## License\n\nApache-2.0\n","isInternal":false,"tokens":2736,"sizeBytes":10018}],"systemPromptSnippet":"<yakaai_skills repo=\"DayuanJiang/next-ai-draw-io\">\n<!-- File: packages/claude-plugin/.mcp.json (Tokens: ~45 | Category: anthropic-skill) -->\n{\n    \"mcpServers\": {\n        \"drawio\": {\n            \"command\": \"npx\",\n            \"args\": [\"@next-ai-drawio/mcp-server@latest\"]\n        }\n    }\n}\n\n<!-- File: packages/mcp-server/package-lock.json (Tokens: ~16631 | Category: anthropic-skill) -->\n{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"lockfileVersion\": 3,\n    \"requires\": true,\n    \"packages\": {\n        \"\": {\n            \"name\": \"@next-ai-drawio/mcp-server\",\n            \"version\": \"0.4.6\",\n            \"license\": \"Apache-2.0\",\n            \"dependencies\": {\n                \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n                \"linkedom\": \"^0.18.0\",\n                \"open\": \"^11.0.0\",\n                \"pako\": \"^2.2.0\",\n                \"saxes\": \"^6.0.0\",\n                \"zod\": \"^4.0.0\"\n            },\n            \"bin\": {\n                \"next-ai-drawio-mcp\": \"dist/index.js\"\n            },\n            \"devDependencies\": {\n                \"@types/node\": \"^24.0.0\",\n                \"@types/pako\": \"^2.0.4\",\n                \"tsx\": \"^4.19.0\",\n                \"typescript\": \"^5\",\n                \"vitest\": \"^4.1.8\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@emnapi/core\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz\",\n            \"integrity\": \"sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/wasi-threads\": \"1.2.1\",\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/runtime\": {\n            \"version\": \"1.10.0\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz\",\n            \"integrity\": \"sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@emnapi/wasi-threads\": {\n            \"version\": \"1.2.1\",\n            \"resolved\": \"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz\",\n            \"integrity\": \"sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@esbuild/aix-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"aix\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/android-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/darwin-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/freebsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz\",\n            \"integrity\": \"sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-loong64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz\",\n            \"integrity\": \"sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==\",\n            \"cpu\": [\n                \"loong64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-mips64el\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz\",\n            \"integrity\": \"sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==\",\n            \"cpu\": [\n                \"mips64el\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-ppc64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz\",\n            \"integrity\": \"sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-riscv64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz\",\n            \"integrity\": \"sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==\",\n            \"cpu\": [\n                \"riscv64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-s390x\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz\",\n            \"integrity\": \"sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/linux-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/netbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"netbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openbsd-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openbsd\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/openharmony-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/sunos-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"sunos\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-arm64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz\",\n            \"integrity\": \"sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-ia32\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz\",\n            \"integrity\": \"sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==\",\n            \"cpu\": [\n                \"ia32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@esbuild/win32-x64\": {\n            \"version\": \"0.28.1\",\n            \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz\",\n            \"integrity\": \"sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/@hono/node-server\": {\n            \"version\": \"2.1.3\",\n            \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.3.tgz\",\n            \"integrity\": \"sha512-TA//nWMqPhbfdfneACk6t5a9eqbS9lABEPyKn0/xZTah3H3U2XaVg85rJFl0/Fyit0I552YDHgXGVSf3GwqbUw==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=20\"\n            },\n            \"peerDependencies\": {\n                \"hono\": \"^4\"\n            }\n        },\n        \"node_modules/@jridgewell/sourcemap-codec\": {\n            \"version\": \"1.5.5\",\n            \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n            \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@modelcontextprotocol/sdk\": {\n            \"version\": \"1.32.0\",\n            \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.0.tgz\",\n            \"integrity\": \"sha512-8BviX/hK4Gd2eL1KdTwm0gfl4d3wdoErW0Jd00h6nomUAtk6IJk5vwQJc6kfWtJTzN5OEV/lgIiJKI8fiDGAlA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n                \"ajv\": \"^8.17.1\",\n                \"ajv-formats\": \"^3.0.1\",\n                \"content-type\": \"^1.0.5\",\n                \"cors\": \"^2.8.5\",\n                \"cross-spawn\": \"^7.0.5\",\n                \"eventsource\": \"^3.0.2\",\n                \"eventsource-parser\": \"^3.0.0\",\n                \"express\": \"^5.2.1\",\n                \"express-rate-limit\": \"^8.2.1\",\n                \"hono\": \"^4.11.4\",\n                \"jose\": \"^6.1.3\",\n                \"json-schema-typed\": \"^8.0.2\",\n                \"pkce-challenge\": \"^5.0.0\",\n                \"raw-body\": \"^3.0.0\",\n                \"zod\": \"^3.25 || ^4.0\",\n                \"zod-to-json-schema\": \"^3.25.1\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"peerDependencies\": {\n                \"@cfworker/json-schema\": \"^4.1.1\",\n                \"zod\": \"^3.25 || ^4.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"@cfworker/json-schema\": {\n                    \"optional\": true\n                },\n                \"zod\": {\n                    \"optional\": false\n                }\n            }\n        },\n        \"node_modules/@napi-rs/wasm-runtime\": {\n            \"version\": \"1.1.4\",\n            \"resolved\": \"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz\",\n            \"integrity\": \"sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@tybys/wasm-util\": \"^0.10.1\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n            },\n            \"peerDependencies\": {\n                \"@emnapi/core\": \"^1.7.1\",\n                \"@emnapi/runtime\": \"^1.7.1\"\n            }\n        },\n        \"node_modules/@oxc-project/types\": {\n            \"version\": \"0.133.0\",\n            \"resolved\": \"https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz\",\n            \"integrity\": \"sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/Boshen\"\n            }\n        },\n        \"node_modules/@rolldown/binding-android-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"android\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-darwin-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"darwin\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-freebsd-x64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz\",\n            \"integrity\": \"sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"freebsd\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm-gnueabihf\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz\",\n            \"integrity\": \"sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==\",\n            \"cpu\": [\n                \"arm\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-arm64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-ppc64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==\",\n            \"cpu\": [\n                \"ppc64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-s390x-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==\",\n            \"cpu\": [\n                \"s390x\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-gnu\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz\",\n            \"integrity\": \"sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-linux-x64-musl\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz\",\n            \"integrity\": \"sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"linux\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-openharmony-arm64\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz\",\n            \"integrity\": \"sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"openharmony\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-wasm32-wasi\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz\",\n            \"integrity\": \"sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==\",\n            \"cpu\": [\n                \"wasm32\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"@emnapi/core\": \"1.10.0\",\n                \"@emnapi/runtime\": \"1.10.0\",\n                \"@napi-rs/wasm-runtime\": \"^1.1.4\"\n            },\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-arm64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==\",\n            \"cpu\": [\n                \"arm64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/binding-win32-x64-msvc\": {\n            \"version\": \"1.0.3\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz\",\n            \"integrity\": \"sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==\",\n            \"cpu\": [\n                \"x64\"\n            ],\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"os\": [\n                \"win32\"\n            ],\n            \"engines\": {\n                \"node\": \"^20.19.0 || >=22.12.0\"\n            }\n        },\n        \"node_modules/@rolldown/pluginutils\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz\",\n            \"integrity\": \"sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@standard-schema/spec\": {\n            \"version\": \"1.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz\",\n            \"integrity\": \"sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@tybys/wasm-util\": {\n            \"version\": \"0.10.2\",\n            \"resolved\": \"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz\",\n            \"integrity\": \"sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"optional\": true,\n            \"dependencies\": {\n                \"tslib\": \"^2.4.0\"\n            }\n        },\n        \"node_modules/@types/chai\": {\n            \"version\": \"5.2.3\",\n            \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz\",\n            \"integrity\": \"sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@types/deep-eql\": \"*\",\n                \"assertion-error\": \"^2.0.1\"\n            }\n        },\n        \"node_modules/@types/deep-eql\": {\n            \"version\": \"4.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n            \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/estree\": {\n            \"version\": \"1.0.9\",\n            \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz\",\n            \"integrity\": \"sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/node\": {\n            \"version\": \"24.19.1\",\n            \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz\",\n            \"integrity\": \"sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"undici-types\": \">=7.24.0 <7.24.7\"\n            }\n        },\n        \"node_modules/@types/pako\": {\n            \"version\": \"2.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz\",\n            \"integrity\": \"sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@vitest/expect\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz\",\n            \"integrity\": \"sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@standard-schema/spec\": \"^1.1.0\",\n                \"@types/chai\": \"^5.2.2\",\n                \"@vitest/spy\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"chai\": \"^6.2.2\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/mocker\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz\",\n            \"integrity\": \"sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/spy\": \"4.1.11\",\n                \"estree-walker\": \"^3.0.3\",\n                \"magic-string\": \"^0.30.21\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            },\n            \"peerDependencies\": {\n                \"msw\": \"^2.4.9\",\n                \"vite\": \"^6.0.0 || ^7.0.0 || ^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"msw\": {\n                    \"optional\": true\n                },\n                \"vite\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/@vitest/pretty-format\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz\",\n            \"integrity\": \"sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/runner\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz\",\n            \"integrity\": \"sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/utils\": \"4.1.11\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/snapshot\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz\",\n            \"integrity\": \"sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"@vitest/utils\": \"4.1.11\",\n                \"magic-string\": \"^0.30.21\",\n                \"pathe\": \"^2.0.3\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/spy\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz\",\n            \"integrity\": \"sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/@vitest/utils\": {\n            \"version\": \"4.1.11\",\n            \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz\",\n            \"integrity\": \"sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@vitest/pretty-format\": \"4.1.11\",\n                \"convert-source-map\": \"^2.0.0\",\n                \"tinyrainbow\": \"^3.1.0\"\n            },\n            \"funding\": {\n                \"url\": \"https://opencollective.com/vitest\"\n            }\n        },\n        \"node_modules/accepts\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n            \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"mime-types\": \"^3.0.0\",\n                \"negotiator\": \"^1.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/ajv\": {\n            \"version\": \"8.20.0\",\n            \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n            \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"fast-deep-equal\": \"^3.1.3\",\n                \"fast-uri\": \"^3.0.1\",\n                \"json-schema-traverse\": \"^1.0.0\",\n                \"require-from-string\": \"^2.0.2\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/epoberezkin\"\n            }\n        },\n        \"node_modules/ajv-formats\": {\n            \"version\": \"3.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n            \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependencies\": {\n                \"ajv\": \"^8.0.0\"\n            },\n            \"peerDependenciesMeta\": {\n                \"ajv\": {\n                    \"optional\": true\n                }\n            }\n        },\n        \"node_modules/assertion-error\": {\n            \"version\": \"2.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n            \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=12\"\n            }\n        },\n        \"node_modules/body-parser\": {\n            \"version\": \"2.3.0\",\n            \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n            \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"bytes\": \"^3.1.2\",\n                \"content-type\": \"^2.0.0\",\n                \"debug\": \"^4.4.3\",\n                \"http-errors\": \"^2.0.1\",\n                \"iconv-lite\": \"^0.7.2\",\n                \"on-finished\": \"^2.4.1\",\n                \"qs\": \"^6.15.2\",\n                \"raw-body\": \"^3.0.2\",\n                \"type-is\": \"^2.1.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/body-parser/node_modules/content-type\": {\n            \"version\": \"2.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n            \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/boolbase\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz\",\n            \"integrity\": \"sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==\",\n            \"license\": \"ISC\",\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/bundle-name\": {\n            \"version\": \"4.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n            \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"run-applescript\": \"^7.0.0\"\n            },\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/sindresorhus\"\n            }\n        },\n        \"node_modules/bytes\": {\n            \"version\": \"3.1.2\",\n            \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n            \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.8\"\n            }\n        },\n        \"node_modules/call-bind-apply-helpers\": {\n            \"version\": \"1.0.2\",\n            \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n            \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"es-errors\": \"^1.3.0\",\n                \"function-bind\": \"^1.1.2\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            }\n        },\n        \"node_modules/call-bound\": {\n            \"version\": \"1.0.4\",\n            \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n            \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"call-bind-apply-helpers\": \"^1.0.2\",\n                \"get-intrinsic\": \"^1.3.0\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.4\"\n            },\n            \"funding\": {\n                \"url\": \"https://github.com/sponsors/ljharb\"\n            }\n        },\n        \"node_modules/chai\": {\n            \"version\": \"6.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/chai/-/chai-6.2.2.tgz\",\n            \"integrity\": \"sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==\",\n            \"dev\": true,\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            }\n        },\n        \"node_modules/content-disposition\": {\n            \"version\": \"1.0.1\",\n            \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz\",\n            \"integrity\": \"sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=18\"\n            },\n            \"funding\": {\n                \"type\": \"opencollective\",\n                \"url\": \"https://opencollective.com/express\"\n            }\n        },\n        \"node_modules/content-type\": {\n            \"version\": \"1.0.5\",\n            \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n            \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/convert-source-map\": {\n            \"version\": \"2.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n            \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n            \"dev\": true,\n            \"license\": \"MIT\"\n        },\n        \"node_modules/cookie\": {\n            \"version\": \"0.7.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n            \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">= 0.6\"\n            }\n        },\n        \"node_modules/cookie-signature\": {\n            \"version\": \"1.2.2\",\n            \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n            \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n            \"license\": \"MIT\",\n            \"engines\": {\n                \"node\": \">=6.6.0\"\n            }\n        },\n        \"node_modules/cors\": {\n            \"version\": \"2.8.5\",\n            \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.5.tgz\",\n            \"integrity\": \"sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"object-assign\": \"^4\",\n                \"vary\": \"^1\"\n            },\n            \"engines\": {\n                \"node\": \">= 0.10\"\n            }\n        },\n        \"node_modules/cross-spawn\": {\n            \"version\": \"7.0.6\",\n            \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n            \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"path-key\": \"^3.1.0\",\n                \"shebang-command\": \"^2.0.0\",\n                \"which\": \"^2.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">= 8\"\n            }\n        },\n        \"node_modules/css-select\": {\n            \"version\": \"7.0.0\",\n            \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-7.0.0.tgz\",\n            \"integrity\": \"sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==\",\n            \"license\": \"BSD-2-Clause\",\n            \"dependencies\": {\n                \"boolbase\": \"^2.0.0\",\n                \"css-what\": \"^8.0.0\",\n                \"domhandler\": \"^6.0.1\",\n                \"domutils\": \"^4.0.2\",\n                \"nth-check\": \"^3.0.1\"\n            },\n            \"engines\": {\n                \"node\": \">=20.19.0\"\n            },\n            \"funding\": {\n                \"type\": \"github\",\n                \"url\": \"https://github.com/sponsors/fb55\"\n            }\n        },\n        \"node_modules/css-select/node_modules/dom-serializer\": {\n            \"version\": \"3.1.1\",\n            \"resolved\": \"https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz\",\n            \"integrity\": \"sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"domelementtype\": \"^3\n\n<!-- File: packages/mcp-server/package.json (Tokens: ~663 | Category: anthropic-skill) -->\n{\n    \"name\": \"@next-ai-drawio/mcp-server\",\n    \"version\": \"0.4.6\",\n    \"description\": \"draw.io MCP server for Claude Code, Cursor, Codex and VS Code: the AI draws on a live browser canvas you can also edit by hand, with versions and undo\",\n    \"mcpName\": \"io.github.DayuanJiang/next-ai-drawio\",\n    \"type\": \"module\",\n    \"main\": \"dist/index.js\",\n    \"bin\": {\n        \"next-ai-drawio-mcp\": \"./dist/index.js\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && tsc -p shell && node scripts/copy-assets.mjs && node scripts/fetch-drawio.mjs && node scripts/build-shell.mjs\",\n        \"check-drawio\": \"node scripts/check-drawio-files.mjs\",\n        \"check-package\": \"node scripts/check-package.mjs\",\n        \"dev\": \"tsx watch src/index.ts\",\n        \"start\": \"node dist/index.js\",\n        \"test\": \"vitest run\",\n        \"test:watch\": \"vitest\",\n        \"test:e2e\": \"playwright test\",\n        \"prepublishOnly\": \"npm run build\"\n    },\n    \"keywords\": [\n        \"mcp\",\n        \"mcp-server\",\n        \"drawio\",\n        \"draw.io\",\n        \"diagrams.net\",\n        \"diagram\",\n        \"architecture-diagram\",\n        \"flowchart\",\n        \"ai\",\n        \"claude\",\n        \"claude-code\",\n        \"cursor\",\n        \"codex\",\n        \"model-context-protocol\"\n    ],\n    \"author\": \"DayuanJiang\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n        \"directory\": \"packages/mcp-server\"\n    },\n    \"homepage\": \"https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/DayuanJiang/next-ai-draw-io/issues\"\n    },\n    \"publishConfig\": {\n        \"access\": \"public\"\n    },\n    \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.31.0\",\n        \"linkedom\": \"^0.18.0\",\n        \"open\": \"^11.0.0\",\n        \"pako\": \"^2.2.0\",\n        \"saxes\": \"^6.0.0\",\n        \"zod\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"^24.0.0\",\n        \"@types/pako\": \"^2.0.4\",\n        \"tsx\": \"^4.19.0\",\n        \"typescript\": \"^5\",\n        \"vitest\": \"^4.1.8\"\n    },\n    \"engines\": {\n        \"node\": \">=18\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n\n<!-- File: packages/mcp-server/tsconfig.json (Tokens: ~137 | Category: anthropic-skill) -->\n{\n    \"compilerOptions\": {\n        \"target\": \"ES2022\",\n        \"module\": \"Node16\",\n        \"moduleResolution\": \"Node16\",\n        \"outDir\": \"./dist\",\n        \"rootDir\": \"./src\",\n        \"strict\": true,\n        \"esModuleInterop\": true,\n        \"skipLibCheck\": true,\n        \"forceConsistentCasingInFileNames\": true,\n        \"sourceMap\": true,\n        \"resolveJsonModule\": true,\n        \"rewriteRelativeImportExtensions\": true,\n        \"types\": [\"node\"]\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\", \"dist\"]\n}\n\n<!-- File: packages/claude-plugin/.claude-plugin/plugin.json (Tokens: ~122 | Category: plugin-manifest) -->\n{\n    \"name\": \"next-ai-drawio\",\n    \"version\": \"1.0.0\",\n    \"description\": \"AI-powered Draw.io diagram generation with real-time browser preview. Create flowcharts, architecture diagrams, and more through natural language.\",\n    \"author\": {\n        \"name\": \"DayuanJiang\"\n    },\n    \"repository\": \"https://github.com/DayuanJiang/next-ai-draw-io\",\n    \"homepage\": \"https://next-ai-drawio.jiang.jp\",\n    \"license\": \"Apache-2.0\"\n}\n\n<!-- File: packages/claude-plugin/README.md (Tokens: ~1772 | Category: plugin-manifest) -->\n# Next AI Draw.io - Claude Code Plugin\n\nAI-powered Draw.io diagram generation with real-time browser preview for Claude Code.\n\n## Installation\n\n### From the Claude Code community marketplace\n\n```\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\nThis needs Claude Code 2.1.275 or later. On an older version, run `/plugin marketplace add anthropics/claude-plugins-community` first, then `/plugin install next-ai-drawio@claude-community`.\n\n### Manual Installation\n\n```bash\nclaude --plugin-dir /path/to/packages/claude-plugin\n```\n\nOr add the MCP server directly, for every project (`--scope user`):\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n## Features\n\n- **Real-time Preview**: Diagrams appear and update in your browser as Claude creates them. The preview is the web app's canvas: a change Claude makes to the page on screen is outlined, and one Ctrl+Z takes it back\n- **Selection**: Select shapes in the preview and say \"move these\"; Claude reads what you selected with `get_selection`\n- **Drawing Rules and Shape Libraries**: Claude gets the web app's layout and style rules and the icon docs for AWS, Azure, GCP, Kubernetes and more\n- **Self-check**: Claude can take a screenshot of the rendered diagram and fix what looks wrong\n- **Draw from Your Files**: ask Claude to draw from a document, image or web page; it reads the source with its own tools and draws. Existing .drawio files open with load_diagram\n- **Version History**: The last 20 versions appear as cards next to the canvas, with thumbnails; restore one, undo the latest, or compare a version with the canvas\n- **Natural Language**: Describe diagrams in plain text - flowcharts, architecture diagrams, etc.\n- **Edit Support**: Modify existing diagrams with natural language instructions, including your own edits in the browser\n- **Export**: Save diagrams as `.drawio`, `.png`, `.svg`, or `.drawio.svg` files\n- **Auto-save**: Each diagram is saved to `~/.next-ai-drawio/`, so `claude --resume` can pick it up again\n- **Custom Instructions**: keep your own drawing rules in `~/.next-ai-drawio/instructions.md` (for example \"Always draw in minimal style\"); they are appended to the drawing guide on every call\n- **Self-contained**: Embedded server and the draw.io editor in one package; the preview works offline after install\n\n## Use Case Examples\n\n### 1. Create Architecture Diagrams\n\n```\nGenerate an AWS architecture diagram with Lambda, API Gateway, DynamoDB,\nand S3 for a serverless REST API\n```\n\n### 2. Flowchart Generation\n\n```\nCreate a flowchart showing the CI/CD pipeline: code commit -> build ->\ntest -> staging deploy -> production deploy with approval gates\n```\n\n### 3. System Design Documentation\n\n```\nDesign a microservices e-commerce system with user service, product catalog,\nshopping cart, order processing, and payment gateway\n```\n\n### 4. Cloud Architecture (AWS/GCP/Azure)\n\n```\nGenerate a GCP architecture diagram with Cloud Run, Cloud SQL, and\nCloud Storage for a web application\n```\n\n### 5. Sequence Diagrams\n\n```\nCreate a sequence diagram showing OAuth 2.0 authorization code flow\nbetween user, client app, auth server, and resource server\n```\n\n### 6. Draw From a Document\n\n```\nRead docs/architecture.md and draw the system as a diagram\n```\n\n### 7. Recreate a Sketch\n\n```\nRecreate the whiteboard photo at ~/Desktop/sketch.jpg as a clean draw.io diagram\n```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `start_session` | Opens browser with real-time diagram preview; the result includes the drawing rules. Pass `session_id` to continue a saved diagram |\n| `list_saved_diagrams` | List the auto-saved diagrams of earlier sessions, newest first, with their pages |\n| `get_drawing_guide` | Return the drawing rules again |\n| `get_shape_library` | Return the shapes and icon styles of a library such as `aws4` |\n| `create_new_diagram` | Create a new diagram from XML |\n| `load_diagram` | Load a `.drawio` or `.drawio.svg` file from disk |\n| `edit_diagram` | Edit diagram by ID-based operations; all or nothing |\n| `get_diagram` | Get the current diagram XML |\n| `get_selection` | Return the shapes and edges you selected in the preview, so Claude can act on \"these\" |\n| `screenshot_diagram` | Return a PNG of a page so Claude can check the result |\n| `export_diagram` | Save diagram to a `.drawio`, `.png`, `.svg`, or `.drawio.svg` file |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Work with multi-page diagrams |\n| `restore_version` | Undo: go back to an earlier version from History (redo is possible too) |\n\n## How It Works\n\n```\nClaude Code <--stdio--> MCP Server <--http--> Browser (draw.io)\n```\n\n1. Ask Claude to create a diagram\n2. Claude calls `start_session` to open a browser window\n3. Claude generates diagram XML and sends it to the browser\n4. You see the diagram update in real-time!\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `6002` | Port for the embedded HTTP server |\n| `DRAWIO_BASE_URL` | unset (the bundled draw.io) | An external draw.io, such as a self-hosted instance. With it Claude's changes are not outlined on the canvas, Ctrl+Z does not take them back and `get_selection` cannot read the selection |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for auto-saved diagrams and your `instructions.md`; `off` turns auto-save off (`instructions.md` is then read from the default folder) |\n| `DRAWIO_LANG` | unset | Language of the draw.io editor, such as `en`, `zh`, `zh-tw`, `ja` or `de`. Unset, draw.io chooses (the browser language on `embed.diagrams.net`, English on a self-hosted draw.io) and the user can change it under **Extras > Language** |\n| `DRAWIO_UI` | unset | draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple`. Unset, the user picks one under **Extras > Theme** |\n| `DRAWIO_DARK` | `auto` | Dark mode of the preview and the editor until the user switches it with the button at the top right: `auto` follows the system, `1` starts dark, `0` starts light |\n| `DRAWIO_PREVIEW_UI` | `shell` | The preview page; `classic` opens the previous preview page for one more release |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | Set to `true` to attach a screenshot to every `create_new_diagram` and `edit_diagram` result (costs 2 to 10 s per call) |\n| `DEBUG` | unset | Set to `true` to log debug messages |\n\n## Links\n\n- [Homepage](https://next-ai-drawio.jiang.jp)\n- [MCP server page](https://next-ai-drawio.jiang.jp/en/mcp): every client's setup and how it compares with other draw.io MCP servers\n- [Use it from Claude Code](https://next-ai-drawio.jiang.jp/en/docs/claude-code): the docs page for this plugin\n- [Gallery](https://next-ai-drawio.jiang.jp/en/gallery): diagrams Claude drew with this server, with their prompts\n- [GitHub Repository](https://github.com/DayuanJiang/next-ai-draw-io)\n- [MCP Server Documentation](https://github.com/DayuanJiang/next-ai-draw-io/tree/main/packages/mcp-server)\n\n## License\n\nApache-2.0\n\n<!-- File: packages/mcp-server/README.md (Tokens: ~2736 | Category: plugin-manifest) -->\n# Next AI Draw.io MCP Server\n\nAn MCP server that lets Claude Code, Cursor, VS Code and other AI agents draw draw.io diagrams from your project's files, with a live preview in your browser. The preview is the canvas of the [Next AI Draw.io web app](https://next-ai-drawio.jiang.jp/): the AI's changes are outlined, Ctrl+Z takes them back, and you can edit by hand at any time.\n\nhttps://github.com/user-attachments/assets/6f53a67b-ab21-4113-9fee-7fb32f9de678\n\n## Install\n\nIn VS Code or Cursor, one click adds it: [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522drawio%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540next-ai-drawio%252Fmcp-server%2540latest%2522%255D%257D) [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_Server-000000?style=flat-square)](https://cursor.com/en/install-mcp?name=drawio&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAbmV4dC1haS1kcmF3aW8vbWNwLXNlcnZlckBsYXRlc3QiXX0%3D)\n\n### Let your AI agent install it\n\nPaste this into Claude Code, Codex, Cursor, VS Code, Cline or any agent that can edit files and run commands:\n\n```text\nInstall the drawio MCP server for the client you are running in, following\nhttps://raw.githubusercontent.com/DayuanJiang/next-ai-draw-io/main/packages/mcp-server/README.md\nInstall it for all my projects (user scope, for Claude Code \"--scope user\"),\nname the server \"drawio\" and keep the servers that are already configured.\nThen tell me how to reload so its tools show up.\n```\n\n### Install by hand\n\n**Claude Code**\n\n```bash\nclaude mcp add --scope user drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\n`--scope user` makes the tools available in every project. Without it, they exist only in the folder where you ran the command.\n\nOr install it as a plugin from the Claude Code community marketplace (Claude Code 2.1.275 or later):\n\n```text\n/plugin install next-ai-drawio --marketplace anthropics/claude-plugins-community\n```\n\n**Codex CLI**\n\n```bash\ncodex mcp add drawio -- npx @next-ai-drawio/mcp-server@latest\n```\n\nCodex asks before each drawio tool that changes the diagram, and `codex exec` without full access fails with \"MCP tool call requires approval\". To let the drawio tools run without asking, add one line to the server's section in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.drawio]\ncommand = \"npx\"\nargs = [\"@next-ai-drawio/mcp-server@latest\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\nTo approve only some tools, use `[mcp_servers.drawio.tools.<tool name>]` with `approval_mode = \"approve\"` instead.\n\n**VS Code** (`.vscode/mcp.json`)\n\n```json\n{\n  \"servers\": {\n    \"drawio\": { \"type\": \"stdio\", \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\n**Cursor, Claude Desktop, Cline and most other clients** (`~/.cursor/mcp.json`, `claude_desktop_config.json`, `cline_mcp_settings.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"drawio\": { \"command\": \"npx\", \"args\": [\"@next-ai-drawio/mcp-server@latest\"] }\n  }\n}\n```\n\nRestart the client, then ask, for example, \"Read this repo and draw its architecture\". The preview opens in your browser and the diagram appears as it is drawn.\n\n## Features\n\n- **Draws from your project**: the agent reads your code and documents with its own tools. Existing `.drawio` and `.drawio.svg` files open with `load_diagram`.\n- **The web app's canvas**: the AI's changes are outlined for a few seconds (never in exports) and one Ctrl+Z takes them back. Select shapes and say \"these\" (`get_selection`). Your hand edits are read before the AI edits again.\n- **Real icons**: the web app's drawing rules and shape libraries (AWS, Azure, GCP, Kubernetes, Cisco and more), so the AI uses real icon names.\n- **Self-check**: the AI can look at a screenshot of the rendered diagram and fix overlaps (`screenshot: true`, or `screenshot_diagram`).\n- **Versions**: the last 20 versions as cards next to the canvas; restore or compare one, or ask the AI to undo (`restore_version`).\n- **Pages and export**: multi-page diagrams; save as `.drawio`, `.png`, `.svg` or `.drawio.svg`. Images get a 20 px margin, and PNGs a white background (`transparent: true` for none).\n- **Offline**: the draw.io editor ships inside the package.\n\n## Choosing a draw.io MCP server\n\nSeveral MCP servers draw draw.io diagrams. As of October 2026 they differ like this:\n\n| Server | How you see and change the diagram | A good fit when |\n|---|---|---|\n| This server, `@next-ai-drawio/mcp-server` | A live draw.io canvas in your browser. The AI reads it back, including your hand edits and selection; its changes are outlined, Ctrl+Z takes them back, and earlier versions can be restored | You and the AI take turns on the same diagram |\n| draw.io's official [`@drawio/mcp`](https://github.com/jgraph/drawio-mcp) | Opens each diagram from XML, CSV or Mermaid in the draw.io editor in a new tab; no tool reads it back | You want the diagram in the full draw.io editor and edit it yourself from there |\n| draw.io's hosted MCP app, `https://mcp.draw.io/mcp` | Shows the diagram inside the chat in Claude.ai, ChatGPT, VS Code or Cursor, with nothing to install; the diagram is sent to draw.io's server | You work in a chat app and want to see the diagram in the conversation |\n| draw.io's plugin for Claude Code, Codex CLI and Copilot CLI | A skill that writes `.drawio` files; PNG, SVG and PDF export needs draw.io Desktop | You want diagram files in your repository without an MCP server |\n| [`lgazo/drawio-mcp-server`](https://github.com/lgazo/drawio-mcp-server) | A draw.io editor on localhost, or your own draw.io through a browser extension; tools create, read, update and delete single shapes, layers and pages | You want fine-grained tools, several documents at once, or Mermaid import |\n\n## Saved diagrams\n\nEvery change is saved to `~/.next-ai-drawio/<session-id>.drawio` with its last 20 versions; the newest 50 diagrams are kept. To continue one in a later conversation, ask the AI for it: it finds it with `list_saved_diagrams` and reopens it with `start_session`.\n\n## Your own drawing rules\n\nWrite them in `~/.next-ai-drawio/instructions.md`, for example \"Always use a minimal style\". They are added to the drawing guide on every call, so edits apply without a restart. The first 5000 characters are used.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `start_session` | Open the preview and return the drawing guide; `session_id` continues a saved diagram |\n| `create_new_diagram` | Draw a new diagram from `mxCell` XML |\n| `edit_diagram` | Add, update or delete cells by id, all or nothing |\n| `get_diagram` | The current XML, including your edits in the browser |\n| `get_selection` | The shapes you selected in the preview |\n| `screenshot_diagram` | A PNG of a page, for the AI to check |\n| `load_diagram`, `export_diagram` | Open a `.drawio` or `.drawio.svg` file; save `.drawio`, `.png`, `.svg` or `.drawio.svg` |\n| `restore_version` | Go back to an earlier version; a redo stays possible |\n| `list_saved_diagrams` | Diagrams saved by earlier sessions, newest first |\n| `get_drawing_guide`, `get_shape_library` | The drawing rules again; the icon styles of a library such as `aws4` |\n| `list_pages`, `add_page`, `rename_page`, `delete_page` | Pages (tabs) |\n\n## Configuration\n\nEnvironment variables, set in the client's `env` for the server:\n\n| Variable | Default | What it does |\n|---|---|---|\n| `PORT` | `6002` | Preview port; when it is taken, the next free one up to 6020 is used |\n| `DRAWIO_DATA_DIR` | `~/.next-ai-drawio` | Folder for saved diagrams and `instructions.md`; `off` turns saving off |\n| `DRAWIO_AUTO_SCREENSHOT` | unset | `true` attaches a screenshot to every create and edit result (2 to 10 s per call) |\n| `DRAWIO_BASE_URL` | the bundled draw.io | Use another draw.io, such as a self-hosted one (see below) |\n| `DRAWIO_LANG` | unset | Fix the editor and preview language: `en`, `zh`, `zh-tw`, `ja`, `de` and so on |\n| `DRAWIO_UI` | unset | Fix the draw.io theme: `kennedy`, `atlas`, `dark`, `min`, `sketch` or `simple` |\n| `DRAWIO_DARK` | `auto` | `1` starts dark, `0` starts light, `auto` follows the system |\n| `BROWSER` | unset | `none` does not open the preview by itself; `start_session` still returns the URL |\n| `DRAWIO_PREVIEW_UI` | `shell` | `classic` opens the previous preview page, without outlines, Ctrl+Z or `get_selection` |\n| `DEBUG` | unset | `true` logs debug messages to stderr |\n\n### Self-hosted draw.io\n\n```bash\ndocker run -d -p 8080:8080 jgraph/drawio\n```\n\nThen set `DRAWIO_BASE_URL=http://localhost:8080`. The preview cannot reach into a draw.io from another origin, so the AI's changes are not outlined, Ctrl+Z does not take them back (use the version cards) and `get_selection` does not work. The bundled copy leaves out a few features that load code on demand, such as the org chart layout. It also has no image proxy, so exported images leave out pictures inserted by their web address; see [Offline deployment](https://github.com/DayuanJiang/next-ai-draw-io/blob/main/docs/en/offline-deployment.md#insert-images-from-other-websites).\n\n## Troubleshooting\n\n- **Blank preview in VS Code Simple Browser or Cursor's browser**: the page refuses to be embedded in other pages. Open the URL in a regular browser.\n- **Screenshot or PNG/SVG export times out**: the preview tab renders them, and browsers slow down background tabs. Bring the tab to the front and try again.\n- **\"No active session\"**: the AI has to call `start_session` first.\n- **The preview does not update**: open the URL that `start_session` returned; its `?mcp=` part connects the page to the session.\n\n## How it works\n\nThe server talks to the agent over stdio and runs an HTTP server on `127.0.0.1` that serves the preview page and the bundled draw.io; the page polls it for changes. Every `/api` request needs a token that only the preview page has, so other websites cannot read or change your diagram.\n\n## License\n\nApache-2.0\n</yakaai_skills>"}