From 94e3f4f54e938df91addec866f0b63ae15ffe345 Mon Sep 17 00:00:00 2001 From: Edward Irby Date: Thu, 20 Aug 2026 14:01:48 -0700 Subject: [PATCH 1/2] feat: migrate to MCP SDK v2, add you-answer tool, and bump deps Migrate all packages from the @modelcontextprotocol/sdk monolith to the v2 split packages (@modelcontextprotocol/client and @modelcontextprotocol/server): - mcp: client + server (stdio bridge) - cli: client; server added as dev dep for the test MCP mock - api: client (dep) + server (dev, test mocks); build externalizes the client - scripts: update-api-schemas and classify-api-schema-change use the v2 client - ai-sdk-plugin: drop the vestigial SDK dep (its @ai-sdk/mcp adapter is SDK-free) - langchain: drop the direct SDK dep; @langchain/mcp-adapters resolves its own v1 Remove the unused @modelcontextprotocol/inspector dev dep, its inspector script, and the mcp-inspector.json config from the mcp package. Add the you-answer tool to the consumer surface: - CLI contract regenerated to 7 tools (surfaceVersion 2026.08.20); you-eco stays excluded, you-finance remains opt-in via ?tools= - API typed surface expanded to all 7 known tools; the schema generator now fetches via ?tools= so you-finance is included, and createYouApi defaults a no-scope connection to advertising every known tool (imperative use) so the typed surface is truthful - Fix the schema generator's objectSchemaToType to union the additionalProperties type with explicit property types so primitives stay assignable to the index signature (you-discover's referrals) Bump deps: @ai-sdk/mcp ^2, ai peer/dev ^7, @ai-sdk/anthropic ^4 (ai-sdk-plugin); @langchain/* and langchain minor bumps; zod and @biomejs/biome minor bumps. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- bun.lock | 410 ++------ docs/PERFORMANCE.md | 2 +- package.json | 6 +- packages/ai-sdk-plugin/README.md | 8 +- packages/ai-sdk-plugin/package.json | 9 +- packages/api/README.md | 7 + packages/api/package.json | 5 +- packages/api/src/main.ts | 28 +- packages/api/src/tests/main.spec.ts | 134 ++- packages/api/src/tool-schemas.ts | 980 ++++++++++++++++++-- packages/cli/package.json | 5 +- packages/cli/src/cli.ts | 3 +- packages/cli/src/tests/cli.spec.ts | 6 +- packages/cli/src/tests/mcp-fetch.preload.ts | 117 +-- packages/cli/src/tools.ts | 7 +- packages/langchain/README.md | 8 +- packages/langchain/package.json | 11 +- packages/mcp/README.md | 4 +- packages/mcp/mcp-inspector.json | 8 - packages/mcp/package.json | 5 +- packages/mcp/src/bridge.ts | 2 +- packages/mcp/src/stdio-bridge.ts | 4 +- packages/mcp/src/tests/bridge.spec.ts | 5 +- scripts/classify-api-schema-change.ts | 3 +- scripts/tests/update-api-schemas.spec.ts | 18 + scripts/update-api-schemas.ts | 38 +- 26 files changed, 1200 insertions(+), 633 deletions(-) delete mode 100644 packages/mcp/mcp-inspector.json diff --git a/bun.lock b/bun.lock index 8557e97..e7f8d07 100644 --- a/bun.lock +++ b/bun.lock @@ -5,41 +5,41 @@ "": { "name": "dx-toolkit", "devDependencies": { - "@biomejs/biome": "2.5.4", + "@biomejs/biome": "2.5.9", "@commitlint/cli": "^21.2.1", "@commitlint/config-conventional": "^21.2.0", - "@modelcontextprotocol/sdk": "^1.29.0", + "@modelcontextprotocol/client": "^2.0.0", "@types/bun": "latest", "format-package": "^8.0.0", "lint-staged": "^17.1.0", "typescript": "7.0.2", "typescript-language-server": "5.3.0", - "zod": "^4.3.6", + "zod": "^4.4.3", }, }, "packages/ai-sdk-plugin": { "name": "@youdotcom-oss/ai-sdk-plugin", "version": "3.0.1", "dependencies": { - "@ai-sdk/mcp": "^1.0.42", - "@modelcontextprotocol/sdk": "^1.29.0", + "@ai-sdk/mcp": "^2.0.34", }, "devDependencies": { - "@ai-sdk/anthropic": "^3.0.71", + "@ai-sdk/anthropic": "^4.0.40", "@types/bun": "latest", - "ai": "^6.0.168", + "ai": "^7.0.70", }, "peerDependencies": { - "ai": "^6.0.168", + "ai": "^7.0.0", }, }, "packages/api": { "name": "@youdotcom-oss/api", "version": "0.6.0", "dependencies": { - "@modelcontextprotocol/sdk": "^1.29.0", + "@modelcontextprotocol/client": "^2.0.0", }, "devDependencies": { + "@modelcontextprotocol/server": "^2.0.0", "@types/bun": "latest", }, }, @@ -50,22 +50,24 @@ "ydc": "bin/cli.js", }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.29.0", + "@modelcontextprotocol/client": "^2.0.0", + }, + "devDependencies": { + "@modelcontextprotocol/server": "^2.0.0", }, }, "packages/langchain": { "name": "@youdotcom-oss/langchain", "version": "2.0.1", "dependencies": { - "@langchain/mcp-adapters": "^1.1.3", - "@modelcontextprotocol/sdk": "^1.29.0", + "@langchain/mcp-adapters": "^1.1.4", }, "devDependencies": { - "@langchain/anthropic": "^1.0.0", - "@langchain/core": "^1.1.26", - "@langchain/langgraph": "^1.2.1", + "@langchain/anthropic": "^1.5.7", + "@langchain/core": "^1.2.9", + "@langchain/langgraph": "^1.4.12", "@types/bun": "latest", - "langchain": "^1.2.24", + "langchain": "^1.5.10", }, "peerDependencies": { "langchain": ">=1.0.0", @@ -76,26 +78,26 @@ "version": "3.5.0", "bin": "bin/stdio.js", "dependencies": { - "@modelcontextprotocol/sdk": "^1.28.0", + "@modelcontextprotocol/client": "^2.0.0", + "@modelcontextprotocol/server": "^2.0.0", }, "devDependencies": { - "@modelcontextprotocol/inspector": "0.21.2", "@types/bun": "latest", }, }, }, "packages": { - "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.100", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/o2a3zVPdwRGSHYgssZ6Xec0vdhlgzMpm/T6JmifApVc5j6JmMChtV+sZ3omUqCFmHxfPzHvvNumplDFh3zrmw=="], + "@ai-sdk/anthropic": ["@ai-sdk/anthropic@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "4.0.7", "@ai-sdk/provider-utils": "5.0.28" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cFlCZspCUC1LGDipARsKx3+4A8c9qI+vFuG0/04Phs0deKwifNsl8wDmcU2HO31aiNR9AJgEBcvg5S00zUS70g=="], - "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.156", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OeOfIlbp8DwlqBHDe3IbfAF6zRdKQg041UYaTz5gRFUwthZQXLCH5HK8JE0XCfhQFg92cGsQucOuXld+VFOhXQ=="], + "@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.56", "", { "dependencies": { "@ai-sdk/provider": "4.0.7", "@ai-sdk/provider-utils": "5.0.28", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-fc7tq+v7WrzCV+aXegbq/EOs68tFDJYLEwnCOnVYcB/Y5ZTjUIHzyJlrqdoJUlMTkc/qmKsXb1ovVvdUYPmxIA=="], - "@ai-sdk/mcp": ["@ai-sdk/mcp@1.0.64", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40", "pkce-challenge": "^5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-n6fZiIsiK0TWdJa7bdcjiQxOmg+GRa1wk8ns01gfzaiZbnNwIjmgt1oFMDIzLzgOjVq/LqktbXfxvBFlQ8RDnQ=="], + "@ai-sdk/mcp": ["@ai-sdk/mcp@2.0.34", "", { "dependencies": { "@ai-sdk/provider": "4.0.7", "@ai-sdk/provider-utils": "5.0.28", "pkce-challenge": "^5.0.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-JejeZFNplIAQpxI7F6FmE8y68kzcryJ+shmJl3hoj9DO/+ds7G/tIfGJvDEwzKhCZTZlWq5ra+MPrThx02YsGA=="], - "@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], + "@ai-sdk/provider": ["@ai-sdk/provider@4.0.7", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-6or44XprPzKbr8zkmzosowSE0pxkvJcoojBL+mCZvPUt3kvXp3XSNqeVun9golb1acEfSo6yaEBRT18h2VU+1Q=="], - "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OL5IrpUm9Y8Dwy+w/vvFwPotS6m52O9W0op2oXgXdCROMJIBalBI0oro6OIBYkPxvm5Xg02GSkoQN25RlR0bnw=="], + "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@5.0.28", "", { "dependencies": { "@ai-sdk/provider": "4.0.7", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8", "undici": "^7.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-TnHUyd/rCYQqHg5RuiOaz/hUql6U+kbUaBW0Rp+0N5UhnAInA9CzzV0HXvuAAPwppDsK6fAx9Rd+tRawpJ/3pg=="], - "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.103.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-1uG7RNgoHTUxzOXqSCODKt0UTVlxWiHk/2Tt2/uQJiPW7XzBeKVuJyd3Aw6T3LPyvZV/jDTnPLX7SaM70WLLjA=="], + "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.115.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-BJrFIVyjNuU8lfDyIJTvlRYzgQg+zEl78BxE7fq8esULsGz9IRQvGtW5spq3tydmtjQb/GFdooKGdGsetpx+lQ=="], "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], @@ -103,23 +105,23 @@ "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], - "@biomejs/biome": ["@biomejs/biome@2.5.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.5.4", "@biomejs/cli-darwin-x64": "2.5.4", "@biomejs/cli-linux-arm64": "2.5.4", "@biomejs/cli-linux-arm64-musl": "2.5.4", "@biomejs/cli-linux-x64": "2.5.4", "@biomejs/cli-linux-x64-musl": "2.5.4", "@biomejs/cli-win32-arm64": "2.5.4", "@biomejs/cli-win32-x64": "2.5.4" }, "bin": { "biome": "bin/biome" } }, "sha512-xy5FNE5kQJKyK5MR1gJy6ztXYx4WBAbYGlK04lMEgmyPRWKybY9NFwiG9yo0XdzOU8Xvhj41u034J1ywfoWfMw=="], + "@biomejs/biome": ["@biomejs/biome@2.5.9", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.5.9", "@biomejs/cli-darwin-x64": "2.5.9", "@biomejs/cli-linux-arm64": "2.5.9", "@biomejs/cli-linux-arm64-musl": "2.5.9", "@biomejs/cli-linux-x64": "2.5.9", "@biomejs/cli-linux-x64-musl": "2.5.9", "@biomejs/cli-win32-arm64": "2.5.9", "@biomejs/cli-win32-x64": "2.5.9" }, "bin": { "biome": "bin/biome" } }, "sha512-KkgCvdHB4IhtpHpF564plA9jo6fDOwWGQ/3jvreLzgOtRLEDoPqr7QO9qejNA8jKwDsSkAKr77hqBHnyUbIw4g=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.5.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4o3NFRobXHynkgcFVrlZsoDAFtF2ldlEGN8sORSws5ZQqyY4PXnPUIylu4ksfyHuwkfvDREuWh3JK+niRwGq3w=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.5.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-am22pX2aBqznqq1eMyIj/bZ++riF3Lk6ct7cbv+gQK0csFhr+d8O0RkOi2FF2qSgFgANbqNkIZ0/PxlnW2pLFg=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.5.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-D32P5HkU2Y6PySuC/WsVDTOgsDwVFmujzhhhOQjajtATpVWFDXuVd3oRbsWNSEA+aaFzyzZm22szsyydBYlSyQ=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.5.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-l44KWDHLDvEnD0N/XcrVs7VXb3A18xL7QS3WB0eL93wbmk529ffIG55vleGCqaunpRUjLrdnjK05Qki1dsjylg=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.5.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-pSEfW7B8kTsXUjUxC1xVVK+y85Ht3C5XxZ9gclmC7/3Ku9Vqz8jmI7k0p/BNIjQ6t4sFERI2sFeH73ybiZl6YQ=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.5.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-ICaK+IYaVZvKbBxX2rwrPT0DdUDMnE9Vm3nQGe+mltQPmUg19pONzkPWGdY4FCsoreDETWDynvdt4ysCbF5gNQ=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.5.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-Rpm5/AT1m+DlJmUoYvS4/vXc+0tXJPJ2NQz25TGPyHVF5JrWy75PE0GH6kVxsKtQDuCH4OgzquZq0R4kj/wCVg=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.5.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-7ImVPwBLCtkmpR5esd8RHhTqW94f0JLJQum6AneYcy94jRm18TaPPm7slaigGzFhfgt3QiD1Vj52LKmBAnKizA=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.5.4", "", { "os": "linux", "cpu": "x64" }, "sha512-FNxojWJkL7EajAuzBgoLe0T2G0y112M4lBrDIFl/DomFTx8yqenYOIdsRLNXvOvBBofE8hJi85LjzLmBDpY7/Q=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.5.9", "", { "os": "linux", "cpu": "x64" }, "sha512-z22Q/zFYSvbIJfW1CbfZPu4X8PddS6Qd2ORbc6h+aT6EcwAxUF3m6fA4HjNvA3TU4X0dTJRwNPB165ES3PJXzg=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.5.4", "", { "os": "linux", "cpu": "x64" }, "sha512-aby/PohmmgbShcHqFsZVzG8H6D98+P+A6xRWRrQcLW1pCjabcov5UUlke4UqNQBYTkDQav+jB4zyyDDeKB2GaA=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.5.9", "", { "os": "linux", "cpu": "x64" }, "sha512-RXGaD0o1/pTTguYw1aeDJh9ad6Lfrui0fI7mBderTyGr7WuUJkBIttgLkR3XJyoxOkkgfBDspaUT8wXArTqLZw=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.5.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-emoXexPZIPAZkz2RKmA95WJUqK3I5MJNYtwEbL5ESciRzhmFMMyekDhNG8hpeOaK+ZGRDxAU4wvGuA5IHQ0h0w=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.5.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-nHK+/HHC+D0ogAHUxomgoSTdjImb6fmNNVTKmf0tyu4eDL1DqPKIHc+i+UL8+b0RnAu8224qo8F2tCVnaT0A3w=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.5.4", "", { "os": "win32", "cpu": "x64" }, "sha512-U1jaluLw1qQc2Tx7/CeSoL9N5XcqIH+GWjpUAy1ouB5nVjSCMNO+NNHdY3RAs8zxNurLWAdj6pehQdCA2zyU+Q=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.5.9", "", { "os": "win32", "cpu": "x64" }, "sha512-Yiq0H56LjXSSw/hd9YkXgSLQfzyDJzbzU2TezozxyNw+uKWAqOtqGVvBfzKRRDiaFF5avGAhHdWKx7LtDOShUw=="], "@cfworker/json-schema": ["@cfworker/json-schema@4.1.1", "", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="], @@ -161,16 +163,6 @@ "@conventional-changelog/template": ["@conventional-changelog/template@1.2.1", "", {}, "sha512-TzlTVpKPjaqW6qOYjQcYUDuGsLCNsvFHVBXkYGTAnf5V37jCWrE5haKNXzz0WZUtVHjrpV76L1buANjwXMfT8w=="], - "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], - - "@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], - - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.9", "", { "dependencies": { "@floating-ui/dom": "^1.8.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg=="], - - "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], - "@hapi/address": ["@hapi/address@5.1.1", "", { "dependencies": { "@hapi/hoek": "^11.0.2" } }, "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA=="], "@hapi/formula": ["@hapi/formula@3.0.2", "", {}, "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw=="], @@ -185,116 +177,30 @@ "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], - - "@langchain/anthropic": ["@langchain/anthropic@1.5.1", "", { "dependencies": { "@anthropic-ai/sdk": "^0.103.0", "zod": "^3.25.76 || ^4" }, "peerDependencies": { "@langchain/core": "^1.2.1" } }, "sha512-j92zCCd5BFH3rHMRzc2wBmSKDoVpinof1oh8aFiAz9TWbSOc4tGU4n6bqwy/wP0GH1uO96zZHLGCHBMPgrxTNw=="], + "@langchain/anthropic": ["@langchain/anthropic@1.5.8", "", { "dependencies": { "@anthropic-ai/sdk": "^0.115.0", "zod": "^3.25.76 || ^4" }, "peerDependencies": { "@langchain/core": "^1.2.9" } }, "sha512-KZWgIf+04M9XZHhgH1rVJkqw/C26DM4a4jKk4Qc4HaSbRawN2Dw5nDffna+IoaU/50ohTdyB3HOz9g8XFQYF2A=="], - "@langchain/core": ["@langchain/core@1.2.3", "", { "dependencies": { "@cfworker/json-schema": "^4.0.2", "@standard-schema/spec": "^1.1.0", "js-tiktoken": "^1.0.12", "langsmith": ">=0.5.0 <1.0.0", "mustache": "^4.2.0", "p-queue": "^6.6.2", "zod": "^3.25.76 || ^4" } }, "sha512-F+L5SsciykwDl7eDxacnhDTcWe1IF6jetzfkvI5PPfq6ogWHO7xcjU90SGh/3lqbbS0tgun+qF01KIqxawrCsA=="], + "@langchain/core": ["@langchain/core@1.2.9", "", { "dependencies": { "@cfworker/json-schema": "^4.0.2", "@standard-schema/spec": "^1.1.0", "js-tiktoken": "^1.0.12", "langsmith": ">=0.5.0 <1.0.0", "mustache": "^4.2.0", "p-queue": "^6.6.2", "zod": "^3.25.76 || ^4" } }, "sha512-conzSEj9Zu1AyXJLXsSbgrtxtxinmI1yGqQ5CIJZSoV5rvv+yvQE/vgBnoySpBQ/bl3YPgj2FL/gbDjWykLSfg=="], - "@langchain/langgraph": ["@langchain/langgraph@1.4.8", "", { "dependencies": { "@langchain/langgraph-checkpoint": "^1.1.3", "@langchain/langgraph-sdk": "~1.9.26", "@langchain/protocol": "^0.0.18", "@standard-schema/spec": "1.1.0" }, "peerDependencies": { "@langchain/core": "^1.1.48", "zod": "^3.25.32 || ^4.2.0" } }, "sha512-DN1Np1XefdBEbp1qBKlt39cwoL743AAGpR5Ipja0gY2YbWvsoQnOTIrjnj/orSAhaUYsdTKS8VSWdFzsHZo6Ig=="], + "@langchain/langgraph": ["@langchain/langgraph@1.4.12", "", { "dependencies": { "@langchain/langgraph-checkpoint": "^1.1.5", "@langchain/langgraph-sdk": "~1.9.30", "@langchain/protocol": "^0.0.18", "@standard-schema/spec": "1.1.0" }, "peerDependencies": { "@langchain/core": "^1.1.48", "zod": "^3.25.32 || ^4.2.0" } }, "sha512-63iH/igH5Fh5fHqmWp09YYWaDKKB9v4RCmYNJBrnQ224rFRbjebgyYW6o5RCczN5FZxIhQj+xT51rrNmG0zi5A=="], - "@langchain/langgraph-checkpoint": ["@langchain/langgraph-checkpoint@1.1.3", "", { "peerDependencies": { "@langchain/core": "^1.1.48" } }, "sha512-wgzdQNeEsdw1e+4lvlj0tdq/RYR/k1vPin10g0ymGoehZDDgd9nvIllGXSXN4TFgF9sf5qQP/KTkOcLfeseIhA=="], + "@langchain/langgraph-checkpoint": ["@langchain/langgraph-checkpoint@1.1.5", "", { "peerDependencies": { "@langchain/core": "^1.1.48" } }, "sha512-BwDwl5VeTOh6CVuiIPgsUgfK51vTJDMSbFcSCUfjJWsl8/DPdK/mbv+ejxJstkSk/BlSPMP4JfXWcN6jD2ea2Q=="], - "@langchain/langgraph-sdk": ["@langchain/langgraph-sdk@1.9.28", "", { "dependencies": { "@langchain/protocol": "^0.0.18", "@types/json-schema": "^7.0.15", "p-queue": "^9.0.1", "p-retry": "^7.1.1" }, "peerDependencies": { "@langchain/core": "^1.1.48", "react": "^18 || ^19", "react-dom": "^18 || ^19", "svelte": "^4.0.0 || ^5.0.0", "vue": "^3.0.0" }, "optionalPeers": ["react", "react-dom", "svelte", "vue"] }, "sha512-4j3XuM0PvtmAbL8mPfBS99ez3+ytRfgbOpAR/nOeaejTRF3Q9dNw2QnaGLGng8wLPtGLoSj+SYgUOVxy9Bv9vg=="], + "@langchain/langgraph-sdk": ["@langchain/langgraph-sdk@1.9.30", "", { "dependencies": { "@langchain/protocol": "^0.0.18", "@types/json-schema": "^7.0.15", "p-queue": "^9.0.1", "p-retry": "^7.1.1" }, "peerDependencies": { "@langchain/core": "^1.1.48", "react": "^18 || ^19", "react-dom": "^18 || ^19", "svelte": "^4.0.0 || ^5.0.0", "vue": "^3.0.0" }, "optionalPeers": ["react", "react-dom", "svelte", "vue"] }, "sha512-hPzbhenvvFRn46PHnlkad3E+TuUIfRhNGpekR5cY12D1WKh3Viwfyz9HpzCbfVebChU9Kgk494V9RJTnh1jrPQ=="], - "@langchain/mcp-adapters": ["@langchain/mcp-adapters@1.1.3", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.26.0", "debug": "^4.4.3", "zod": "^3.25.76 || ^4" }, "optionalDependencies": { "extended-eventsource": "^1.7.0" }, "peerDependencies": { "@langchain/core": "^1.0.0", "@langchain/langgraph": "^1.0.0" } }, "sha512-OPHIQNkTUJjnRj1pr+cp2nguMBZeF3Q1pVT1hCbgU7BrHgV7lov99wbU8po8Cm4zZzmeRtVO/T9X1SrDD1ogtQ=="], + "@langchain/mcp-adapters": ["@langchain/mcp-adapters@1.1.4", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", "debug": "^4.4.3", "zod": "^3.25.76 || ^4" }, "optionalDependencies": { "extended-eventsource": "^1.7.0" }, "peerDependencies": { "@langchain/core": "^1.0.0", "@langchain/langgraph": "^1.4.10" } }, "sha512-6E8ULWoI9w+lxydeb8yHILyEluonZ4JS42OwSLL1k/RvG/trjGuLYm7P9gE+/pFOxLuNk9wHZ7BLfGju4tcJEQ=="], "@langchain/protocol": ["@langchain/protocol@0.0.18", "", {}, "sha512-XW1egQtPfsGI41w2AMZNFZrUIwFSQHTjVMZs0OaTpCAvht/QLoaPN8FQcsysMVypOhupG28J29yOorrc70otBQ=="], - "@mcp-ui/client": ["@mcp-ui/client@6.1.1", "", { "dependencies": { "@modelcontextprotocol/ext-apps": "^1.2.0", "@modelcontextprotocol/sdk": "^1.27.1", "zod": "^3.23.8" }, "peerDependencies": { "react": "^18 || ^19", "react-dom": "^18 || ^19" } }, "sha512-kN5io7ouEpVfOTloEEGrnuWio3ZzYOVgTk4o8ULleACdKEw7VgOTozPl9aj9qVl/UBh7rXlvKH0JbBm6Tw52LQ=="], + "@modelcontextprotocol/client": ["@modelcontextprotocol/client@2.0.0", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "jose": "^6.1.3", "pkce-challenge": "^5.0.0", "zod": "^4.2.0" } }, "sha512-8f1OghQ2rjzIOfqgUCP+8GiUWqRs89njoWLNqAe8kWmDePv3s1fZXseej+QXemssEuuOvLLmLO/kqM3IQHtISw=="], - "@modelcontextprotocol/ext-apps": ["@modelcontextprotocol/ext-apps@1.7.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.29.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-QQqysE549cf/Y0VabBmAACXhj92EhB3t8yVct2BHbkWiPTFA1S91EqTVjYXXcZEefXU0pmHcdObhsNMcomJIOQ=="], + "@modelcontextprotocol/core": ["@modelcontextprotocol/core@2.0.0", "", { "dependencies": { "zod": "^4.2.0" } }, "sha512-pJCEwGG7Lfr/+PQp9ZTwKXNeO5wzbfKL7H3MYpCorM4oFBoQrdjnBgEoqG+RjhsvS1FKrDbKux+M1HhlnGWqcA=="], - "@modelcontextprotocol/inspector": ["@modelcontextprotocol/inspector@0.21.2", "", { "dependencies": { "@modelcontextprotocol/inspector-cli": "^0.21.2", "@modelcontextprotocol/inspector-client": "^0.21.2", "@modelcontextprotocol/inspector-server": "^0.21.2", "@modelcontextprotocol/sdk": "^1.25.2", "concurrently": "^9.2.0", "node-fetch": "^3.3.2", "open": "^10.2.0", "shell-quote": "^1.8.3", "spawn-rx": "^5.1.2", "ts-node": "^10.9.2", "zod": "^3.25.76" }, "bin": { "mcp-inspector": "cli/build/cli.js" } }, "sha512-f/zIzl6ccYjIxSTgmol9EKvd8AXsXkIaZX16kLGhrYwxrApvU3IL6IzgOqATKP/2kgyKdFUOVLlHMxX9e6BZZA=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.30.0", "", { "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA=="], - "@modelcontextprotocol/inspector-cli": ["@modelcontextprotocol/inspector-cli@0.21.2", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.25.2", "commander": "^13.1.0", "express": "^5.2.1", "spawn-rx": "^5.1.2" }, "bin": { "mcp-inspector-cli": "build/cli.js" } }, "sha512-Om2ApfIbkbfR7+PqJX0bO2Qwg0z55MgxquC+G0YL6x80ElpZMfxITsWQ1238kh3bv1zlwPSePc2kvDnCcU5tXw=="], - - "@modelcontextprotocol/inspector-client": ["@modelcontextprotocol/inspector-client@0.21.2", "", { "dependencies": { "@mcp-ui/client": "^6.0.0", "@modelcontextprotocol/ext-apps": "^1.0.0", "@modelcontextprotocol/sdk": "^1.25.2", "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.3", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-popover": "^1.1.3", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "ajv": "^6.12.6", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "^1.0.4", "lucide-react": "^0.523.0", "pkce-challenge": "^4.1.0", "prismjs": "^1.30.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-simple-code-editor": "^0.14.1", "serve-handler": "^6.1.6", "tailwind-merge": "^2.5.3", "zod": "^3.25.76" }, "bin": { "mcp-inspector-client": "bin/start.js" } }, "sha512-8us3hVXDgMHGb5jF1bBE/a6rRRlEaS+SKjbDFB56oE6+mNcAP9JgL8h6T0fYd3XQ3vL/CYxjVeQE+5yRdvhsVg=="], - - "@modelcontextprotocol/inspector-server": ["@modelcontextprotocol/inspector-server@0.21.2", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.25.2", "cors": "^2.8.5", "express": "^5.1.0", "express-rate-limit": "^8.2.1", "shell-quote": "^1.8.3", "shx": "^0.3.4", "spawn-rx": "^5.1.2", "ws": "^8.18.0", "zod": "^3.25.76" }, "bin": { "mcp-inspector-server": "build/index.js" } }, "sha512-ASFNPFMnT0Vn5u6aYRwwMrwA/0qpxb1lg3sE5GjWii5bUfPNXuIaLOXuXKSOFIMG4o82RxpuipdqX1ZdsmTPUw=="], - - "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], + "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0", "zod": "^4.2.0" } }, "sha512-YhHWdHfpFMQfd0prsEnxKeS3Qz3ytIGmsS0sth4KDjnacIT7hxk6hXHkJ9KysxlkvTM+WZAtQbbcUhdoP4Hvtw=="], "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], - "@radix-ui/number": ["@radix-ui/number@1.1.3", "", {}, "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA=="], - - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="], - - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.13", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.8" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0Q310knIY0K+mkmncU9FxLggfW7V49Ok2oY+iu27KkERTsQXxYCIC8XW5QoK4w7Jp1z00vT5xj3oxTcn7QlcTg=="], - - "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.9", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-size": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YPXZlqjrKVqKtVD2F828CApHwu+PEu30i7x0Y9gg6SbQ3fJbcaQlDkGPT0gW6HjxoCjAEt8uJ494F1S61KpIjQ=="], - - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.13", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-slot": "1.3.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Q8xYqNRFObXPmi45bFSkGdM2JA5hjBeYGFqzg6lZR3wp6b+cciraVq8DdneTabtws+uOYqjmsvmKOufk/M9Cyg=="], - - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pWJo6lQAfR6uy1n7ii7PaCc9dLPwTXDYbQpORZU5B548Aqvl2pP1SM1vJGKyxIFqZMHRopRO4CQYX2iXAIB5jA=="], - - "@radix-ui/react-context": ["@radix-ui/react-context@1.2.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-EraVbFjiIjibpLr6EjvEDmSCYJU2SlKDMiO+qEK/D9GOWnQoAQlpQo2occGYC1UM9MBeEx5Bek3UtW/Qi57vAg=="], - - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-dismissable-layer": "1.1.17", "@radix-ui/react-focus-guards": "1.1.5", "@radix-ui/react-focus-scope": "1.1.14", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-portal": "1.1.15", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-slot": "1.3.1", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-layout-effect": "1.1.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-h+7qMDDmZJ8qTSPrwNyKb/PACY0ehtN8QOBlCz+C2C1jgehKekdhmHddG9YQk8BF/sHJqglPjte+jA1Jrp9HcA=="], - - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-OdgAA/xb6WOQMKNn0mtbYoruMG6YMaBOnq+evWxSpMmiEMBdeFZawnIWRfPPeVXCRm+0lnN8jpJLjhD7/UIxWw=="], - - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.17", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-callback-ref": "1.1.3", "@radix-ui/react-use-effect-event": "0.0.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QAXwa38pG0xNAYh1pjdSaf86NrkqsMoDNmget/Y7X8O8E/C3Iqlj9GAPE4DfX9BPLXc7WH2TWSzMRnIoCdcjzQ=="], - - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.5", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UQvlB7L/BYh3P8MLvwZnQkH521EDos40Rwnbt5+Qpg4Vbk0z3xJjRUmR6+aka4aT1IQQXFdO5bNPoE7cvFl5xQ=="], - - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.14", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-callback-ref": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/x4htnJfmW53MplkrePaDpf1o/rN1C++g88WpVobULXbSyC19NtLkXmewuJ/HCaceSmfKDNL5gOXcBGnuAvnvQ=="], - - "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], - - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.3", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-f/Wxm0ctyMymUJK0fqTSQlm85rbzdAkoNbPXJQ5+6caowVO8Yx+NWGjGz/oGhs/D+WIbbQpOrU0hU2Li2/42xQ=="], - - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.13", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.8" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kj7BXyM4uG0dyeoEdVmPQAOFN291+iJOtiGTvkXe1ijJWLQbAHpFNkopvqquaMVn+zjqTZRhnefESAinMErHKg=="], - - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-dismissable-layer": "1.1.17", "@radix-ui/react-focus-guards": "1.1.5", "@radix-ui/react-focus-scope": "1.1.14", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-popper": "1.3.5", "@radix-ui/react-portal": "1.1.15", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-slot": "1.3.1", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-layout-effect": "1.1.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+AJ7P5oRcFqFtv7MaCD8fOuK3l5qQBAMdWEOnUOYd3JfHOeIUe7TnHHSSP15CtWwH4KrotyDCTzodOIoONh8vw=="], - - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.3.5", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.13", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-callback-ref": "1.1.3", "@radix-ui/react-use-layout-effect": "1.1.3", "@radix-ui/react-use-rect": "1.1.3", "@radix-ui/react-use-size": "1.1.3", "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-6hLng2Rs45IZcvZ31BNvMeaFEMMEbtsog4xPcb8LZrGfyoV9fdAXqB9UKhLpTHtL0+E2DhSr6VW54Tehd6ksAQ=="], - - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kAfBVJUKNNKZuyGQXXG6rKolAV2KAmxxVkPXJgoq9dEFTl39286RufHQFNTL8rzha4vP8159BJ6hMGpB+bqv7A=="], - - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.9", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-LTi1v05bprIb8/GSY/GWusI0jfsYjQ3CD3Nin8o7jVxnpHzVQfzjOQJoJTQkE9bdmOnsS7SFdhkXiBv8PrYnxw=="], - - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.8", "", { "dependencies": { "@radix-ui/react-slot": "1.3.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-DOlK1BdcIeYYUcFkSYFka4v1h95XTov93b0jCgW1EEiZuIhdwHY2NlE1teLIh+p0uBsuZI5A+voay+iVWpprfA=="], - - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.17", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.13", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-direction": "1.1.3", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-callback-ref": "1.1.3", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-is-hydrated": "0.1.2", "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YdJmjETw7Py+4Nziv71jgZ6fH7xQgB5p+pQ5rV8Iufyrm0RHSijec/UV1zPfQoK/YcfzB9nOl/2bi1zf1SjRMQ=="], - - "@radix-ui/react-select": ["@radix-ui/react-select@2.3.5", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.13", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-direction": "1.1.3", "@radix-ui/react-dismissable-layer": "1.1.17", "@radix-ui/react-focus-guards": "1.1.5", "@radix-ui/react-focus-scope": "1.1.14", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-popper": "1.3.5", "@radix-ui/react-portal": "1.1.15", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-slot": "1.3.1", "@radix-ui/react-use-callback-ref": "1.1.3", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-layout-effect": "1.1.3", "@radix-ui/react-use-previous": "1.1.3", "@radix-ui/react-visually-hidden": "1.2.9", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-6CQx0xtdarAkSCsqgLJaz+coYQaru7rt8K6gMItR2rA+WP8/Ig6kRAzP6Zw88RccG98IZnszqJlJx9hejYOL3A=="], - - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.3.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Bu/aAQHFFh6/QAvXAeUMurJ9fbW0JUIqlojU/yBXZ7cAVqy75Y7JYYyuCr9zLNF0p4WWoJYV54CTUIf4l7FzTw=="], - - "@radix-ui/react-switch": ["@radix-ui/react-switch@1.3.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-size": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-e1YrvGvEjIqDhqKjQ4Q+IDkMfiY30u3FPz9CZXZMlQ8mU3kZ2PdeBM8Gssc48CDopPizNorKumGhjySBfO7BDQ=="], - - "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-direction": "1.1.3", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-roving-focus": "1.1.17", "@radix-ui/react-use-controllable-state": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4wbGf98pX2ZwYqHMVB/dakeMPyH4xSJ9MSDaCCWXlIpYt0VYY6mtZxKSTiGS/F3tk0yrEYmXE1V8uwG7TxDCcQ=="], - - "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.13", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-dismissable-layer": "1.1.17", "@radix-ui/react-portal": "1.1.15", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-use-callback-ref": "1.1.3", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-layout-effect": "1.1.3", "@radix-ui/react-visually-hidden": "1.2.9" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/o8uHzH2z6ZM59Dt1UPFj8aYJ0DjPu0EuQXQ7uuYJTQLH5mNqxa1KuBfbpnklgXOOjyAtTp/tll0Nm+Nkz+bEg=="], - - "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.4", "@radix-ui/react-context": "1.2.1", "@radix-ui/react-dismissable-layer": "1.1.17", "@radix-ui/react-id": "1.1.3", "@radix-ui/react-popper": "1.3.5", "@radix-ui/react-portal": "1.1.15", "@radix-ui/react-presence": "1.1.9", "@radix-ui/react-primitive": "2.1.8", "@radix-ui/react-slot": "1.3.1", "@radix-ui/react-use-controllable-state": "1.2.5", "@radix-ui/react-use-layout-effect": "1.1.3", "@radix-ui/react-visually-hidden": "1.2.9" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-C/JxCKJJac+wtHPW1yFBSN8Ssuaufy2jYQMgyiJYyW4Fw0WJfDWXQDAly1qsbd1YDznH+sYitaljhf8igPCvmA=="], - - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-AUS7HoBBAncIsGMLNG+CcpLuJ+JIBbZzmyM8Qdb1eIThX0AlhSSC6wn40xfBlPE+ypx/vSSiRWnklUAjy3U3UA=="], - - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-use-effect-event": "0.0.4", "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UB1dXpxvHjR48poyKdKdTm7jT0kp3elkUKdKQiOkirlbYumqXinSJtrjDsr9maXNPvL12bKI4CDSmydms/9Aeg=="], - - "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XYcfa6wlXDCwQtePuEiPmXLSAhGL4DWtedSyRgGbG3y10mw+OnrLp6SyeY1gJFMiYF0Dx0nMAX9InylKbLEFQQ=="], - - "@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2+gAVu9uaSLbopCTvvuWX9MIgEOlyqXC1Ok+KLCO7cZPSHLENs7dL0KbFQUGFIcFKmDW/bmaQRJtd8E3cnMRUw=="], - - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-rDiah9wvtqihWtWz02XreeRKIxt2EJF8y5D9rtY9l5A2zxePAtcPiOMpDugNRw5bFHz+1/8viVoc7ZVKiJknCw=="], - - "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kbefNKla5AGhgvMqrg/qS7mYVLXTEHQLqoFIS03nKN2dAfQQ5PK5Tp+2LxS7BV6a6l4HHv4jTg6rtV2Uajwe2w=="], - - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.3", "", { "dependencies": { "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-W0GSYZFKEfi6raMiMEfJSngvVbFDIyxtW5JuVg5NoQBY59l0dVQVGLbhog/tOdwq0qtZ+TXuX1ikSNan4/IZXA=="], - - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.3", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jJq6tQQLvO/z4uWbztjwPV+1a/+H4rCaWypasLB/ac8DEdd6+p7dIm7o3F6P2KZPGkPMqD4s5424EdAdoU+GLA=="], - - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.8" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-seuZXNZVCz1kLSQMRO/TdNOSahBI3S5nXE4jzO7u7aFRWQlMAnwyrr8vKMkEU115fCLEyzR2YyjnP+aRMxK34w=="], - - "@radix-ui/rect": ["@radix-ui/rect@1.1.3", "", {}, "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw=="], - "@simple-libs/child-process-utils": ["@simple-libs/child-process-utils@2.0.0", "", { "dependencies": { "@simple-libs/stream-utils": "^2.0.0" } }, "sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A=="], "@simple-libs/stream-utils": ["@simple-libs/stream-utils@2.0.0", "", {}, "sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ=="], @@ -303,14 +209,6 @@ "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@tsconfig/node10": ["@tsconfig/node10@1.0.12", "", {}, "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ=="], - - "@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="], - - "@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="], - - "@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="], - "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], @@ -359,6 +257,8 @@ "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], + "@workflow/serde": ["@workflow/serde@4.1.0", "", {}, "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ=="], + "@youdotcom-oss/ai-sdk-plugin": ["@youdotcom-oss/ai-sdk-plugin@workspace:packages/ai-sdk-plugin"], "@youdotcom-oss/api": ["@youdotcom-oss/api@workspace:packages/api"], @@ -371,11 +271,7 @@ "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], - "acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], - - "acorn-walk": ["acorn-walk@8.3.5", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw=="], - - "ai": ["ai@6.0.234", "", { "dependencies": { "@ai-sdk/gateway": "3.0.156", "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40", "@opentelemetry/api": "^1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-6/7Go3Z6j/rpMgTS8wWm38/pcDfvhSmQvNLvElwYezmjYKr5hNDMa4bGlnBtQcYNzbc1dLpWdbYNLJaas3AFPw=="], + "ai": ["ai@7.0.70", "", { "dependencies": { "@ai-sdk/gateway": "4.0.56", "@ai-sdk/provider": "4.0.7", "@ai-sdk/provider-utils": "5.0.28" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-r7Y0alVQqairf0WvT3puyjz5wPMjRV5zYSHiGz87K3uoqkCeK1EaN6O8lLqduSszLcfqC6XVJAIdy3/RkPwPHg=="], "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -383,28 +279,18 @@ "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="], + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], "argue-cli": ["argue-cli@3.1.0", "", {}, "sha512-DhBpBfXL4SS2uC0N922MMajKR3CdrTG0u2or1PNYgXMsrSzViJrbtvT0nCLlLGUI0plam/ZZCs7aAauHtW9thw=="], - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], "body-parser": ["body-parser@2.3.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", "debug": "^4.4.3", "http-errors": "^2.0.1", "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", "qs": "^6.15.2", "raw-body": "^3.0.2", "type-is": "^2.1.0" } }, "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw=="], - "brace-expansion": ["brace-expansion@1.1.16", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw=="], - "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], - "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], @@ -413,26 +299,8 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - - "cmdk": ["cmdk@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="], - - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - - "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], - - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - - "concurrently": ["concurrently@9.2.4", "", { "dependencies": { "chalk": "4.1.2", "rxjs": "7.8.2", "shell-quote": "1.9.0", "supports-color": "8.1.1", "tree-kill": "1.2.2", "yargs": "17.7.2" }, "bin": { "concurrently": "dist/bin/concurrently.js", "conc": "dist/bin/concurrently.js" } }, "sha512-TZ0CEhyzvFjgtAvHTusDMgj7wNdihCh7LLLrzdUOXIhdlnL2JBBGA9eJxR24rtqgmdjh3OA3hrN1rCHj6HM8qA=="], - "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], @@ -453,26 +321,12 @@ "cosmiconfig-typescript-loader": ["cosmiconfig-typescript-loader@6.3.0", "", { "dependencies": { "jiti": "2.6.1" }, "peerDependencies": { "@types/node": "*", "cosmiconfig": ">=9", "typescript": ">=5" } }, "sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA=="], - "create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="], - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], - - "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], - - "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], - "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - - "diff": ["diff@4.0.4", "", {}, "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ=="], - "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], @@ -513,26 +367,18 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - "fast-sha256": ["fast-sha256@1.3.0", "", {}, "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ=="], "fast-uri": ["fast-uri@3.1.4", "", {}, "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw=="], - "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], - "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], "format-package": ["format-package@8.0.0", "", { "dependencies": { "cosmiconfig": "^9.0.2", "joi": "^18.2.3", "json5": "^2.2.0", "resolve-from": "^5.0.0", "sort-scripts": "^1.0.1", "yargs": "^18.0.0" }, "peerDependencies": { "prettier": "^2.0.0 || ^3.0.0" }, "bin": { "format-package": "dist/cli/index.js" } }, "sha512-kHYRGqS4yLr05rDJVoCSapD7dxCpnPh6CY2Q+kRTFH/A5CE7HEYuazoe/EKVveWO/pYca9BZZYs1DShVxrh9Ww=="], - "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], - "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], - "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], @@ -541,12 +387,8 @@ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], - "global-directory": ["global-directory@5.0.0", "", { "dependencies": { "ini": "6.0.0" } }, "sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], @@ -565,36 +407,22 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "ini": ["ini@6.0.0", "", {}, "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ=="], - "interpret": ["interpret@1.4.0", "", {}, "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="], - "ip-address": ["ip-address@10.2.0", "", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="], "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], - "is-core-module": ["is-core-module@2.16.2", "", { "dependencies": { "hasown": "^2.0.3" } }, "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA=="], - - "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], - "is-network-error": ["is-network-error@1.3.2", "", {}, "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA=="], "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], - "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], @@ -621,7 +449,7 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - "langchain": ["langchain@1.5.3", "", { "dependencies": { "@langchain/langgraph": "^1.4.7", "@langchain/langgraph-checkpoint": "^1.1.3", "langsmith": ">=0.5.0 <1.0.0", "zod": "^3.25.76 || ^4" }, "peerDependencies": { "@langchain/core": "^1.2.1" } }, "sha512-YRYPy1xPq4CgKe0NdPoscYHnKBW5cViEyWiZsUKQfN3xL1X5DpGlIpaBQg1A/t6o9ePKE7J5b7nqrfLz8t7/Rw=="], + "langchain": ["langchain@1.5.10", "", { "dependencies": { "@langchain/langgraph": "^1.4.10", "@langchain/langgraph-checkpoint": "^1.1.5", "langsmith": ">=0.5.0 <1.0.0", "zod": "^3.25.76 || ^4" }, "peerDependencies": { "@langchain/core": "^1.2.9" } }, "sha512-JaC12C1qyGn985vvjttr4hr8lfFzWhrXp2M1byZJGmNJ2RiIgqnhiYDuLlG/xHDxhKD3onJ5pCuUif/cbdqPhA=="], "langsmith": ["langsmith@0.8.5", "", { "dependencies": { "p-queue": "6.6.2" }, "peerDependencies": { "@opentelemetry/api": "*", "@opentelemetry/exporter-trace-otlp-proto": "*", "@opentelemetry/sdk-trace-base": "*", "openai": "*", "ws": ">=7" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/exporter-trace-otlp-proto", "@opentelemetry/sdk-trace-base", "openai", "ws"] }, "sha512-0Lf3AW6mRYNGDkywq/3OJ3569963XCbnHnobNYnJqLFsCanJAcpilFAGlIBvn655fG2Am/2H3PXpY8d+4AjUGQ=="], @@ -629,12 +457,6 @@ "lint-staged": ["lint-staged@17.1.1", "", { "dependencies": { "picomatch": "^4.0.5", "string-argv": "^0.3.2", "tinyexec": "^1.2.4" }, "optionalDependencies": { "yaml": "^2.9.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-FnHWpSe5cPRtrDG+soOuNdBxb4XQb2gN5EqpEWKdweyqyOfpl4QSjbrz3ilcIf0WXmkiNQGZZRQ23R5YtB3TEw=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - - "lucide-react": ["lucide-react@0.523.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-rUjQoy7egZT9XYVXBK1je9ckBnNp7qzRZOhLQx5RcEp2dCGlXo+mv6vf7Am4LimEcFBJIIZzSGfgTqc9QCrPSw=="], - - "make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="], - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], @@ -645,20 +467,12 @@ "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], - "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], - - "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -667,8 +481,6 @@ "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], - "p-finally": ["p-finally@1.0.0", "", {}, "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="], "p-queue": ["p-queue@6.6.2", "", { "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" } }, "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ=="], @@ -683,14 +495,8 @@ "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], - "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], - - "path-is-inside": ["path-is-inside@1.0.2", "", {}, "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="], - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], @@ -701,56 +507,26 @@ "prettier": ["prettier@3.9.6", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g=="], - "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], - "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="], "range-parser": ["range-parser@1.3.0", "", {}, "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw=="], "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], - "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], - - "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], - - "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - - "react-simple-code-editor": ["react-simple-code-editor@0.14.1", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-BR5DtNRy+AswWJECyA17qhUDvrrCZ6zXOCfkQY5zSmb96BVUbpVAv03WpcjcwtCwiLbIANx3gebHOcXYn1EHow=="], - - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - - "rechoir": ["rechoir@0.6.2", "", { "dependencies": { "resolve": "^1.1.6" } }, "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="], - - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], - "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - "resolve": ["resolve@1.22.12", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA=="], - "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], - "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], - - "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="], - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], - "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], - "serve-handler": ["serve-handler@6.1.7", "", { "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "mime-types": "2.1.18", "minimatch": "3.1.5", "path-is-inside": "1.0.2", "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg=="], - "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], @@ -759,12 +535,6 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "shell-quote": ["shell-quote@1.10.0", "", {}, "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA=="], - - "shelljs": ["shelljs@0.8.5", "", { "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" }, "bin": { "shjs": "bin/shjs" } }, "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow=="], - - "shx": ["shx@0.3.4", "", { "dependencies": { "minimist": "^1.2.3", "shelljs": "^0.8.5" }, "bin": { "shx": "lib/cli.js" } }, "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g=="], - "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], @@ -775,8 +545,6 @@ "sort-scripts": ["sort-scripts@1.0.1", "", {}, "sha512-58eys3wXg05rI51Gg/90Uvc0id0aboGLSzHm4nFvuD0MofSg/y8cyJ7ZqYuZ1eyj6AA8XwFTGaXA+6tApsMv4w=="], - "spawn-rx": ["spawn-rx@5.1.2", "", { "dependencies": { "debug": "^4.3.7", "rxjs": "^7.8.1" } }, "sha512-/y7tJKALVZ1lPzeZZB9jYnmtrL7d0N2zkorii5a7r7dhHkWIuLTzZpZzMJLK1dmYRgX/NCc4iarTO3F7BS2c/A=="], - "standardwebhooks": ["standardwebhooks@1.0.0", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg=="], "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], @@ -789,44 +557,26 @@ "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - - "tailwind-merge": ["tailwind-merge@2.6.1", "", {}, "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ=="], - "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], - "ts-algebra": ["ts-algebra@2.0.0", "", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="], - "ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-script": "dist/bin-script-deprecated.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], "typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], "typescript-language-server": ["typescript-language-server@5.3.0", "", { "bin": { "typescript-language-server": "lib/cli.mjs" } }, "sha512-5puofxZHgFdAYtfNpmwCAvgtaYgg8wrUnH30m7Ze3QuguId5RNRadKASpOpyDxTyUdAF51FjhTdjntLw/EuWcQ=="], + "undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], + "undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - - "v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="], - "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], - "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], @@ -835,8 +585,6 @@ "ws": ["ws@8.21.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw=="], - "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], @@ -845,74 +593,20 @@ "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], - "yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="], - "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], "@langchain/langgraph-sdk/p-queue": ["p-queue@9.3.3", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA=="], - "@mcp-ui/client/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - - "@modelcontextprotocol/inspector/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - - "@modelcontextprotocol/inspector-client/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], - - "@modelcontextprotocol/inspector-client/pkce-challenge": ["pkce-challenge@4.1.0", "", {}, "sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ=="], - - "@modelcontextprotocol/inspector-client/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - - "@modelcontextprotocol/inspector-server/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "body-parser/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], - "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "concurrently/shell-quote": ["shell-quote@1.9.0", "", {}, "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA=="], - - "concurrently/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "serve-handler/bytes": ["bytes@3.0.0", "", {}, "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="], - - "serve-handler/content-disposition": ["content-disposition@0.5.2", "", {}, "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA=="], - - "serve-handler/mime-types": ["mime-types@2.1.18", "", { "dependencies": { "mime-db": "~1.33.0" } }, "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ=="], - - "serve-handler/path-to-regexp": ["path-to-regexp@3.3.0", "", {}, "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw=="], - - "serve-handler/range-parser": ["range-parser@1.2.0", "", {}, "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A=="], - "type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "@langchain/langgraph-sdk/p-queue/eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], "@langchain/langgraph-sdk/p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], - - "@modelcontextprotocol/inspector-client/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "concurrently/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], - - "concurrently/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "concurrently/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - - "serve-handler/mime-types/mime-db": ["mime-db@1.33.0", "", {}, "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="], - - "concurrently/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "concurrently/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "concurrently/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "concurrently/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "concurrently/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "concurrently/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], } } diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index fd7ac23..e43da04 100644 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -166,7 +166,7 @@ MCP servers (like `@youdotcom-oss/mcp`) have higher thresholds (100ms/50%/400KB) **MCP Server Overhead Sources**: - **Stdio transport**: Process IPC adds 20-40ms latency - **JSON-RPC protocol**: Serialization/deserialization adds 10-20ms -- **Client SDK**: `@modelcontextprotocol/sdk` protocol overhead +- **Client SDK**: `@modelcontextprotocol/client` protocol overhead - **Process spawning**: Each test spawns MCP server as subprocess - **State management**: Client state, connection pools, schemas diff --git a/package.json b/package.json index 27f38ce..3e5b37c 100644 --- a/package.json +++ b/package.json @@ -32,15 +32,15 @@ ] }, "devDependencies": { - "@biomejs/biome": "2.5.4", + "@biomejs/biome": "2.5.9", "@commitlint/cli": "^21.2.1", "@commitlint/config-conventional": "^21.2.0", - "@modelcontextprotocol/sdk": "^1.29.0", + "@modelcontextprotocol/client": "^2.0.0", "@types/bun": "latest", "format-package": "^8.0.0", "lint-staged": "^17.1.0", "typescript": "7.0.2", "typescript-language-server": "5.3.0", - "zod": "^4.3.6" + "zod": "^4.4.3" } } diff --git a/packages/ai-sdk-plugin/README.md b/packages/ai-sdk-plugin/README.md index 6ec0a92..95c5dc2 100644 --- a/packages/ai-sdk-plugin/README.md +++ b/packages/ai-sdk-plugin/README.md @@ -1,6 +1,6 @@ # Vercel AI SDK Plugin for You.com -Give your AI applications **real-time access to the web** through the hosted You.com MCP server. This package exposes an async `createYouClient()` helper that connects to `https://api.you.com/mcp` and returns the underlying AI SDK MCP client. By default, `await client.tools()` resolves to the default hosted tool set: `you-search`, `you-contents`, `you-research`, `you-balance`, and `you-discover`. +Give your AI applications **real-time access to the web** through the hosted You.com MCP server. This package exposes an async `createYouClient()` helper that connects to `https://api.you.com/mcp` and returns the underlying AI SDK MCP client. By default, `await client.tools()` resolves to the default hosted tool set: `you-search`, `you-contents`, `you-research`, `you-balance`, `you-discover`, and `you-answer`. ## Features @@ -85,7 +85,7 @@ try { } ``` -`createYouClient()` returns the underlying MCP client. Call `await client.tools()` to resolve the default hosted tool set (`you-search`, `you-contents`, `you-research`, `you-balance`, and `you-discover`) unless you scope it with `tools`, and call `await client.close()` when finished. +`createYouClient()` returns the underlying MCP client. Call `await client.tools()` to resolve the default hosted tool set (`you-search`, `you-contents`, `you-research`, `you-balance`, `you-discover`, and `you-answer`) unless you scope it with `tools`, and call `await client.close()` when finished. Set your You.com API key as an environment variable: @@ -222,6 +222,7 @@ The default hosted tool set is: - `you-research` - `you-balance` - `you-discover` +- `you-answer` Optional tools: @@ -233,7 +234,7 @@ Optional tools: `profile` selects a hosted server profile. `tools` scopes which tools are visible. If `profile` is provided, it takes precedence over `tools`. -Today, `profile: 'free'` is a search-only mode. It overrides `tools` and does not expose `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, or livecrawl. +Today, `profile: 'free'` is a search-only mode. It overrides `tools` and does not expose `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, `you-answer`, or livecrawl. ### Using different model providers @@ -309,6 +310,7 @@ Default tools: - `you-research` - `you-balance` - `you-discover` +- `you-answer` Optional tools: diff --git a/packages/ai-sdk-plugin/package.json b/packages/ai-sdk-plugin/package.json index a1406e4..9308684 100644 --- a/packages/ai-sdk-plugin/package.json +++ b/packages/ai-sdk-plugin/package.json @@ -62,15 +62,14 @@ }, "types": "./dist/main.d.ts", "dependencies": { - "@ai-sdk/mcp": "^1.0.42", - "@modelcontextprotocol/sdk": "^1.29.0" + "@ai-sdk/mcp": "^2.0.34" }, "peerDependencies": { - "ai": "^6.0.168" + "ai": "^7.0.0" }, "devDependencies": { - "@ai-sdk/anthropic": "^3.0.71", + "@ai-sdk/anthropic": "^4.0.40", "@types/bun": "latest", - "ai": "^6.0.168" + "ai": "^7.0.70" } } diff --git a/packages/api/README.md b/packages/api/README.md index 23eb820..806bae1 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -109,6 +109,13 @@ export YDC_ALLOWED_TOOLS="you-search,you-research,you-contents" Explicit `allowedTools` takes precedence over `YDC_ALLOWED_TOOLS`. +When neither `allowedTools` nor `YDC_ALLOWED_TOOLS` is provided and no `profile` +is set, the package advertises every known tool by default +(`?tools=`). This keeps the typed surface truthful — every +`KnownToolName` is callable on a default connection, including `you-finance` +(which the server only exposes via an explicit `?tools=` filter). Pass +`allowedTools` or a `profile` to narrow the set. + ### Profiles and auth Set `profile` to route to a hosted profile (sent as `?profile=...`): diff --git a/packages/api/package.json b/packages/api/package.json index 9dc155a..e959292 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -42,7 +42,7 @@ }, "scripts": { "build": "bun run build:bundle && bun run build:types", - "build:bundle": "bun build src/main.ts --outdir dist --target node --external @modelcontextprotocol/sdk", + "build:bundle": "bun build src/main.ts --outdir dist --target node --external @modelcontextprotocol/client", "build:types": "tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --noEmit false", "check": "bun run check:biome && bun run check:types && bun run check:package", "check:biome": "biome check", @@ -56,9 +56,10 @@ }, "types": "./dist/main.d.ts", "dependencies": { - "@modelcontextprotocol/sdk": "^1.29.0" + "@modelcontextprotocol/client": "^2.0.0" }, "devDependencies": { + "@modelcontextprotocol/server": "^2.0.0", "@types/bun": "latest" } } diff --git a/packages/api/src/main.ts b/packages/api/src/main.ts index 52c3721..699690c 100644 --- a/packages/api/src/main.ts +++ b/packages/api/src/main.ts @@ -1,22 +1,33 @@ -import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' +import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' import packageJson from '../package.json' with { type: 'json' } -import type { KnownToolInput, KnownToolName, KnownToolOutput } from './tool-schemas.ts' +import { + API_TOOL_SCHEMA_HASH, + API_TOOL_SCHEMAS, + type KnownToolInput, + type KnownToolName, + type KnownToolOutput, +} from './tool-schemas.ts' export type { KnownToolInput, KnownToolName, KnownToolOutput, + YouAnswerInput, + YouAnswerOutput, YouBalanceInput, YouBalanceOutput, YouContentsInput, YouContentsOutput, + YouDiscoverInput, + YouDiscoverOutput, + YouFinanceInput, + YouFinanceOutput, YouResearchInput, YouResearchOutput, YouSearchInput, YouSearchOutput, } from './tool-schemas.ts' -export { API_TOOL_SCHEMA_HASH, API_TOOL_SCHEMAS } from './tool-schemas.ts' +export { API_TOOL_SCHEMA_HASH, API_TOOL_SCHEMAS } const BASE_MCP_SERVER_URL = 'https://api.you.com/mcp' @@ -41,8 +52,17 @@ const buildMcpUrl = ({ allowedTools, profile }: Pick + required?: string[] + type: 'object' +} + +const testTools: Array<{ inputSchema: ToolSchema; name: string; outputSchema?: ToolSchema }> = [ { inputSchema: { properties: { @@ -65,14 +68,6 @@ const testTools = [ }, ] -const transports = new Map< - string, - { - server: Server - transport: WebStandardStreamableHTTPServerTransport - } ->() - let originalFetch: typeof fetch let tempDir: string let traceFile: string @@ -103,10 +98,6 @@ describe('createYouApi', () => { process.env.YDC_ALLOWED_TOOLS = originalAllowedTools } - await Promise.allSettled( - [...transports.values()].map(({ server, transport }) => Promise.all([server.close(), transport.close()])), - ) - transports.clear() rmSync(tempDir, { force: true, recursive: true }) }) @@ -174,7 +165,13 @@ describe('createYouApi', () => { expect(tools.tools.map(({ name }) => name)).toEqual(['you-contents', 'you-research', 'you-search']) const trace = readTrace() - expect(trace.every(({ url }) => url === 'https://api.you.com/mcp')).toBe(true) + expect( + trace.every( + ({ url }) => + url === + 'https://api.you.com/mcp?tools=you-answer%2Cyou-balance%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', + ), + ).toBe(true) expect(trace.every(({ headers }) => headers.authorization === 'Bearer config-key')).toBe(true) await you.close() }) @@ -188,7 +185,13 @@ describe('createYouApi', () => { await you.tools() const trace = readTrace() - expect(trace.every(({ url }) => url === 'https://api.you.com/mcp')).toBe(true) + expect( + trace.every( + ({ url }) => + url === + 'https://api.you.com/mcp?tools=you-answer%2Cyou-balance%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', + ), + ).toBe(true) await you.close() }) @@ -249,7 +252,7 @@ describe('createYouApi', () => { }) const createTestServer = () => { - const server = new Server( + const mcp = new McpServer( { name: 'test-api-mcp-server', version: '1.0.0', @@ -263,40 +266,48 @@ const createTestServer = () => { }, ) - server.setRequestHandler(ListToolsRequestSchema, async () => ({ - tools: testTools, - })) - server.setRequestHandler(CallToolRequestSchema, async (request) => { - receivedToolInputs.push(request.params.arguments) - - if (request.params.arguments?.query === 'missing-structured-content') { - return { - content: [], - } - } + for (const tool of testTools) { + mcp.registerTool( + tool.name, + { + inputSchema: fromJsonSchema(tool.inputSchema as JsonSchemaType), + }, + async (args) => { + receivedToolInputs.push(args) + const query = (args as { query?: string } | undefined)?.query + + if (query === 'missing-structured-content') { + return { + content: [], + } + } - if (request.params.arguments?.query === 'tool-error') { - return { - content: [], - isError: true, - structuredContent: { - message: 'Tool failed', - }, - } - } + if (query === 'tool-error') { + return { + content: [], + isError: true, + structuredContent: { + message: 'Tool failed', + }, + } + } - return { - content: [], - structuredContent: { - input: request.params.arguments, - ok: true, + return { + content: [], + structuredContent: { + input: args, + ok: true, + }, + } }, - } - }) + ) + } - return server + return mcp } +const handler = createMcpHandler(createTestServer, { legacy: 'stateless' }) + const createMockedFetch = (activeTraceFile: string): typeof fetch => Object.assign( async (input: string | URL | Request, init?: RequestInit | BunFetchRequestInit) => { @@ -304,7 +315,6 @@ const createMockedFetch = (activeTraceFile: string): typeof fetch => input instanceof Request ? new Request(input, init) : new Request(input instanceof URL ? input.toString() : input, init) - const sessionId = request.headers.get('mcp-session-id') await Bun.write( activeTraceFile, @@ -315,31 +325,7 @@ const createMockedFetch = (activeTraceFile: string): typeof fetch => })}\n`, ) - if (sessionId) { - const activeTransport = transports.get(sessionId)?.transport - - if (activeTransport) { - return activeTransport.handleRequest(request) - } - } - - const server = createTestServer() - let transport!: WebStandardStreamableHTTPServerTransport - - transport = new WebStandardStreamableHTTPServerTransport({ - enableJsonResponse: true, - onsessionclosed: (closedSessionId) => { - transports.delete(closedSessionId) - }, - onsessioninitialized: (initializedSessionId) => { - transports.set(initializedSessionId, { server, transport }) - }, - sessionIdGenerator: () => randomUUID(), - }) - - await server.connect(transport) - - return transport.handleRequest(request) + return handler.fetch(request) }, { preconnect: globalThis.fetch.preconnect.bind(globalThis.fetch), diff --git a/packages/api/src/tool-schemas.ts b/packages/api/src/tool-schemas.ts index 27860d0..7244177 100644 --- a/packages/api/src/tool-schemas.ts +++ b/packages/api/src/tool-schemas.ts @@ -1,15 +1,224 @@ // This file is generated. Do not edit by hand. -export const API_TOOL_SCHEMA_HASH = '0c74f7091eca6ec01a70e3bc62029873e7dac682b473ddcc7c39fa1df35ddf65' +export const API_TOOL_SCHEMA_HASH = '6a34e1d43e2249641bb24f52357826b3a2fc5ac39d3920d344f87e538bc0eeed' export const API_TOOL_SCHEMAS = { + 'you-answer': { + inputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + properties: { + boost_domains: { + description: + 'Domains to prefer in ranking (up to 500). Can combine with exclude_domains, not include_domains.', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + country: { + description: 'A supported country code that determines the geographical focus', + enum: [ + 'AR', + 'AU', + 'AT', + 'BE', + 'BR', + 'CA', + 'CL', + 'DK', + 'FI', + 'FR', + 'DE', + 'HK', + 'IN', + 'ID', + 'IT', + 'JP', + 'KR', + 'MY', + 'MX', + 'NL', + 'NZ', + 'NO', + 'CN', + 'PL', + 'PT', + 'PH', + 'RU', + 'SA', + 'ZA', + 'ES', + 'SE', + 'CH', + 'TW', + 'TR', + 'GB', + 'US', + ], + type: 'string', + }, + exclude_domains: { + description: 'Domains to exclude from results (up to 500)', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + freshness: { + description: 'day/week/month/year or YYYY-MM-DDtoYYYY-MM-DD', + type: 'string', + }, + include_domains: { + description: 'Domains to exclusively include (up to 500)', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + language: { + description: 'A supported BCP 47 language tag that determines the language', + enum: [ + 'AR', + 'EU', + 'BN', + 'BG', + 'CA', + 'HR', + 'CS', + 'DA', + 'NL', + 'EN', + 'EN-GB', + 'ET', + 'FI', + 'FR', + 'GL', + 'DE', + 'EL', + 'GU', + 'HE', + 'HI', + 'HU', + 'IS', + 'IT', + 'KN', + 'KO', + 'LV', + 'LT', + 'MS', + 'ML', + 'MR', + 'NB', + 'PL', + 'PA', + 'RO', + 'RU', + 'SR', + 'SK', + 'SL', + 'ES', + 'SV', + 'TA', + 'TE', + 'TH', + 'TR', + 'UK', + 'VI', + ], + type: 'string', + }, + query: { + description: + 'Focused live-web question or lookup request. Returns a synthesized answer with inline citations, citation excerpts, and supporting web results.', + minLength: 1, + type: 'string', + }, + }, + required: ['query'], + type: 'object', + }, + outputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + properties: { + answer: { + description: 'The synthesized response with numbered inline citations', + type: 'string', + }, + citations: { + description: 'The sources cited in the answer, in citation order', + items: { + additionalProperties: false, + properties: { + excerpts: { + description: 'Verbatim excerpts from the cited source that support the answer', + items: { + type: 'string', + }, + type: 'array', + }, + source: { + description: 'The URL of the cited source', + type: 'string', + }, + }, + required: ['source', 'excerpts'], + type: 'object', + }, + type: 'array', + }, + results: { + additionalProperties: false, + description: 'Search results grouped by result type', + properties: { + web: { + description: 'All web search results considered during answer synthesis', + items: { + additionalProperties: false, + properties: { + page_age: { + description: 'The publication date or age supplied by the search result', + type: 'string', + }, + snippets: { + description: 'Text snippets from the search result that preview its content', + items: { + type: 'string', + }, + type: 'array', + }, + title: { + description: 'The title of the source webpage', + type: 'string', + }, + url: { + description: 'The URL of the source webpage', + type: 'string', + }, + }, + required: ['url', 'title'], + type: 'object', + }, + type: 'array', + }, + }, + required: ['web'], + type: 'object', + }, + }, + required: ['answer', 'citations', 'results'], + type: 'object', + }, + }, 'you-balance': { inputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', properties: {}, type: 'object', }, outputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', additionalProperties: false, properties: { data: { @@ -45,7 +254,7 @@ export const API_TOOL_SCHEMAS = { }, 'you-contents': { inputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', properties: { crawl_timeout: { description: 'Optional timeout in seconds (1-60) for page crawling', @@ -53,12 +262,8 @@ export const API_TOOL_SCHEMAS = { minimum: 1, type: 'number', }, - format: { - description: '(Deprecated) Output format - use formats array instead', - enum: ['markdown', 'html'], - type: 'string', - }, formats: { + default: ['markdown'], description: 'Output formats: array of "markdown" (text), "html" (layout), or "metadata" (structured data)', items: { enum: ['markdown', 'html', 'metadata'], @@ -66,6 +271,20 @@ export const API_TOOL_SCHEMAS = { }, type: 'array', }, + max_age: { + anyOf: [ + { + maximum: 9007199254740991, + minimum: 0, + type: 'integer', + }, + { + type: 'null', + }, + ], + description: + 'Maximum allowed age of cached content in seconds. When set, cached content older than this threshold is ignored and the page is re-fetched. Must be 0 or greater. Default: null (no age limit).', + }, urls: { description: 'Array of webpage URLs to extract content from (e.g., ["https://example.com"])', items: { @@ -82,10 +301,11 @@ export const API_TOOL_SCHEMAS = { type: 'object', }, outputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', additionalProperties: false, properties: { output: { + description: 'Extracted page content, one entry per requested URL', items: { additionalProperties: false, properties: { @@ -98,7 +318,7 @@ export const API_TOOL_SCHEMAS = { type: 'null', }, ], - description: 'HTML content', + description: 'Full HTML content of the page', }, markdown: { anyOf: [ @@ -109,7 +329,7 @@ export const API_TOOL_SCHEMAS = { type: 'null', }, ], - description: 'Markdown content', + description: 'Full Markdown content of the page', }, metadata: { anyOf: [ @@ -148,18 +368,238 @@ export const API_TOOL_SCHEMAS = { description: 'Page metadata (only when metadata format requested)', }, title: { - description: 'Title (optional in actual API responses)', + description: 'Page title', + type: 'string', + }, + url: { + description: 'URL of the extracted page', + type: 'string', + }, + }, + required: ['url'], + type: 'object', + }, + type: 'array', + }, + }, + required: ['output'], + type: 'object', + }, + }, + 'you-discover': { + inputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + properties: { + finder: { + default: 'all', + description: 'Which Agent Finder discovery service(s) to query.', + enum: ['github', 'huggingface', 'all'], + type: 'string', + }, + finder_url: { + description: 'Optional custom finder URL (must be public http/https). Augments selected finders.', + format: 'uri', + type: 'string', + }, + limit: { + default: 10, + description: 'Max consolidated results (1–25).', + maximum: 25, + minimum: 1, + type: 'integer', + }, + query: { + description: 'Natural-language task to find agents/tools for.', + minLength: 1, + type: 'string', + }, + }, + required: ['query'], + type: 'object', + }, + outputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + properties: { + finders: { + additionalProperties: false, + description: 'Per-finder request status', + properties: { + failed: { + description: 'Finder services that failed to respond', + items: { + type: 'string', + }, + type: 'array', + }, + queried: { + description: 'Finder services that were queried', + items: { + type: 'string', + }, + type: 'array', + }, + responded: { + description: 'Finder services that returned results', + items: { + type: 'string', + }, + type: 'array', + }, + }, + required: ['queried', 'responded', 'failed'], + type: 'object', + }, + query: { + description: 'The original discovery query', + type: 'string', + }, + referrals: { + description: 'Informational referrals to non-result resources', + items: { + additionalProperties: {}, + properties: { + identifier: { + type: 'string', + }, + type: { + type: 'string', + }, + url: { + type: 'string', + }, + }, + required: ['identifier', 'type', 'url'], + type: 'object', + }, + type: 'array', + }, + results: { + description: 'Ranked consolidated results, highest score first', + items: { + additionalProperties: false, + properties: { + description: { + description: 'Short description of the resource', + type: 'string', + }, + displayName: { + description: 'Human-readable name of the resource', + type: 'string', + }, + identifier: { + description: 'Stable URN identifier for the discovered resource', + type: 'string', + }, + publisher: { + description: 'Publisher domain parsed from the identifier', + type: 'string', + }, + resourceKind: { + description: 'Normalized resource kind for filtering/display (mcp-server, a2a-agent, skill, api, raw)', + enum: ['mcp-server', 'a2a-agent', 'skill', 'api', 'raw'], + type: 'string', + }, + score: { + description: + 'Finder-provided relevance score, higher is better; not a trust, quality, or safety rating', + type: 'number', + }, + sources: { + description: 'Finder base URLs that returned this result', + items: { + type: 'string', + }, + type: 'array', + }, + type: { + description: + 'Raw ARD resource MIME type (e.g. application/mcp-server+json, application/a2a-agent-card+json, application/ai-skill)', type: 'string', }, url: { - description: 'URL', + description: 'URL to access or install the resource', type: 'string', }, }, - required: ['url'], - type: 'object', + required: ['identifier', 'displayName', 'type', 'resourceKind', 'url', 'score', 'sources'], + type: 'object', + }, + type: 'array', + }, + }, + required: ['query', 'finders', 'results', 'referrals'], + type: 'object', + }, + }, + 'you-finance': { + inputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + properties: { + input: { + description: + 'The finance research question requiring in-depth investigation of financial data, SEC filings, earnings, and company metrics.', + maxLength: 40000, + minLength: 1, + type: 'string', + }, + research_effort: { + default: 'deep', + description: + 'Controls how much time and effort the Finance Research API spends on your question. deep: thorough (default), exhaustive: most comprehensive.', + enum: ['deep', 'exhaustive'], + type: 'string', + }, + }, + required: ['input'], + type: 'object', + }, + outputSchema: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + properties: { + output: { + additionalProperties: false, + description: 'The research output containing the answer and sources', + properties: { + content: { + description: 'Comprehensive response with inline citations, formatted in Markdown', + type: 'string', + }, + content_type: { + description: 'The format of the content field', + enum: ['text'], + type: 'string', + }, + sources: { + description: 'List of sources used to generate the answer', + items: { + additionalProperties: false, + properties: { + snippets: { + description: 'Relevant excerpts from the source page used in generating the answer', + items: { + type: 'string', + }, + type: 'array', + }, + title: { + description: 'Source webpage title', + type: 'string', + }, + url: { + description: 'Source webpage URL', + type: 'string', + }, + }, + required: ['url'], + type: 'object', + }, + type: 'array', + }, }, - type: 'array', + required: ['content', 'content_type', 'sources'], + type: 'object', }, }, required: ['output'], @@ -168,8 +608,14 @@ export const API_TOOL_SCHEMAS = { }, 'you-research': { inputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', properties: { + background: { + default: false, + description: + 'When true, queue a research task and return a task handle immediately instead of waiting for the result inline. Defaults to synchronous.', + type: 'boolean', + }, input: { description: 'The research question or complex query requiring in-depth investigation and multi-step reasoning. Maximum length: 40,000 characters.', @@ -177,32 +623,141 @@ export const API_TOOL_SCHEMAS = { minLength: 1, type: 'string', }, + output_schema: { + additionalProperties: {}, + description: + 'Beta. Requests structured JSON output in output.content using a supported JSON Schema subset. Supported only with research_effort standard, deep, exhaustive, and frontier. Sending with lite returns 422.', + propertyNames: { + type: 'string', + }, + type: 'object', + }, research_effort: { default: 'standard', description: - 'Controls how much time and effort the Research API spends on your question. lite: fast answers, standard: balanced (default), deep: thorough, exhaustive: most comprehensive.', - enum: ['lite', 'standard', 'deep', 'exhaustive'], + 'Controls how much time and effort the Research API spends on your question. lite: fast answers, standard: balanced (default), deep: thorough, exhaustive: most comprehensive, frontier: long-running deep research.', + enum: ['lite', 'standard', 'deep', 'exhaustive', 'frontier'], type: 'string', }, + source_control: { + anyOf: [ + { + properties: { + boost_domains: { + description: 'Must be omitted when include_domains is set.', + items: { + type: 'string', + }, + maxItems: 0, + type: 'array', + }, + country: { + description: 'ISO 3166-1 alpha-2 country code to geographically focus web results.', + type: 'string', + }, + exclude_domains: { + description: 'Must be omitted when include_domains is set.', + items: { + type: 'string', + }, + maxItems: 0, + type: 'array', + }, + freshness: { + description: 'Filter results by recency: day, week, month, year, or YYYY-MM-DDtoYYYY-MM-DD.', + type: 'string', + }, + include_domains: { + description: + 'Only return results from these domains. Max 500. Cannot be used with exclude_domains or boost_domains.', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + }, + required: ['include_domains'], + type: 'object', + }, + { + properties: { + boost_domains: { + description: + 'Boost results from these domains without excluding other domains. Max 500. Cannot be used with include_domains.', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + country: { + description: 'ISO 3166-1 alpha-2 country code to geographically focus web results.', + type: 'string', + }, + exclude_domains: { + description: + 'Never return results from these domains. Max 500. Also blocks the research agent from visiting pages on those domains.', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, + freshness: { + description: 'Filter results by recency: day, week, month, year, or YYYY-MM-DDtoYYYY-MM-DD.', + type: 'string', + }, + include_domains: { + description: 'Must be omitted when exclude_domains or boost_domains is set.', + items: { + type: 'string', + }, + maxItems: 0, + type: 'array', + }, + }, + type: 'object', + }, + ], + description: + 'Beta. Controls which web sources the research agent searches and visits. include_domains and exclude_domains cannot be used together.', + }, }, required: ['input'], type: 'object', }, outputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', additionalProperties: false, properties: { + created_at: { + description: 'When the task was created, in RFC 3339 format', + type: 'string', + }, output: { additionalProperties: false, description: 'The research output containing the answer and sources', properties: { content: { - description: 'Comprehensive response with inline citations, formatted in Markdown', - type: 'string', + anyOf: [ + { + type: 'string', + }, + { + additionalProperties: {}, + propertyNames: { + type: 'string', + }, + type: 'object', + }, + ], + description: + 'Comprehensive response with inline citations. When content_type is "text", this is a Markdown string with numbered citations. When content_type is "object", this is a structured JSON object matching the requested output_schema.', }, content_type: { description: 'The format of the content field', - enum: ['text'], + enum: ['text', 'object'], type: 'string', }, sources: { @@ -235,16 +790,50 @@ export const API_TOOL_SCHEMAS = { required: ['content', 'content_type', 'sources'], type: 'object', }, + status: { + description: 'The current status of the background research task', + enum: ['queued', 'running', 'completed', 'failed', 'cancelled'], + type: 'string', + }, + stream_url: { + description: 'The URL path for the Server-Sent Events stream for this task', + type: 'string', + }, + task_id: { + description: 'Unique identifier for the background research task', + type: 'string', + }, + type: { + const: 'research', + description: 'The task type', + type: 'string', + }, + warnings: { + description: 'Warnings generated during research', + items: { + type: 'string', + }, + type: 'array', + }, }, - required: ['output'], type: 'object', }, }, 'you-search': { inputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', properties: { + boost_domains: { + description: + 'Domains to boost in search ranking (up to 500). Can combine with exclude_domains, but cannot combine with include_domains.', + items: { + type: 'string', + }, + maxItems: 500, + type: 'array', + }, count: { + default: 10, description: 'Max results per section', maximum: 100, minimum: 1, @@ -293,6 +882,7 @@ export const API_TOOL_SCHEMAS = { type: 'string', }, crawl_timeout: { + default: 10, description: 'Crawl timeout in seconds (1-60)', maximum: 60, minimum: 1, @@ -306,6 +896,36 @@ export const API_TOOL_SCHEMAS = { maxItems: 500, type: 'array', }, + extraction: { + additionalProperties: false, + description: + 'Ask for content to be extracted from each result. Omit for a plain search that returns snippets only.', + properties: { + extraction_mode: { + description: + 'Which kind of extraction to run. "highlights" returns query-relevant passages; "full_page" crawls each result.', + enum: ['highlights', 'full_page'], + type: 'string', + }, + full_page: { + additionalProperties: false, + description: 'Tuning for extraction_mode: "full_page"', + properties: { + extraction_formats: { + description: 'Content formats to return, one or both of "markdown" and "html"', + items: { + enum: ['html', 'markdown'], + type: 'string', + }, + type: 'array', + }, + }, + type: 'object', + }, + }, + required: ['extraction_mode'], + type: 'object', + }, freshness: { description: 'day/week/month/year or YYYY-MM-DDtoYYYY-MM-DD', type: 'string', @@ -319,6 +939,7 @@ export const API_TOOL_SCHEMAS = { type: 'array', }, language: { + default: 'EN', description: 'Language code (BCP 47 format)', enum: [ 'AR', @@ -375,19 +996,6 @@ export const API_TOOL_SCHEMAS = { ], type: 'string', }, - livecrawl: { - description: 'Live-crawl sections for full content', - enum: ['web', 'news', 'all'], - type: 'string', - }, - livecrawl_formats: { - description: 'Formats for crawled content', - items: { - enum: ['html', 'markdown'], - type: 'string', - }, - type: 'array', - }, offset: { description: 'Pagination offset', maximum: 9, @@ -396,7 +1004,7 @@ export const API_TOOL_SCHEMAS = { }, query: { description: - 'Search query. Supports operators: site:domain.com (domain filter), filetype:pdf (file type), +term (include), -term (exclude), AND/OR/NOT (boolean logic), lang:en (language). Example: "machine learning (Python OR PyTorch) -TensorFlow filetype:pdf"', + 'Concise keyword query, 3–6 words. ALLOWED search operators: `"exact phrase"`, `intitle:term`, `inbody:term`, `-term`, `+term`, and `AND`/`OR` (MUST be uppercase; never mix `AND` with `OR`). DO NOT use `site:`, `lang:`, `loc:`, `filetype:`, `ext:`, `inpage:`, or `NOT`. For domain, language, country, or recency filtering you MUST use the tool\'s other input parameters.', minLength: 1, type: 'string', }, @@ -410,18 +1018,18 @@ export const API_TOOL_SCHEMAS = { type: 'object', }, outputSchema: { - $schema: 'http://json-schema.org/draft-07/schema#', + $schema: 'https://json-schema.org/draft/2020-12/schema', additionalProperties: false, properties: { metadata: { additionalProperties: false, properties: { latency: { - description: 'Latency in seconds', + description: 'Search latency in seconds', type: 'number', }, query: { - description: 'Query', + description: 'The search query that was submitted', type: 'string', }, search_uuid: { @@ -440,7 +1048,7 @@ export const API_TOOL_SCHEMAS = { properties: { contents: { additionalProperties: false, - description: 'Live-crawled page content', + description: 'Extracted page content', properties: { html: { description: 'Full HTML content', @@ -450,15 +1058,30 @@ export const API_TOOL_SCHEMAS = { description: 'Full Markdown content', type: 'string', }, + metadata: { + additionalProperties: false, + description: 'JSON-LD and OpenGraph metadata about the page', + properties: { + favicon_url: { + description: 'Favicon URL of the page domain', + type: 'string', + }, + site_name: { + description: 'OpenGraph site name of the page', + type: 'string', + }, + }, + type: 'object', + }, }, type: 'object', }, description: { - description: 'Description', + description: 'Short description of the news result', type: 'string', }, page_age: { - description: 'Publication timestamp', + description: 'Publication date of the article', type: 'string', }, thumbnail_url: { @@ -466,11 +1089,11 @@ export const API_TOOL_SCHEMAS = { type: 'string', }, title: { - description: 'Title', + description: 'Title of the news result', type: 'string', }, url: { - description: 'URL', + description: 'URL of the news result', type: 'string', }, }, @@ -482,17 +1105,17 @@ export const API_TOOL_SCHEMAS = { items: { additionalProperties: false, properties: { - authors: { - description: 'Authors', - items: { - type: 'string', - }, - type: 'array', - }, contents: { additionalProperties: false, - description: 'Live-crawled page content', + description: 'Extracted page content', properties: { + highlights: { + description: 'Query-relevant passages from the page', + items: { + type: 'string', + }, + type: 'array', + }, html: { description: 'Full HTML content', type: 'string', @@ -501,11 +1124,26 @@ export const API_TOOL_SCHEMAS = { description: 'Full Markdown content', type: 'string', }, + metadata: { + additionalProperties: false, + description: 'JSON-LD and OpenGraph metadata about the page', + properties: { + favicon_url: { + description: 'Favicon URL of the page domain', + type: 'string', + }, + site_name: { + description: 'OpenGraph site name of the page', + type: 'string', + }, + }, + type: 'object', + }, }, type: 'object', }, description: { - description: 'Description', + description: 'Short description of the search result', type: 'string', }, favicon_url: { @@ -513,11 +1151,11 @@ export const API_TOOL_SCHEMAS = { type: 'string', }, page_age: { - description: 'Publication timestamp', + description: 'Publication date of the page', type: 'string', }, snippets: { - description: 'Content snippets', + description: 'Query-relevant text excerpts from the page', items: { type: 'string', }, @@ -528,11 +1166,11 @@ export const API_TOOL_SCHEMAS = { type: 'string', }, title: { - description: 'Title', + description: 'Title of the search result', type: 'string', }, url: { - description: 'URL', + description: 'URL of the search result', type: 'string', }, }, @@ -550,6 +1188,114 @@ export const API_TOOL_SCHEMAS = { }, } as const +export type YouAnswerInput = { + boost_domains?: Array + country?: + | 'AR' + | 'AU' + | 'AT' + | 'BE' + | 'BR' + | 'CA' + | 'CL' + | 'DK' + | 'FI' + | 'FR' + | 'DE' + | 'HK' + | 'IN' + | 'ID' + | 'IT' + | 'JP' + | 'KR' + | 'MY' + | 'MX' + | 'NL' + | 'NZ' + | 'NO' + | 'CN' + | 'PL' + | 'PT' + | 'PH' + | 'RU' + | 'SA' + | 'ZA' + | 'ES' + | 'SE' + | 'CH' + | 'TW' + | 'TR' + | 'GB' + | 'US' + exclude_domains?: Array + freshness?: string + include_domains?: Array + language?: + | 'AR' + | 'EU' + | 'BN' + | 'BG' + | 'CA' + | 'HR' + | 'CS' + | 'DA' + | 'NL' + | 'EN' + | 'EN-GB' + | 'ET' + | 'FI' + | 'FR' + | 'GL' + | 'DE' + | 'EL' + | 'GU' + | 'HE' + | 'HI' + | 'HU' + | 'IS' + | 'IT' + | 'KN' + | 'KO' + | 'LV' + | 'LT' + | 'MS' + | 'ML' + | 'MR' + | 'NB' + | 'PL' + | 'PA' + | 'RO' + | 'RU' + | 'SR' + | 'SK' + | 'SL' + | 'ES' + | 'SV' + | 'TA' + | 'TE' + | 'TH' + | 'TR' + | 'UK' + | 'VI' + query: string +} + +export type YouAnswerOutput = { + answer: string + citations: Array<{ + excerpts: Array + source: string + }> + results: { + web: Array<{ + page_age?: string + snippets?: Array + title: string + url: string + }> + } +} + export type YouBalanceInput = Record export type YouBalanceOutput = { @@ -564,8 +1310,8 @@ export type YouBalanceOutput = { export type YouContentsInput = { crawl_timeout?: number - format?: 'markdown' | 'html' formats?: Array<'markdown' | 'html' | 'metadata'> + max_age?: number | null urls: Array } @@ -582,12 +1328,45 @@ export type YouContentsOutput = { }> } -export type YouResearchInput = { +export type YouDiscoverInput = { + finder?: 'github' | 'huggingface' | 'all' + finder_url?: string + limit?: number + query: string +} + +export type YouDiscoverOutput = { + finders: { + failed: Array + queried: Array + responded: Array + } + query: string + referrals: Array<{ + identifier: string + type: string + url: string + [key: string]: Record | string + }> + results: Array<{ + description?: string + displayName: string + identifier: string + publisher?: string + resourceKind: 'mcp-server' | 'a2a-agent' | 'skill' | 'api' | 'raw' + score: number + sources: Array + type: string + url: string + }> +} + +export type YouFinanceInput = { input: string - research_effort?: 'lite' | 'standard' | 'deep' | 'exhaustive' + research_effort?: 'deep' | 'exhaustive' } -export type YouResearchOutput = { +export type YouFinanceOutput = { output: { content: string content_type: 'text' @@ -599,7 +1378,54 @@ export type YouResearchOutput = { } } +export type YouResearchInput = { + background?: boolean + input: string + output_schema?: { + [key: string]: Record + } + research_effort?: 'lite' | 'standard' | 'deep' | 'exhaustive' | 'frontier' + source_control?: + | { + boost_domains?: Array + country?: string + exclude_domains?: Array + freshness?: string + include_domains: Array + } + | { + boost_domains?: Array + country?: string + exclude_domains?: Array + freshness?: string + include_domains?: Array + } +} + +export type YouResearchOutput = { + created_at?: string + output?: { + content: + | string + | { + [key: string]: Record + } + content_type: 'text' | 'object' + sources: Array<{ + snippets?: Array + title?: string + url: string + }> + } + status?: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled' + stream_url?: string + task_id?: string + type?: 'research' + warnings?: Array +} + export type YouSearchInput = { + boost_domains?: Array count?: number country?: | 'AR' @@ -640,6 +1466,12 @@ export type YouSearchInput = { | 'US' crawl_timeout?: number exclude_domains?: Array + extraction?: { + extraction_mode: 'highlights' | 'full_page' + full_page?: { + extraction_formats?: Array<'html' | 'markdown'> + } + } freshness?: string include_domains?: Array language?: @@ -694,8 +1526,6 @@ export type YouSearchInput = { | 'TR' | 'UK' | 'VI' - livecrawl?: 'web' | 'news' | 'all' - livecrawl_formats?: Array<'html' | 'markdown'> offset?: number query: string safesearch?: 'off' | 'moderate' | 'strict' @@ -712,6 +1542,10 @@ export type YouSearchOutput = { contents?: { html?: string markdown?: string + metadata?: { + favicon_url?: string + site_name?: string + } } description?: string page_age?: string @@ -720,10 +1554,14 @@ export type YouSearchOutput = { url?: string }> web?: Array<{ - authors?: Array contents?: { + highlights?: Array html?: string markdown?: string + metadata?: { + favicon_url?: string + site_name?: string + } } description?: string favicon_url?: string @@ -739,15 +1577,21 @@ export type YouSearchOutput = { export type KnownToolName = keyof typeof API_TOOL_SCHEMAS type KnownToolInputMap = { + 'you-answer': YouAnswerInput 'you-balance': YouBalanceInput 'you-contents': YouContentsInput + 'you-discover': YouDiscoverInput + 'you-finance': YouFinanceInput 'you-research': YouResearchInput 'you-search': YouSearchInput } type KnownToolOutputMap = { + 'you-answer': YouAnswerOutput 'you-balance': YouBalanceOutput 'you-contents': YouContentsOutput + 'you-discover': YouDiscoverOutput + 'you-finance': YouFinanceOutput 'you-research': YouResearchOutput 'you-search': YouSearchOutput } diff --git a/packages/cli/package.json b/packages/cli/package.json index e72c44a..1b46791 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,6 +49,9 @@ "test:watch": "bun test --watch" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.29.0" + "@modelcontextprotocol/client": "^2.0.0" + }, + "devDependencies": { + "@modelcontextprotocol/server": "^2.0.0" } } diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 3e9ae65..1332c2e 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -1,7 +1,6 @@ #!/usr/bin/env node import { parseArgs } from 'node:util' -import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' +import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' import packageJson from '../package.json' with { type: 'json' } import { TOOL_CONTRACT } from './tools.ts' diff --git a/packages/cli/src/tests/cli.spec.ts b/packages/cli/src/tests/cli.spec.ts index f839a2e..8eb0316 100644 --- a/packages/cli/src/tests/cli.spec.ts +++ b/packages/cli/src/tests/cli.spec.ts @@ -87,9 +87,9 @@ describe('ydc tools', () => { expect(exitCode).toBe(0) expect(stderr).toBe('') expect(JSON.parse(stdout)).toEqual({ - contractHash: 'dad771e3d324f1020f3af8f2ea506844be1dea559af3e6f65bb9e7febb65286a', - surfaceVersion: '2026.07.23', - tools: ['you-balance', 'you-contents', 'you-discover', 'you-finance', 'you-research', 'you-search'], + contractHash: 'e553cd7ce747975dd01b60516476b7c74d3464a8f1e350b8b67e0b2bc05564e2', + surfaceVersion: '2026.08.20', + tools: ['you-answer', 'you-balance', 'you-contents', 'you-discover', 'you-finance', 'you-research', 'you-search'], }) }) }) diff --git a/packages/cli/src/tests/mcp-fetch.preload.ts b/packages/cli/src/tests/mcp-fetch.preload.ts index ec4a08d..18b1098 100644 --- a/packages/cli/src/tests/mcp-fetch.preload.ts +++ b/packages/cli/src/tests/mcp-fetch.preload.ts @@ -1,32 +1,20 @@ -import { randomUUID } from 'node:crypto' import { appendFileSync } from 'node:fs' -import { Server } from '@modelcontextprotocol/sdk/server/index.js' -import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js' -import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js' +import { createMcpHandler, fromJsonSchema, type JsonSchemaType, McpServer } from '@modelcontextprotocol/server' + +type ToolSchema = { + properties?: Record + required?: string[] + type: 'object' +} const tools = JSON.parse(process.env.YDC_TEST_MCP_TOOLS ?? '[]') as Array<{ - inputSchema: { - properties?: Record - required?: string[] - type: 'object' - } + inputSchema: ToolSchema name: string - outputSchema?: { - properties?: Record - required?: string[] - type: 'object' - } + outputSchema?: ToolSchema }> -const transports = new Map< - string, - { - server: Server - transport: WebStandardStreamableHTTPServerTransport - } ->() const createTestServer = () => { - const server = new Server( + const mcp = new McpServer( { name: 'test-cli-mcp-server', version: '1.0.0', @@ -40,34 +28,42 @@ const createTestServer = () => { }, ) - server.setRequestHandler(ListToolsRequestSchema, async () => ({ - tools, - })) - server.setRequestHandler(CallToolRequestSchema, async (request) => { - const query = request.params.arguments?.query - - if (query === 'tool-error') { - return { - content: [{ text: 'Error: tool failed', type: 'text' as const }], - isError: true, - } - } - - if (query === 'missing-structured-content') { - return { - content: [{ text: 'No results found.', type: 'text' as const }], - } - } - - return { - content: [{ text: JSON.stringify({ ok: true }), type: 'text' as const }], - structuredContent: { ok: true }, - } - }) + for (const tool of tools) { + mcp.registerTool( + tool.name, + { + inputSchema: fromJsonSchema(tool.inputSchema as JsonSchemaType), + outputSchema: tool.outputSchema ? fromJsonSchema(tool.outputSchema as JsonSchemaType) : undefined, + }, + async (args) => { + const query = (args as { query?: string } | undefined)?.query + + if (query === 'tool-error') { + return { + content: [{ text: 'Error: tool failed', type: 'text' as const }], + isError: true, + } + } + + if (query === 'missing-structured-content') { + return { + content: [{ text: 'No results found.', type: 'text' as const }], + } + } + + return { + content: [{ text: JSON.stringify({ ok: true }), type: 'text' as const }], + structuredContent: { ok: true }, + } + }, + ) + } - return server + return mcp } +const handler = createMcpHandler(createTestServer, { legacy: 'stateless' }) + const mockedFetch: typeof fetch = Object.assign( async (input: string | URL | Request, init?: RequestInit | BunFetchRequestInit) => { const request = @@ -75,7 +71,6 @@ const mockedFetch: typeof fetch = Object.assign( ? new Request(input, init) : new Request(input instanceof URL ? input.toString() : input, init) const traceFile = process.env.YDC_TEST_MCP_TRACE_FILE - const sessionId = request.headers.get('mcp-session-id') if (traceFile) { const body = parseJsonBody(await request.clone().text()) @@ -91,31 +86,7 @@ const mockedFetch: typeof fetch = Object.assign( ) } - if (sessionId) { - const activeTransport = transports.get(sessionId)?.transport - - if (activeTransport) { - return activeTransport.handleRequest(request) - } - } - - const server = createTestServer() - let transport!: WebStandardStreamableHTTPServerTransport - - transport = new WebStandardStreamableHTTPServerTransport({ - enableJsonResponse: true, - onsessionclosed: (closedSessionId) => { - transports.delete(closedSessionId) - }, - onsessioninitialized: (initializedSessionId) => { - transports.set(initializedSessionId, { server, transport }) - }, - sessionIdGenerator: () => randomUUID(), - }) - - await server.connect(transport) - - return transport.handleRequest(request) + return handler.fetch(request) }, { preconnect: globalThis.fetch.preconnect.bind(globalThis.fetch), diff --git a/packages/cli/src/tools.ts b/packages/cli/src/tools.ts index f8b2ecf..2777220 100644 --- a/packages/cli/src/tools.ts +++ b/packages/cli/src/tools.ts @@ -1,8 +1,11 @@ // This file is generated. Do not edit by hand. export const TOOL_CONTRACT = { - contractHash: 'dad771e3d324f1020f3af8f2ea506844be1dea559af3e6f65bb9e7febb65286a', - surfaceVersion: '2026.07.23', + contractHash: 'e553cd7ce747975dd01b60516476b7c74d3464a8f1e350b8b67e0b2bc05564e2', + surfaceVersion: '2026.08.20', tools: [ + { + name: 'you-answer', + }, { name: 'you-balance', }, diff --git a/packages/langchain/README.md b/packages/langchain/README.md index dd9b6fe..8b3ef65 100644 --- a/packages/langchain/README.md +++ b/packages/langchain/README.md @@ -2,7 +2,7 @@ Give your LangChain agents **real-time access to the web** through the hosted You.com MCP server. This package exposes an async `createYouClient()` helper that connects to `https://api.you.com/mcp` via `@langchain/mcp-adapters` and returns the underlying LangChain MCP client. -By default, `await client.getTools()` resolves to the default hosted tool set: `you-search`, `you-contents`, `you-research`, `you-balance`, and `you-discover`. To use `you-finance`, request it explicitly in the `tools` parameter. +By default, `await client.getTools()` resolves to the default hosted tool set: `you-search`, `you-contents`, `you-research`, `you-balance`, `you-discover`, and `you-answer`. To use `you-finance`, request it explicitly in the `tools` parameter. ## Features @@ -93,7 +93,7 @@ const result = await agent.invoke({ console.log(result.structuredResponse); ``` -`createYouClient()` returns the underlying MCP client. Call `await client.getTools()` to resolve the default hosted tool set (`you-search`, `you-contents`, `you-research`, `you-balance`, and `you-discover`) unless you scope it with `tools`, and call `await client.close()` when finished. +`createYouClient()` returns the underlying MCP client. Call `await client.getTools()` to resolve the default hosted tool set (`you-search`, `you-contents`, `you-research`, `you-balance`, `you-discover`, and `you-answer`) unless you scope it with `tools`, and call `await client.close()` when finished. Set your You.com API key as an environment variable: @@ -217,6 +217,7 @@ The default hosted tool set is: - `you-research` - `you-balance` - `you-discover` +- `you-answer` Optional tools: @@ -228,7 +229,7 @@ Optional tools: `profile` selects a hosted server profile. `tools` scopes which tools are visible. If `profile` is provided, it takes precedence over `tools`. -Today, `profile: 'free'` is a search-only mode. It overrides `tools` and does not expose `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, or livecrawl. +Today, `profile: 'free'` is a search-only mode. It overrides `tools` and does not expose `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, `you-answer`, or livecrawl. ### Using different model providers @@ -281,6 +282,7 @@ Default tools: - `you-research` - `you-balance` - `you-discover` +- `you-answer` Optional tools: diff --git a/packages/langchain/package.json b/packages/langchain/package.json index 5274f12..c5c4809 100644 --- a/packages/langchain/package.json +++ b/packages/langchain/package.json @@ -59,17 +59,16 @@ }, "types": "./dist/main.d.ts", "dependencies": { - "@langchain/mcp-adapters": "^1.1.3", - "@modelcontextprotocol/sdk": "^1.29.0" + "@langchain/mcp-adapters": "^1.1.4" }, "peerDependencies": { "langchain": ">=1.0.0" }, "devDependencies": { - "@langchain/anthropic": "^1.0.0", - "@langchain/core": "^1.1.26", - "@langchain/langgraph": "^1.2.1", + "@langchain/anthropic": "^1.5.7", + "@langchain/core": "^1.2.9", + "@langchain/langgraph": "^1.4.12", "@types/bun": "latest", - "langchain": "^1.2.24" + "langchain": "^1.5.10" } } diff --git a/packages/mcp/README.md b/packages/mcp/README.md index 2c82481..a3f024f 100644 --- a/packages/mcp/README.md +++ b/packages/mcp/README.md @@ -37,6 +37,7 @@ The hosted MCP capability surface includes: - `you-finance` - `you-balance` - `you-discover` +- `you-answer` The default hosted MCP URL exposes the default tool set: @@ -45,12 +46,13 @@ The default hosted MCP URL exposes the default tool set: - `you-research` - `you-balance` - `you-discover` +- `you-answer` `you-finance` is not included in the default tool set. Request it explicitly with `tools`. `tools` scopes the visible tool set. -Today, `profile=free` is a search-only mode. It overrides `tools` and exposes only `you-search` (not `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, or livecrawl). +Today, `profile=free` is a search-only mode. It overrides `tools` and exposes only `you-search` (not `you-contents`, `you-research`, `you-finance`, `you-balance`, `you-discover`, `you-answer`, or livecrawl). Examples: diff --git a/packages/mcp/mcp-inspector.json b/packages/mcp/mcp-inspector.json deleted file mode 100644 index 360b9f3..0000000 --- a/packages/mcp/mcp-inspector.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "mcpServers": { - "youdotcom": { - "command": "bun", - "args": ["src/stdio-bridge.ts"] - } - } -} diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 0ef8d73..2513cbc 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -41,17 +41,16 @@ "check:write": "biome check --write && bun run format:package", "dev": "bun src/stdio-bridge.ts", "format:package": "format-package --write", - "inspector": "test -n \"$YDC_API_KEY\" || (echo 'YDC_API_KEY is not set' && exit 1); mcp-inspector --config mcp-inspector.json -e YDC_API_KEY=$YDC_API_KEY", "prepublishOnly": "bun run build", "test": "bun test", "test:watch": "bun test --watch" }, "mcpName": "io.github.youdotcom-oss/mcp", "dependencies": { - "@modelcontextprotocol/sdk": "^1.28.0" + "@modelcontextprotocol/client": "^2.0.0", + "@modelcontextprotocol/server": "^2.0.0" }, "devDependencies": { - "@modelcontextprotocol/inspector": "0.21.2", "@types/bun": "latest" } } diff --git a/packages/mcp/src/bridge.ts b/packages/mcp/src/bridge.ts index 09a6c98..17c895f 100644 --- a/packages/mcp/src/bridge.ts +++ b/packages/mcp/src/bridge.ts @@ -1,4 +1,4 @@ -import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js' +import type { Transport } from '@modelcontextprotocol/client' export const createBridge = (stdio: Transport, http: Transport): void => { let closing = false diff --git a/packages/mcp/src/stdio-bridge.ts b/packages/mcp/src/stdio-bridge.ts index 25db9ee..3bdafe4 100644 --- a/packages/mcp/src/stdio-bridge.ts +++ b/packages/mcp/src/stdio-bridge.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' -import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/client' +import { StdioServerTransport } from '@modelcontextprotocol/server/stdio' import { createBridge } from './bridge.ts' const url = new URL('https://api.you.com/mcp') diff --git a/packages/mcp/src/tests/bridge.spec.ts b/packages/mcp/src/tests/bridge.spec.ts index 7b69c88..98e4da6 100644 --- a/packages/mcp/src/tests/bridge.spec.ts +++ b/packages/mcp/src/tests/bridge.spec.ts @@ -2,9 +2,8 @@ import { afterEach, describe, expect, mock, test } from 'bun:test' import { randomUUID } from 'node:crypto' import { tmpdir } from 'node:os' import { join } from 'node:path' -import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js' -import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js' +import { Client, type JSONRPCMessage } from '@modelcontextprotocol/client' +import { StdioClientTransport } from '@modelcontextprotocol/client/stdio' import { createBridge } from '../bridge.ts' type MockTransport = { diff --git a/scripts/classify-api-schema-change.ts b/scripts/classify-api-schema-change.ts index 7f21232..ab13337 100644 --- a/scripts/classify-api-schema-change.ts +++ b/scripts/classify-api-schema-change.ts @@ -1,7 +1,6 @@ import { readFileSync } from 'node:fs' import { resolve } from 'node:path' -import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' +import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' const BASE_MCP_SERVER_URL = 'https://api.you.com/mcp' const DEFAULT_SCHEMA_PATH = resolve(import.meta.dir, '..', 'packages', 'api', 'src', 'tool-schemas.ts') diff --git a/scripts/tests/update-api-schemas.spec.ts b/scripts/tests/update-api-schemas.spec.ts index 73cd429..4f584b9 100644 --- a/scripts/tests/update-api-schemas.spec.ts +++ b/scripts/tests/update-api-schemas.spec.ts @@ -4,6 +4,12 @@ import { resolve } from 'node:path' import { renderApiSchemas } from '../update-api-schemas.ts' const basePayload = { + 'you-answer': { + inputSchema: { + properties: {}, + type: 'object', + }, + }, 'you-balance': { inputSchema: { properties: {}, @@ -82,6 +88,18 @@ const basePayload = { type: 'object', }, }, + 'you-discover': { + inputSchema: { + properties: {}, + type: 'object', + }, + }, + 'you-finance': { + inputSchema: { + properties: {}, + type: 'object', + }, + }, 'you-search': { inputSchema: { properties: { diff --git a/scripts/update-api-schemas.ts b/scripts/update-api-schemas.ts index 552c5c5..e419bed 100644 --- a/scripts/update-api-schemas.ts +++ b/scripts/update-api-schemas.ts @@ -2,8 +2,7 @@ import { createHash } from 'node:crypto' import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join, resolve } from 'node:path' -import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js' +import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' const BASE_MCP_SERVER_URL = 'https://api.you.com/mcp' const DEFAULT_OUTPUT_PATH = resolve(import.meta.dir, '..', 'packages', 'api', 'src', 'tool-schemas.ts') @@ -33,7 +32,15 @@ type ToolSchema = { type ToolSchemaPayload = Record -const knownTools = ['you-balance', 'you-contents', 'you-research', 'you-search'] as const +const knownTools = [ + 'you-answer', + 'you-balance', + 'you-contents', + 'you-discover', + 'you-finance', + 'you-research', + 'you-search', +] as const const toTypeScriptString = (value: string) => `'${JSON.stringify(value).slice(1, -1).replaceAll("'", "\\'")}'` @@ -155,7 +162,22 @@ const objectSchemaToType = (schema: JsonSchemaObject, rootSchema: JsonSchemaObje ) if (schema.additionalProperties && typeof schema.additionalProperties === 'object') { - members.push(`[key: string]: ${schemaToType(schema.additionalProperties, rootSchema)}`) + const additionalType = schemaToType(schema.additionalProperties, rootSchema) + + if (properties.length > 0) { + // TypeScript requires every explicit property to be assignable to the + // index signature's value type. Union the `additionalProperties` type + // with each explicit property type so primitives (e.g. `string`) stay + // assignable alongside an object-shaped `additionalProperties`. Fall + // back to `unknown` if any member is multi-line (a nested object type), + // since a multi-line union would break the single-line index signature. + const propertyTypes = properties.map(([, value]) => schemaToType(value, rootSchema)) + const unionTypes = [...new Set([additionalType, ...propertyTypes])] + const indexType = unionTypes.some((type) => type.includes('\n')) ? 'unknown' : unionTypes.join(' | ') + members.push(`[key: string]: ${indexType}`) + } else { + members.push(`[key: string]: ${additionalType}`) + } } else if (properties.length === 0 && schema.additionalProperties !== false) { return 'Record' } @@ -264,7 +286,13 @@ const formatGeneratedSource = async (source: string) => { const fetchApiSchemas = async (): Promise => { const apiKey = process.env.YDC_API_KEY const headers = apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined - const transport = new StreamableHTTPClientTransport(new URL(BASE_MCP_SERVER_URL), { + // The server's default tool set excludes `you-finance` (served via a separate + // route), so request every known tool explicitly. With no `profile`, the + // server's tool ceiling is the full `ALL_TOOLS` set, so this returns every + // known tool's schema in a single `listTools` call. + const url = new URL(BASE_MCP_SERVER_URL) + url.searchParams.set('tools', knownTools.join(',')) + const transport = new StreamableHTTPClientTransport(url, { requestInit: { headers, }, From 3430eeff77d12aa6c7897271310af9f4cc12ff16 Mon Sep 17 00:00:00 2001 From: Edward Irby Date: Thu, 20 Aug 2026 15:02:33 -0700 Subject: [PATCH 2/2] refactor(api): drop you-balance from typed surface and default known tools you-balance is now opt-in via the user's allow list rather than surfaced by default. Remove it from the api known-tools list, generated tool-schemas, re-exports, and test assertions. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- packages/api/src/main.ts | 2 - packages/api/src/tests/main.spec.ts | 4 +- packages/api/src/tool-schemas.ts | 56 +----------------------- scripts/tests/update-api-schemas.spec.ts | 38 +--------------- scripts/update-api-schemas.ts | 10 +---- 5 files changed, 6 insertions(+), 104 deletions(-) diff --git a/packages/api/src/main.ts b/packages/api/src/main.ts index 699690c..b5dbf3d 100644 --- a/packages/api/src/main.ts +++ b/packages/api/src/main.ts @@ -14,8 +14,6 @@ export type { KnownToolOutput, YouAnswerInput, YouAnswerOutput, - YouBalanceInput, - YouBalanceOutput, YouContentsInput, YouContentsOutput, YouDiscoverInput, diff --git a/packages/api/src/tests/main.spec.ts b/packages/api/src/tests/main.spec.ts index b4f42ed..b14604c 100644 --- a/packages/api/src/tests/main.spec.ts +++ b/packages/api/src/tests/main.spec.ts @@ -169,7 +169,7 @@ describe('createYouApi', () => { trace.every( ({ url }) => url === - 'https://api.you.com/mcp?tools=you-answer%2Cyou-balance%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', + 'https://api.you.com/mcp?tools=you-answer%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', ), ).toBe(true) expect(trace.every(({ headers }) => headers.authorization === 'Bearer config-key')).toBe(true) @@ -189,7 +189,7 @@ describe('createYouApi', () => { trace.every( ({ url }) => url === - 'https://api.you.com/mcp?tools=you-answer%2Cyou-balance%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', + 'https://api.you.com/mcp?tools=you-answer%2Cyou-contents%2Cyou-discover%2Cyou-finance%2Cyou-research%2Cyou-search', ), ).toBe(true) await you.close() diff --git a/packages/api/src/tool-schemas.ts b/packages/api/src/tool-schemas.ts index 7244177..3fbe605 100644 --- a/packages/api/src/tool-schemas.ts +++ b/packages/api/src/tool-schemas.ts @@ -1,5 +1,5 @@ // This file is generated. Do not edit by hand. -export const API_TOOL_SCHEMA_HASH = '6a34e1d43e2249641bb24f52357826b3a2fc5ac39d3920d344f87e538bc0eeed' +export const API_TOOL_SCHEMA_HASH = '15eb272d4e37ef1355c1c641128c9c7bfc4654209fe8e341cc1eae97f7f4bf55' export const API_TOOL_SCHEMAS = { 'you-answer': { @@ -212,46 +212,6 @@ export const API_TOOL_SCHEMAS = { type: 'object', }, }, - 'you-balance': { - inputSchema: { - properties: {}, - type: 'object', - }, - outputSchema: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - properties: { - data: { - additionalProperties: false, - properties: { - attributes: { - additionalProperties: false, - properties: { - balance: { - description: 'Remaining credit balance in cents. Divide by 100 to convert to USD.', - type: 'number', - }, - }, - required: ['balance'], - type: 'object', - }, - id: { - description: 'A hashed identifier for the billing entity (user or organization).', - type: 'string', - }, - type: { - description: 'The type of billing entity. Always "account".', - type: 'string', - }, - }, - required: ['type', 'id', 'attributes'], - type: 'object', - }, - }, - required: ['data'], - type: 'object', - }, - }, 'you-contents': { inputSchema: { $schema: 'https://json-schema.org/draft/2020-12/schema', @@ -1296,18 +1256,6 @@ export type YouAnswerOutput = { } } -export type YouBalanceInput = Record - -export type YouBalanceOutput = { - data: { - attributes: { - balance: number - } - id: string - type: string - } -} - export type YouContentsInput = { crawl_timeout?: number formats?: Array<'markdown' | 'html' | 'metadata'> @@ -1578,7 +1526,6 @@ export type KnownToolName = keyof typeof API_TOOL_SCHEMAS type KnownToolInputMap = { 'you-answer': YouAnswerInput - 'you-balance': YouBalanceInput 'you-contents': YouContentsInput 'you-discover': YouDiscoverInput 'you-finance': YouFinanceInput @@ -1588,7 +1535,6 @@ type KnownToolInputMap = { type KnownToolOutputMap = { 'you-answer': YouAnswerOutput - 'you-balance': YouBalanceOutput 'you-contents': YouContentsOutput 'you-discover': YouDiscoverOutput 'you-finance': YouFinanceOutput diff --git a/scripts/tests/update-api-schemas.spec.ts b/scripts/tests/update-api-schemas.spec.ts index 4f584b9..ada36ff 100644 --- a/scripts/tests/update-api-schemas.spec.ts +++ b/scripts/tests/update-api-schemas.spec.ts @@ -10,39 +10,6 @@ const basePayload = { type: 'object', }, }, - 'you-balance': { - inputSchema: { - properties: {}, - type: 'object', - }, - outputSchema: { - properties: { - data: { - properties: { - attributes: { - properties: { - balance: { - type: 'number', - }, - }, - required: ['balance'], - type: 'object', - }, - id: { - type: 'string', - }, - type: { - type: 'string', - }, - }, - required: ['type', 'id', 'attributes'], - type: 'object', - }, - }, - required: ['data'], - type: 'object', - }, - }, 'you-contents': { inputSchema: { properties: { @@ -128,9 +95,8 @@ describe('renderApiSchemas', () => { expect(output).toContain(`export const API_TOOL_SCHEMAS = {`) expect(output).toContain(`export type YouSearchInput = {`) expect(output).toContain(`query: string`) - expect(output).toContain(`export type YouBalanceInput = Record`) - expect(output).toContain(`export type YouBalanceOutput = {`) - expect(output).toContain(`balance: number`) + expect(output).toContain(`export type YouContentsInput = {`) + expect(output).toContain(`urls: Array`) expect(output).toContain(`export type KnownToolOutput = KnownToolOutputMap[T]`) }) }) diff --git a/scripts/update-api-schemas.ts b/scripts/update-api-schemas.ts index e419bed..6c3818d 100644 --- a/scripts/update-api-schemas.ts +++ b/scripts/update-api-schemas.ts @@ -32,15 +32,7 @@ type ToolSchema = { type ToolSchemaPayload = Record -const knownTools = [ - 'you-answer', - 'you-balance', - 'you-contents', - 'you-discover', - 'you-finance', - 'you-research', - 'you-search', -] as const +const knownTools = ['you-answer', 'you-contents', 'you-discover', 'you-finance', 'you-research', 'you-search'] as const const toTypeScriptString = (value: string) => `'${JSON.stringify(value).slice(1, -1).replaceAll("'", "\\'")}'`