From 2ab0b0988b047d23a36294214240d129b2b92525 Mon Sep 17 00:00:00 2001 From: yao <63141491+yaonyan@users.noreply.github.com> Date: Fri, 22 May 2026 21:42:20 +0800 Subject: [PATCH 1/2] fix: upgrade to zod v4 + hono/zod-openapi v1, drop SSE server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade @hono/zod-openapi ^0.19.2 → removed entirely (plain hono) - Upgrade zod ^3.x → ^4.0.0 - Upgrade @modelcontextprotocol/sdk ^1.8.0 → ^1.29.0 (Zod v4 compat) - Remove @mcpc/core and @mcpc/utils dependencies (no longer needed) - Remove SSE HTTP server, controllers, and ./server export - Switch server.tool() → server.registerTool() for SDK 1.29.0 API - src/app.ts simplified to just export the MCP server instance Fixes TypeError crash caused by zod-to-openapi@7.x monkey-patching Zod v4 lazy prototype methods incorrectly. Co-Authored-By: Claude Sonnet 4.6 --- deno.json | 8 +- deno.lock | 822 ++++--------------------- src/app.ts | 11 - src/controllers/messages.controller.ts | 45 -- src/controllers/register.ts | 11 - src/controllers/sse.controller.ts | 50 -- src/server.ts | 18 - src/set-up-mcp.ts | 56 +- 8 files changed, 152 insertions(+), 869 deletions(-) delete mode 100644 src/controllers/messages.controller.ts delete mode 100644 src/controllers/register.ts delete mode 100644 src/controllers/sse.controller.ts delete mode 100644 src/server.ts diff --git a/deno.json b/deno.json index 98bee3d..561760d 100644 --- a/deno.json +++ b/deno.json @@ -12,7 +12,6 @@ "url": "https://github.com/mcpc-tech/code-runner-mcp/issues" }, "tasks": { - "server:watch": "deno -A --watch ./src/server.ts", "server:compile": "echo no need to compile", "cli": "deno run --allow-all ./src/cli.ts", "test": "deno run --allow-all tests/run-tests.ts", @@ -24,20 +23,17 @@ "test:integration": "deno run --allow-all tests/run-tests.ts --filter 'Integration'" }, "imports": { - "@hono/zod-openapi": "npm:@hono/zod-openapi@^0.19.2", - "@mcpc/core": "jsr:@mcpc/core@^0.1.0", "@mcpc-tech/handle-sandbox": "npm:@mcpc-tech/handle-sandbox@^0.0.11", - "@modelcontextprotocol/sdk": "npm:@modelcontextprotocol/sdk@^1.8.0", + "@modelcontextprotocol/sdk": "npm:@modelcontextprotocol/sdk@^1.29.0", "@std/cli": "jsr:@std/cli@^1.0.0", "deno": "npm:deno@^2.6.7", "env-paths": "npm:env-paths@^4.0.0", "json-schema-to-zod": "npm:json-schema-to-zod@^2.6.1", "pyodide": "npm:pyodide@^0.29.0", - "zod": "npm:zod@^3.24.2" + "zod": "npm:zod@^4.0.0" }, "exports": { ".": "./mod.ts", - "./server": "./src/server.ts", "./bin": "./src/stdio.server.ts", "./cli": "./src/cli.ts" }, diff --git a/deno.lock b/deno.lock index a69ac88..87ac888 100644 --- a/deno.lock +++ b/deno.lock @@ -1,392 +1,99 @@ { "version": "5", "specifiers": { - "jsr:@es-toolkit/es-toolkit@^1.37.2": "1.39.8", - "jsr:@mcpc/core@0.1": "0.1.0", "jsr:@std/assert@*": "1.0.19", - "jsr:@std/cli@*": "1.0.20", - "jsr:@std/cli@1": "1.0.20", - "jsr:@std/http@^1.0.14": "1.0.20", - "jsr:@std/internal@^1.0.12": "1.0.12", - "jsr:@std/internal@^1.0.6": "1.0.9", - "npm:@ai-sdk/openai@^1.3.7": "1.3.23_zod@3.25.76", - "npm:@hono/zod-openapi@~0.19.2": "0.19.10_hono@4.8.9_zod@3.25.76", - "npm:@mcpc-tech/code-runner-mcp@latest": "0.1.8_zod@3.25.76_ajv@8.17.1", + "jsr:@std/cli@1": "1.0.28", + "jsr:@std/internal@^1.0.12": "1.0.13", "npm:@mcpc-tech/handle-sandbox@^0.0.11": "0.0.11", - "npm:@modelcontextprotocol/sdk@^1.8.0": "1.17.0_express@5.1.0_zod@3.25.76", - "npm:@segment/ajv-human-errors@^2.15.0": "2.15.0_ajv@8.17.1", - "npm:@types/node@*": "22.15.15", - "npm:ai@^4.3.4": "4.3.19_zod@3.25.76", - "npm:ajv-formats@^3.0.1": "3.0.1_ajv@8.17.1", - "npm:ajv@^8.17.1": "8.17.1", - "npm:cheerio@1": "1.1.2", - "npm:dayjs@^1.11.13": "1.11.13", - "npm:deno@^2.6.7": "2.6.7", - "npm:env-paths@*": "4.0.0", + "npm:@modelcontextprotocol/sdk@^1.29.0": "1.29.0_zod@4.4.3", + "npm:deno@^2.6.7": "2.7.14", "npm:env-paths@4": "4.0.0", - "npm:json-schema-faker@~0.5.9": "0.5.9", - "npm:json-schema-to-zod@^2.6.1": "2.6.1", - "npm:json-schema-traverse@1": "1.0.0", - "npm:jsonrepair@^3.12.0": "3.13.0", - "npm:minimist@^1.2.8": "1.2.8", - "npm:pyodide@0.29": "0.29.3", - "npm:zod@^3.24.2": "3.25.76" + "npm:json-schema-to-zod@^2.6.1": "2.8.1", + "npm:pyodide@0.29": "0.29.4", + "npm:zod@4": "4.4.3" }, "jsr": { - "@es-toolkit/es-toolkit@1.39.8": { - "integrity": "4c03332b6dea5f1597827e3aec426a88b8b0ba18aa1899102f4c1126fb4a42b4" - }, - "@mcpc/core@0.1.0": { - "integrity": "aeeecc9b6bd635d9a5c05da23f2644c98acc7f54bc59a261c32d7f09568a10c6", - "dependencies": [ - "jsr:@es-toolkit/es-toolkit", - "jsr:@std/http", - "npm:@ai-sdk/openai", - "npm:@hono/zod-openapi", - "npm:@modelcontextprotocol/sdk", - "npm:@segment/ajv-human-errors", - "npm:ai", - "npm:ajv", - "npm:ajv-formats", - "npm:cheerio", - "npm:dayjs", - "npm:json-schema-faker", - "npm:json-schema-to-zod", - "npm:json-schema-traverse", - "npm:jsonrepair", - "npm:minimist", - "npm:zod" - ] - }, - "@std/assert@1.0.13": { - "integrity": "ae0d31e41919b12c656c742b22522c32fb26ed0cba32975cb0de2a273cb68b29", - "dependencies": [ - "jsr:@std/internal@^1.0.6" - ] - }, "@std/assert@1.0.19": { "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e", "dependencies": [ - "jsr:@std/internal@^1.0.12" + "jsr:@std/internal" ] }, - "@std/cli@1.0.20": { - "integrity": "a8c384a2c98cec6ec6a2055c273a916e2772485eb784af0db004c5ab8ba52333" - }, - "@std/http@1.0.20": { - "integrity": "b5cc33fc001bccce65ed4c51815668c9891c69ccd908295997e983d8f56070a1" + "@std/cli@1.0.28": { + "integrity": "74ef9b976db59ca6b23a5283469c9072be6276853807a83ec6c7ce412135c70a" }, - "@std/internal@1.0.9": { - "integrity": "bdfb97f83e4db7a13e8faab26fb1958d1b80cc64366501af78a0aee151696eb8" - }, - "@std/internal@1.0.12": { - "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" + "@std/internal@1.0.13": { + "integrity": "2f9546691d4ac2d32859c82dff284aaeac980ddeca38430d07941e7e288725c0" } }, "npm": { - "@ai-sdk/openai@1.3.23_zod@3.25.76": { - "integrity": "sha512-86U7rFp8yacUAOE/Jz8WbGcwMCqWvjK33wk5DXkfnAOEn3mx2r7tNSJdjukQFZbAK97VMXGPPHxF+aEARDXRXQ==", - "dependencies": [ - "@ai-sdk/provider", - "@ai-sdk/provider-utils", - "zod" - ] - }, - "@ai-sdk/provider-utils@2.2.8_zod@3.25.76": { - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", - "dependencies": [ - "@ai-sdk/provider", - "nanoid", - "secure-json-parse", - "zod" - ] - }, - "@ai-sdk/provider@1.1.3": { - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "dependencies": [ - "json-schema" - ] - }, - "@ai-sdk/react@1.2.12_react@19.1.0_zod@3.25.76": { - "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", - "dependencies": [ - "@ai-sdk/provider-utils", - "@ai-sdk/ui-utils", - "react", - "swr", - "throttleit", - "zod" - ], - "optionalPeers": [ - "zod" - ] - }, - "@ai-sdk/ui-utils@1.2.11_zod@3.25.76": { - "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", - "dependencies": [ - "@ai-sdk/provider", - "@ai-sdk/provider-utils", - "zod", - "zod-to-json-schema" - ] - }, - "@asteasolutions/zod-to-openapi@7.3.4_zod@3.25.76": { - "integrity": "sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==", - "dependencies": [ - "openapi3-ts", - "zod" - ] - }, - "@deno/darwin-arm64@2.6.7": { - "integrity": "sha512-MUfk9dJnqTHFcY5+mJ1UjlzebHCrk3ZaaEBmxMOQIqAohpyAB1ev3lKJDGLLKjmrQ3imLyGwuQnZoo0BB9zsfQ==", + "@deno/darwin-arm64@2.7.14": { + "integrity": "sha512-LqJb/Si7B2VoLkKu5uis1/GGJ8QDfa1ntDBEbPllEbVjtWoluQSS5DLlx0e2HJsGbbJ21JY3UHuDzOhzKRmA/w==", "os": ["darwin"], "cpu": ["arm64"] }, - "@deno/darwin-x64@2.6.7": { - "integrity": "sha512-lXz7EPao6YBXByQacI86ThthNqY3goTbBTpeVAImTj0RjT4KytkzY4bB6scK1fL735PX3GgPEqKQZSfMcS++cA==", + "@deno/darwin-x64@2.7.14": { + "integrity": "sha512-o3/0IHpprl1w1miO0r18GRW+S/prATbvnV/uEC7a2beniosy2HTOrfPDS837YtTaKdlRtDztoZ2xv84ncX3f/A==", "os": ["darwin"], "cpu": ["x64"] }, - "@deno/linux-arm64-glibc@2.6.7": { - "integrity": "sha512-yHRXLFuvwMpGJMShCMSfW92HbD98YBpvBNW5jRaRsoQ+S/uFKg5dxVd1Kr6LU4q3qTMOPOWq7UXcLojm5fRkLg==", + "@deno/linux-arm64-glibc@2.7.14": { + "integrity": "sha512-ZInk/3F8RPxYpSHt1UYdEbVvuv+C5SqY1uUsH3Ogj7tlvg3XdhzDMi0TEaKc1dBSFklcT4oDLSi/23PtNI6dtw==", "os": ["linux"], "cpu": ["arm64"] }, - "@deno/linux-x64-glibc@2.6.7": { - "integrity": "sha512-7BosIxq/gEwSz5pE22al5IlsynyKkGxaW1g6I0CQnoybxcUzR56Z9fPedU8btmcJLrHdwMHTibKfNBOVQl5CtA==", + "@deno/linux-x64-glibc@2.7.14": { + "integrity": "sha512-AU+e9UrCwnfA94Yr/UrAzp5ALCkJyihUPQ5jhrWn9DCSTr/ctI41TVs9P5fEsClRMIrKyJ/zTWJpuJxlzRNoTw==", "os": ["linux"], "cpu": ["x64"] }, - "@deno/win32-arm64@2.6.7": { - "integrity": "sha512-xXx3tdbgYGqUg+xWT1Me2rK8mq7h5QtwrC6BGdveuf/AP/hvcvPOOF7MV2VAY5bqnswL6oKQNPJ8almjyqmNwA==", + "@deno/win32-arm64@2.7.14": { + "integrity": "sha512-Ox6A54t/Qn9fxJyA/VBt4mNYIF4SWcWpPjlyc+7X0V1LBAxTjNc1G8S1X6yYo3XoCfNVRzTHmo6QSOjuTVDGZA==", "os": ["win32"], "cpu": ["arm64"] }, - "@deno/win32-x64@2.6.7": { - "integrity": "sha512-L5fDcySTZaLtokuX+ko9NdlrvetZBgRdbkmN1I7g70U+Giylm9bbDerYEm5L+WhMVB6tixZhnIbyw1odIwAwbg==", + "@deno/win32-x64@2.7.14": { + "integrity": "sha512-d+6u6H244ofKQN/ulUgse0e9qG7CAXrCdWP82JVPEecv2HRNBTAlWBmiXBbUT27oy8V3Nt+YexR9xE7qZ8Puvg==", "os": ["win32"], "cpu": ["x64"] }, - "@emnapi/core@1.9.0": { - "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", - "dependencies": [ - "@emnapi/wasi-threads", - "tslib" - ] - }, - "@emnapi/runtime@1.9.0": { - "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", - "dependencies": [ - "tslib" - ] - }, - "@emnapi/wasi-threads@1.2.0": { - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", - "dependencies": [ - "tslib" - ] - }, - "@hono/zod-openapi@0.19.10_hono@4.8.9_zod@3.25.76": { - "integrity": "sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==", - "dependencies": [ - "@asteasolutions/zod-to-openapi", - "@hono/zod-validator", - "hono", - "openapi3-ts", - "zod" - ] - }, - "@hono/zod-validator@0.7.2_hono@4.8.9_zod@3.25.76": { - "integrity": "sha512-ub5eL/NeZ4eLZawu78JpW/J+dugDAYhwqUIdp9KYScI6PZECij4Hx4UsrthlEUutqDDhPwRI0MscUfNkvn/mqQ==", + "@hono/node-server@1.19.14_hono@4.12.22": { + "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", "dependencies": [ - "hono", - "zod" + "hono" ] }, - "@jsep-plugin/assignment@1.3.0_jsep@1.4.0": { - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "dependencies": [ - "jsep" - ] - }, - "@jsep-plugin/regex@1.0.4_jsep@1.4.0": { - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "dependencies": [ - "jsep" - ] - }, - "@mcpc-tech/code-runner-mcp@0.1.8_zod@3.25.76_ajv@8.17.1": { - "integrity": "sha512-Cyg9eDJ28uLdk5WYHF8rnA2v/afXeKSHssMoSuFhpn4T38fVHHjwK7gRKdvSerU3iULeCKHsPATGnBlDMu4c8g==", - "dependencies": [ - "@hono/zod-openapi", - "@mcpc-tech/ripgrep-napi", - "@modelcontextprotocol/sdk", - "@segment/ajv-human-errors", - "ai", - "ajv@8.17.1", - "ajv-formats", - "cheerio", - "dayjs", - "deno", - "env-paths", - "json-schema-to-zod", - "json-schema-traverse@1.0.0", - "jsonrepair", - "minimist", - "pyodide", - "zod" - ], - "bin": true - }, "@mcpc-tech/handle-sandbox@0.0.11": { "integrity": "sha512-WNRK25xwWy6NvpCyLb4b5X3FgT37dbauXvpXDbNa1qtuhmtRIax10VA1FidJ+kFFjhUuthamyuxzD4CmTjr8iQ==", "dependencies": [ "deno" ] }, - "@mcpc-tech/ripgrep-napi-android-arm-eabi@0.0.4": { - "integrity": "sha512-Y52S9IdbqMYvet7hDGk/DRdKFM7ED6tSQmBtrWVzdeqVWPMayZvrKdlcceBykdKjbmgnlqtulzEtHBF2iXmXwA==", - "os": ["android"], - "cpu": ["arm"] - }, - "@mcpc-tech/ripgrep-napi-android-arm64@0.0.4": { - "integrity": "sha512-o9JkOf2yEnOSVlN9P6l4xg4KEkCIgbEXzxtXvXkL0845VyrB7CTSYyh5QoEJjnj8UyVK96UXk8DD+Oz1eQlZwg==", - "os": ["android"], - "cpu": ["arm64"] - }, - "@mcpc-tech/ripgrep-napi-darwin-arm64@0.0.4": { - "integrity": "sha512-iaunnV+oJll3l2FCT5+BnpvZF1qh8o0T1vphRqMxylD2UF9sXmMaUh2N03FiaTGany30wL/spuAxIa2PVdUsKA==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@mcpc-tech/ripgrep-napi-darwin-x64@0.0.4": { - "integrity": "sha512-F+C6BGYcd3cQK07gsxOAyMVDKxZ5gIGpF5CZkUt3E2GKVj4SRTS1O/UI3XxsSBaQVU5grptPuC7+lfmq8yRSAA==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@mcpc-tech/ripgrep-napi-freebsd-x64@0.0.4": { - "integrity": "sha512-7Mc5pAM8CmXA+EynB4fc13WBy6hoo1OJlfvoIeCB5X7nhm1u1hg77G9aGgwlyGlOM5GiRu4Q0QvQI3qdW41moQ==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "@mcpc-tech/ripgrep-napi-linux-arm-gnueabihf@0.0.4": { - "integrity": "sha512-YGBgKVr/XQtSHgit3p0bBHMdBsUF/XHPvanXWMnJQsyirioWTJ4VdC4v9l2EQZZaGk6F+7/h59cmVwde5t0Tyg==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@mcpc-tech/ripgrep-napi-linux-arm64-gnu@0.0.4": { - "integrity": "sha512-RgrfGBW32uWJ453jmMA6bxAvKy+vGfsM2uVrmLEk5zbFNc/AZV9Ux150biE5IygYPQRMLvJ9qMT95kuJN0hXOg==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@mcpc-tech/ripgrep-napi-linux-arm64-musl@0.0.4": { - "integrity": "sha512-oqgBXk0X54b7FwhSVhLk1QXIeFvOreITZBOLR6zr/GhJPIxfiDdR+OBgX1RWBSdwLY9lcLQZv2yxBEJvzLjxUA==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@mcpc-tech/ripgrep-napi-linux-x64-gnu@0.0.4": { - "integrity": "sha512-UtPO95bzT4h1SEItX+1o4ZwXBUHZWfubMoYIx2GgoAf2fj1CMF/Q6T/JVOr6rJnxyaXmuJCIYZUXSYoo2Y3Kkw==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@mcpc-tech/ripgrep-napi-linux-x64-musl@0.0.4": { - "integrity": "sha512-IEoR/IHv9WrGWJarlZrBI+xLCruE2HDM3nQRqyna2aTIH44pn8N5u94R1r7pm9yE9lYzXlIyw/ncMcQx3bfApQ==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@mcpc-tech/ripgrep-napi-wasm32-wasi@0.0.4": { - "integrity": "sha512-rzgA6q8JcNkLyfRxYD5ZyRop6W4FxGNd3VCaRhEqDEisxvEvQl0euGYDls2cgPq+DHI3CnA2Ocj+FW0nEkLUmA==", - "dependencies": [ - "@napi-rs/wasm-runtime" - ], - "cpu": ["wasm32"] - }, - "@mcpc-tech/ripgrep-napi-win32-arm64-msvc@0.0.4": { - "integrity": "sha512-aWqEQ8RdD9YIUY6gm2LQkAgtP5dVs++ZQGDIhBD/8LrDZ2tyqikxjtu7BKpSY/6RnU7rdTTNGsnG2mu/1cHTIQ==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "@mcpc-tech/ripgrep-napi-win32-ia32-msvc@0.0.4": { - "integrity": "sha512-aCUvmemTG7KBPOgi4xGJ6iZcjAKnoueiSImxrGP0O3EpN0hcPm9f7TTJ1WxsLicwJ/zM+KEEE3hx2P0ZOE1LIw==", - "os": ["win32"], - "cpu": ["ia32"] - }, - "@mcpc-tech/ripgrep-napi-win32-x64-msvc@0.0.4": { - "integrity": "sha512-INaAvZQXH91mjMZd7d5S0wnALSu5EeeFpek/5pvSizzvHB1SHdLUkROOFrBz861wB9rHsK7BD1Pm+MPSv4OpvQ==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@mcpc-tech/ripgrep-napi@0.0.4": { - "integrity": "sha512-Y90w5c19PKbvcEESbt1cV2FbcKKYFbWKJZ7i1ces1oosy/zyngYNtXnGIWeWOAGpNk00OWhItUcbBRtZkBE7YQ==", - "optionalDependencies": [ - "@mcpc-tech/ripgrep-napi-android-arm-eabi", - "@mcpc-tech/ripgrep-napi-android-arm64", - "@mcpc-tech/ripgrep-napi-darwin-arm64", - "@mcpc-tech/ripgrep-napi-darwin-x64", - "@mcpc-tech/ripgrep-napi-freebsd-x64", - "@mcpc-tech/ripgrep-napi-linux-arm-gnueabihf", - "@mcpc-tech/ripgrep-napi-linux-arm64-gnu", - "@mcpc-tech/ripgrep-napi-linux-arm64-musl", - "@mcpc-tech/ripgrep-napi-linux-x64-gnu", - "@mcpc-tech/ripgrep-napi-linux-x64-musl", - "@mcpc-tech/ripgrep-napi-wasm32-wasi", - "@mcpc-tech/ripgrep-napi-win32-arm64-msvc", - "@mcpc-tech/ripgrep-napi-win32-ia32-msvc", - "@mcpc-tech/ripgrep-napi-win32-x64-msvc" - ] - }, - "@modelcontextprotocol/sdk@1.17.0_express@5.1.0_zod@3.25.76": { - "integrity": "sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==", + "@modelcontextprotocol/sdk@1.29.0_zod@4.4.3": { + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", "dependencies": [ - "ajv@6.12.6", - "content-type", + "@hono/node-server", + "ajv", + "ajv-formats", + "content-type@1.0.5", "cors", "cross-spawn", "eventsource", "eventsource-parser", "express", "express-rate-limit", + "hono", + "jose", + "json-schema-typed", "pkce-challenge", "raw-body", "zod", "zod-to-json-schema" ] }, - "@napi-rs/wasm-runtime@1.1.1": { - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dependencies": [ - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util" - ] - }, - "@opentelemetry/api@1.9.0": { - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" - }, - "@segment/ajv-human-errors@2.15.0_ajv@8.17.1": { - "integrity": "sha512-tgeMMuYYJt3Aar5IIk3kyfL9zMvGsv5d7KsVT/2auri+hEH/L2M1i8X67ne4JjMWZqENYIGY1WuI4oPEL1H/xA==", - "dependencies": [ - "ajv@8.17.1" - ] - }, - "@tybys/wasm-util@0.10.1": { - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dependencies": [ - "tslib" - ] - }, - "@types/diff-match-patch@1.0.36": { - "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==" - }, "@types/emscripten@1.41.5": { "integrity": "sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==" }, - "@types/node@22.15.15": { - "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", - "dependencies": [ - "undici-types" - ] - }, "accepts@2.0.0": { "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dependencies": [ @@ -394,56 +101,28 @@ "negotiator" ] }, - "ai@4.3.19_zod@3.25.76": { - "integrity": "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==", - "dependencies": [ - "@ai-sdk/provider", - "@ai-sdk/provider-utils", - "@ai-sdk/react", - "@ai-sdk/ui-utils", - "@opentelemetry/api", - "jsondiffpatch", - "zod" - ] - }, - "ajv-formats@3.0.1_ajv@8.17.1": { + "ajv-formats@3.0.1_ajv@8.20.0": { "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dependencies": [ - "ajv@8.17.1" + "ajv" ], "optionalPeers": [ - "ajv@8.17.1" - ] - }, - "ajv@6.12.6": { - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": [ - "fast-deep-equal", - "fast-json-stable-stringify", - "json-schema-traverse@0.4.1", - "uri-js" + "ajv" ] }, - "ajv@8.17.1": { - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "ajv@8.20.0": { + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dependencies": [ "fast-deep-equal", "fast-uri", - "json-schema-traverse@1.0.0", + "json-schema-traverse", "require-from-string" ] }, - "argparse@1.0.10": { - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": [ - "sprintf-js" - ] - }, - "body-parser@2.2.0": { - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "body-parser@2.2.2": { + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dependencies": [ "bytes", - "content-type", "debug", "http-errors", "iconv-lite", @@ -453,9 +132,6 @@ "type-is" ] }, - "boolbase@1.0.0": { - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, "bytes@3.1.2": { "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, @@ -473,56 +149,23 @@ "get-intrinsic" ] }, - "call-me-maybe@1.0.2": { - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - }, - "chalk@5.4.1": { - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" - }, - "cheerio-select@2.1.0": { - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": [ - "boolbase", - "css-select", - "css-what", - "domelementtype", - "domhandler", - "domutils" - ] - }, - "cheerio@1.1.2": { - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", - "dependencies": [ - "cheerio-select", - "dom-serializer", - "domhandler", - "domutils", - "encoding-sniffer", - "htmlparser2", - "parse5", - "parse5-htmlparser2-tree-adapter", - "parse5-parser-stream", - "undici", - "whatwg-mimetype" - ] - }, - "content-disposition@1.0.0": { - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dependencies": [ - "safe-buffer" - ] + "content-disposition@1.1.0": { + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==" }, "content-type@1.0.5": { "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, + "content-type@2.0.0": { + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==" + }, "cookie-signature@1.2.2": { "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==" }, "cookie@0.7.2": { "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" }, - "cors@2.8.5": { - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "cors@2.8.6": { + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dependencies": [ "object-assign", "vary" @@ -536,30 +179,14 @@ "which" ] }, - "css-select@5.2.2": { - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dependencies": [ - "boolbase", - "css-what", - "domhandler", - "domutils", - "nth-check" - ] - }, - "css-what@6.2.2": { - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==" - }, - "dayjs@1.11.13": { - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" - }, - "debug@4.4.1": { - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "debug@4.4.3": { + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dependencies": [ "ms" ] }, - "deno@2.6.7": { - "integrity": "sha512-u01GyParfRPdO1re/usMH4rDr7qBPPVSxdcWUPKQmMpQQkfzF9xn56tqE2O2Kih2bois53Qq6nWeUbrkil+Y1A==", + "deno@2.7.14": { + "integrity": "sha512-bs9sM26x14FmH2B9BJyjSP3NpFDp7a9sOd+DcBL4+scik8PKdvTGf6WaecSHOi7Zm95/bygq3TRCV5gVHC/4SA==", "optionalDependencies": [ "@deno/darwin-arm64", "@deno/darwin-x64", @@ -574,37 +201,6 @@ "depd@2.0.0": { "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, - "dequal@2.0.3": { - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "diff-match-patch@1.0.5": { - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" - }, - "dom-serializer@2.0.0": { - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": [ - "domelementtype", - "domhandler", - "entities@4.5.0" - ] - }, - "domelementtype@2.3.0": { - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler@5.0.3": { - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": [ - "domelementtype" - ] - }, - "domutils@3.2.2": { - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dependencies": [ - "dom-serializer", - "domelementtype", - "domhandler" - ] - }, "dunder-proto@1.0.1": { "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dependencies": [ @@ -619,19 +215,6 @@ "encodeurl@2.0.0": { "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, - "encoding-sniffer@0.2.1": { - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "dependencies": [ - "iconv-lite", - "whatwg-encoding" - ] - }, - "entities@4.5.0": { - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" - }, - "entities@6.0.1": { - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==" - }, "env-paths@4.0.0": { "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "dependencies": [ @@ -653,15 +236,11 @@ "escape-html@1.0.3": { "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "esprima@4.0.1": { - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": true - }, "etag@1.8.1": { "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, - "eventsource-parser@3.0.3": { - "integrity": "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==" + "eventsource-parser@3.0.8": { + "integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==" }, "eventsource@3.0.7": { "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", @@ -669,22 +248,24 @@ "eventsource-parser" ] }, - "express-rate-limit@7.5.1_express@5.1.0": { - "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "express-rate-limit@8.5.2_express@5.2.1": { + "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", "dependencies": [ - "express" + "express", + "ip-address" ] }, - "express@5.1.0": { - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "express@5.2.1": { + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dependencies": [ "accepts", "body-parser", "content-disposition", - "content-type", + "content-type@1.0.5", "cookie", "cookie-signature", "debug", + "depd", "encodeurl", "escape-html", "etag", @@ -710,14 +291,11 @@ "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "fast-json-stable-stringify@2.1.0": { - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "fast-uri@3.1.2": { + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==" }, - "fast-uri@3.0.6": { - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==" - }, - "finalhandler@2.1.0": { - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "finalhandler@2.1.1": { + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dependencies": [ "debug", "encodeurl", @@ -727,9 +305,6 @@ "statuses" ] }, - "format-util@1.0.5": { - "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" - }, "forwarded@0.2.0": { "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, @@ -767,26 +342,17 @@ "has-symbols@1.1.0": { "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, - "hasown@2.0.2": { - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "hasown@2.0.3": { + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dependencies": [ "function-bind" ] }, - "hono@4.8.9": { - "integrity": "sha512-ERIxkXMRhUxGV7nS/Af52+j2KL60B1eg+k6cPtgzrGughS+espS9KQ7QO0SMnevtmRlBfAcN0mf1jKtO6j/doA==" + "hono@4.12.22": { + "integrity": "sha512-7fvVPbB92zNRsQke+uiRGwtTuef0tB2Dg4hWxYfFNvkQhIltWoyi0ONReM5LWA+jJWS3nfT5lTq+qbsIpX0IQw==" }, - "htmlparser2@10.0.0": { - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "dependencies": [ - "domelementtype", - "domhandler", - "domutils", - "entities@6.0.1" - ] - }, - "http-errors@2.0.0": { - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "http-errors@2.0.1": { + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dependencies": [ "depd", "inherits", @@ -795,8 +361,8 @@ "toidentifier" ] }, - "iconv-lite@0.6.3": { - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "iconv-lite@0.7.2": { + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dependencies": [ "safer-buffer" ] @@ -804,6 +370,9 @@ "inherits@2.0.4": { "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ip-address@10.2.0": { + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==" + }, "ipaddr.js@1.9.1": { "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, @@ -816,68 +385,18 @@ "isexe@2.0.0": { "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "js-yaml@3.14.1": { - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": [ - "argparse", - "esprima" - ], - "bin": true - }, - "jsep@1.4.0": { - "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==" + "jose@6.2.3": { + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==" }, - "json-schema-faker@0.5.9": { - "integrity": "sha512-fNKLHgDvfGNNTX1zqIjqFMJjCLzJ2kvnJ831x4aqkAoeE4jE2TxvpJdhOnk3JU3s42vFzmXvkpbYzH5H3ncAzg==", - "dependencies": [ - "json-schema-ref-parser", - "jsonpath-plus" - ], + "json-schema-to-zod@2.8.1": { + "integrity": "sha512-fRr1mHgZ7hboLKBUdR428gd9dIHUFGivUqOeiDcSmyXkNZCtB1uGaZLvsjZ4GaN5pwBIs+TGIOf6s+Rp5/R/zA==", "bin": true }, - "json-schema-ref-parser@6.1.0": { - "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", - "dependencies": [ - "call-me-maybe", - "js-yaml", - "ono" - ], - "deprecated": true - }, - "json-schema-to-zod@2.6.1": { - "integrity": "sha512-uiHmWH21h9FjKJkRBntfVGTLpYlCZ1n98D0izIlByqQLqpmkQpNTBtfbdP04Na6+43lgsvrShFh2uWLkQDKJuQ==", - "bin": true - }, - "json-schema-traverse@0.4.1": { - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "json-schema-traverse@1.0.0": { "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "json-schema@0.4.0": { - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "jsondiffpatch@0.6.0": { - "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", - "dependencies": [ - "@types/diff-match-patch", - "chalk", - "diff-match-patch" - ], - "bin": true - }, - "jsonpath-plus@10.3.0_jsep@1.4.0": { - "integrity": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==", - "dependencies": [ - "@jsep-plugin/assignment", - "@jsep-plugin/regex", - "jsep" - ], - "bin": true - }, - "jsonrepair@3.13.0": { - "integrity": "sha512-5YRzlAQ7tuzV1nAJu3LvDlrKtBFIALHN2+a+I1MGJCt3ldRDBF/bZuvIPzae8Epot6KBXd0awRZZcuoeAsZ/mw==", - "bin": true + "json-schema-typed@8.0.2": { + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==" }, "math-intrinsics@1.1.0": { "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" @@ -891,31 +410,18 @@ "mime-db@1.54.0": { "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" }, - "mime-types@3.0.1": { - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "mime-types@3.0.2": { + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dependencies": [ "mime-db" ] }, - "minimist@1.2.8": { - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, "ms@2.1.3": { "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "nanoid@3.3.11": { - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "bin": true - }, "negotiator@1.0.0": { "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" }, - "nth-check@2.1.1": { - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": [ - "boolbase" - ] - }, "object-assign@4.1.1": { "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, @@ -934,48 +440,17 @@ "wrappy" ] }, - "ono@4.0.11": { - "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", - "dependencies": [ - "format-util" - ] - }, - "openapi3-ts@4.5.0": { - "integrity": "sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==", - "dependencies": [ - "yaml" - ] - }, - "parse5-htmlparser2-tree-adapter@7.1.0": { - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "dependencies": [ - "domhandler", - "parse5" - ] - }, - "parse5-parser-stream@7.1.2": { - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "dependencies": [ - "parse5" - ] - }, - "parse5@7.3.0": { - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dependencies": [ - "entities@6.0.1" - ] - }, "parseurl@1.3.3": { "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "path-key@3.1.1": { "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, - "path-to-regexp@8.2.0": { - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==" + "path-to-regexp@8.4.2": { + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==" }, - "pkce-challenge@5.0.0": { - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==" + "pkce-challenge@5.0.1": { + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==" }, "proxy-addr@2.0.7": { "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", @@ -984,18 +459,15 @@ "ipaddr.js" ] }, - "punycode@2.3.1": { - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" - }, - "pyodide@0.29.3": { - "integrity": "sha512-22UBuhOJawj7vKUnS7/F3xK+515LJdjiMAHoCfuS6/PbHiOrSQVnYwDe+2sbVwiOZ3sMMexdXICew6NqOMQGgA==", + "pyodide@0.29.4": { + "integrity": "sha512-tCseTsqU3kSxZIjkue5zXxTMNEwrKZwOIIEQRBA/VzHxFN1hoCxe4w41phfCdHd9it9RcCNQb5K/Re0InqMgvA==", "dependencies": [ "@types/emscripten", "ws" ] }, - "qs@6.14.0": { - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "qs@6.15.2": { + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "dependencies": [ "side-channel" ] @@ -1003,8 +475,8 @@ "range-parser@1.2.1": { "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "raw-body@3.0.0": { - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "raw-body@3.0.2": { + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dependencies": [ "bytes", "http-errors", @@ -1012,9 +484,6 @@ "unpipe" ] }, - "react@19.1.0": { - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==" - }, "require-from-string@2.0.2": { "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, @@ -1028,17 +497,11 @@ "path-to-regexp" ] }, - "safe-buffer@5.2.1": { - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, "safer-buffer@2.1.2": { "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "secure-json-parse@2.7.0": { - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" - }, - "send@1.2.0": { - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "send@1.2.1": { + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dependencies": [ "debug", "encodeurl", @@ -1053,8 +516,8 @@ "statuses" ] }, - "serve-static@2.2.0": { - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "serve-static@2.2.1": { + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dependencies": [ "encodeurl", "escape-html", @@ -1074,8 +537,8 @@ "shebang-regex@3.0.0": { "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "side-channel-list@1.0.0": { - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "side-channel-list@1.0.1": { + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dependencies": [ "es-errors", "object-inspect" @@ -1110,71 +573,26 @@ "side-channel-weakmap" ] }, - "sprintf-js@1.0.3": { - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "statuses@2.0.1": { - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "swr@2.3.4_react@19.1.0": { - "integrity": "sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==", - "dependencies": [ - "dequal", - "react", - "use-sync-external-store" - ] - }, - "throttleit@2.1.0": { - "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==" + "statuses@2.0.2": { + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" }, "toidentifier@1.0.1": { "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, - "tslib@2.8.1": { - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "type-is@2.0.1": { - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "type-is@2.1.0": { + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "dependencies": [ - "content-type", + "content-type@2.0.0", "media-typer", "mime-types" ] }, - "undici-types@6.21.0": { - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" - }, - "undici@7.12.0": { - "integrity": "sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==" - }, "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "uri-js@4.4.1": { - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": [ - "punycode" - ] - }, - "use-sync-external-store@1.5.0_react@19.1.0": { - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "dependencies": [ - "react" - ] - }, "vary@1.1.2": { "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, - "whatwg-encoding@3.1.1": { - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dependencies": [ - "iconv-lite" - ], - "deprecated": true - }, - "whatwg-mimetype@4.0.0": { - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" - }, "which@2.0.2": { "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": [ @@ -1185,35 +603,29 @@ "wrappy@1.0.2": { "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "ws@8.19.0": { - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==" - }, - "yaml@2.8.0": { - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", - "bin": true + "ws@8.20.1": { + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==" }, - "zod-to-json-schema@3.24.6_zod@3.25.76": { - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "zod-to-json-schema@3.25.2_zod@4.4.3": { + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", "dependencies": [ "zod" ] }, - "zod@3.25.76": { - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==" + "zod@4.4.3": { + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==" } }, "workspace": { "dependencies": [ - "jsr:@mcpc/core@0.1", "jsr:@std/cli@1", - "npm:@hono/zod-openapi@~0.19.2", "npm:@mcpc-tech/handle-sandbox@^0.0.11", - "npm:@modelcontextprotocol/sdk@^1.8.0", + "npm:@modelcontextprotocol/sdk@^1.29.0", "npm:deno@^2.6.7", "npm:env-paths@4", "npm:json-schema-to-zod@^2.6.1", "npm:pyodide@0.29", - "npm:zod@^3.24.2" + "npm:zod@4" ] } } diff --git a/src/app.ts b/src/app.ts index 75cac06..dcd91f5 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,5 +1,3 @@ -import { OpenAPIHono } from "@hono/zod-openapi"; -import { registerAgent } from "./controllers/register.ts"; import { setUpMcpServer } from "./set-up-mcp.ts"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -10,12 +8,3 @@ export const server: McpServer = setUpMcpServer( }, { capabilities: { tools: {} } }, ); - -export const createApp: () => OpenAPIHono = () => { - const app = new OpenAPIHono(); - - // Register routes - registerAgent(app); - - return app; -}; diff --git a/src/controllers/messages.controller.ts b/src/controllers/messages.controller.ts deleted file mode 100644 index 92c205d..0000000 --- a/src/controllers/messages.controller.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { createRoute, type OpenAPIHono } from "@hono/zod-openapi"; -import type { ErrorSchema as _ErrorSchema } from "@mcpc/core"; -import { handleIncoming } from "@mcpc/core"; -import { z } from "zod"; - -export const messageHandler = (app: OpenAPIHono) => - app.openapi( - createRoute({ - method: "post", - path: `/messages`, - responses: { - 200: { - content: { - "text/event-stream": { - schema: z.any(), - }, - }, - description: "Returns the processed message", - }, - 400: { - content: { - "application/json": { - schema: z.any(), - }, - }, - description: "Returns an error", - }, - }, - }), - async (c) => { - const response = await handleIncoming(c.req.raw); - return response; - }, - (result, c) => { - if (!result.success) { - return c.json( - { - code: 400, - message: result.error.message, - }, - 400, - ); - } - }, - ); diff --git a/src/controllers/register.ts b/src/controllers/register.ts deleted file mode 100644 index 76baa84..0000000 --- a/src/controllers/register.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { OpenAPIHono } from "@hono/zod-openapi"; -import { messageHandler } from "./messages.controller.ts"; -import { sseHandler } from "./sse.controller.ts"; - -import { openApiDocsHandler } from "@mcpc/core"; - -export const registerAgent = (app: OpenAPIHono) => { - messageHandler(app); - sseHandler(app); - openApiDocsHandler(app); -}; diff --git a/src/controllers/sse.controller.ts b/src/controllers/sse.controller.ts deleted file mode 100644 index 204332d..0000000 --- a/src/controllers/sse.controller.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { createRoute, type OpenAPIHono, z } from "@hono/zod-openapi"; -import type { ErrorSchema as _ErrorSchema } from "@mcpc/core"; -import { handleConnecting } from "@mcpc/core"; -import { server } from "../app.ts"; -import { INCOMING_MSG_ROUTE_PATH } from "../set-up-mcp.ts"; - -export const sseHandler = (app: OpenAPIHono) => - app.openapi( - createRoute({ - method: "get", - path: "/sse", - responses: { - 200: { - content: { - "text/event-stream": { - schema: z.any(), - }, - }, - description: "Returns the processed message", - }, - 400: { - content: { - "application/json": { - schema: z.any(), - }, - }, - description: "Returns an error", - }, - }, - }), - async (c) => { - const response = await handleConnecting( - c.req.raw, - server, - INCOMING_MSG_ROUTE_PATH, - ); - return response; - }, - (result, c) => { - if (!result.success) { - return c.json( - { - code: 400, - message: result.error.message, - }, - 400, - ); - } - }, - ); diff --git a/src/server.ts b/src/server.ts deleted file mode 100644 index 532d068..0000000 --- a/src/server.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { OpenAPIHono } from "@hono/zod-openapi"; -import { createApp } from "./app.ts"; -import process from "node:process"; - -const port = Number(process.env.PORT || 9000); -const hostname = "0.0.0.0"; - -const app = new OpenAPIHono(); - -app.route("code-runner", createApp()); - -Deno.serve( - { - port, - hostname, - }, - app.fetch, -); diff --git a/src/set-up-mcp.ts b/src/set-up-mcp.ts index 0c163bd..69922b7 100644 --- a/src/set-up-mcp.ts +++ b/src/set-up-mcp.ts @@ -22,21 +22,26 @@ export function setUpMcpServer( const server = new McpServer(...args); if (shouldEnableTool("python", allowedTools)) { - server.tool( + server.registerTool( "python-code-runner", - getPythonPrompt(nodeFSRoot, nodeFSMountPoint), - z.object({ - code: z.string().describe( - "Python code to execute. MUST use print() to see results.", - ), - packages: z - .record(z.string(), z.string()) - .optional() - .describe( - 'Map import names to PyPI package names. Use when names differ or for indirectly imported packages. Example: {"sklearn": "scikit-learn", "openpyxl": "openpyxl"}', + { + description: getPythonPrompt(nodeFSRoot, nodeFSMountPoint), + inputSchema: z.object({ + code: z.string().describe( + "Python code to execute. MUST use print() to see results.", ), - }).shape, - async ({ code, packages }, extra) => { + packages: z + .record(z.string(), z.string()) + .optional() + .describe( + 'Map import names to PyPI package names. Use when names differ or for indirectly imported packages. Example: {"sklearn": "scikit-learn", "openpyxl": "openpyxl"}', + ), + }), + }, + async ( + { code, packages }: { code: string; packages?: Record }, + extra: { signal: AbortSignal }, + ) => { const options = nodeFSRoot ? { nodeFSRoot, @@ -54,22 +59,27 @@ export function setUpMcpServer( output += decoder.decode(chunk); } return { - content: [{ type: "text", text: output || "(no output)" }], + content: [{ type: "text" as const, text: output || "(no output)" }], }; }, ); } if (shouldEnableTool("javascript", allowedTools)) { - server.tool( + server.registerTool( "javascript-code-runner", - getJavaScriptPrompt(jsCwd, denoPermissionArgs), - z.object({ - code: z.string().describe( - "JavaScript/TypeScript code to execute. MUST use console.log() to see results.", - ), - }).shape, - async ({ code }, extra) => { + { + description: getJavaScriptPrompt(jsCwd, denoPermissionArgs), + inputSchema: z.object({ + code: z.string().describe( + "JavaScript/TypeScript code to execute. MUST use console.log() to see results.", + ), + }), + }, + async ( + { code }: { code: string }, + extra: { signal: AbortSignal }, + ) => { const stream = await runJS(code, extra.signal); const decoder = new TextDecoder(); let output = ""; @@ -79,7 +89,7 @@ export function setUpMcpServer( const finalOutput = output || "(no output)\n\n**Tip:** Use `console.log()` to see results. Make sure to write output to stdout."; return { - content: [{ type: "text", text: finalOutput }], + content: [{ type: "text" as const, text: finalOutput }], }; }, ); From 907b92d1c311a8cbd26bc8dd96526ffabce916e5 Mon Sep 17 00:00:00 2001 From: yao <63141491+yaonyan@users.noreply.github.com> Date: Fri, 22 May 2026 21:46:34 +0800 Subject: [PATCH 2/2] fix: use ReturnType for cross-runtime compat Co-Authored-By: Claude Sonnet 4.6 --- tests/setup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/setup.ts b/tests/setup.ts index e7a6a8c..c9520e3 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -39,7 +39,7 @@ export function readStreamWithTimeout( stream: ReadableStream, timeoutMs: number = 5000, ): Promise { - let timeoutId: number; + let timeoutId: ReturnType; const timeoutPromise = new Promise((_, reject) => { timeoutId = setTimeout(