diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fcd1e4..f71440a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @browserbasehq/mcp-server-browserbase +## 2.3.0 + +### Minor Changes + +- upgrade to stagehand v3 + ## 2.2.0 ### Minor Changes diff --git a/config.d.ts b/config.d.ts index 1b85dcc..9cb4d5f 100644 --- a/config.d.ts +++ b/config.d.ts @@ -1,4 +1,3 @@ -import type { Cookie } from "playwright-core"; import type { AvailableModelSchema } from "@browserbasehq/stagehand"; export type Config = { @@ -59,11 +58,6 @@ export type Config = { */ browserHeight?: number; }; - /** - * Cookies to inject into the Browserbase context - * Format: Array of cookie objects with name, value, domain, and optional path, expires, httpOnly, secure, sameSite - */ - cookies?: Cookie[]; /** * Server configuration for MCP transport layer * diff --git a/package.json b/package.json index a8532a3..fb43c7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@browserbasehq/mcp-server-browserbase", - "version": "2.2.0", + "version": "2.3.0", "description": "MCP server for AI web browser automation using Browserbase and Stagehand", "mcpName": "io.github.browserbase/mcp-server-browserbase", "license": "Apache-2.0", @@ -46,12 +46,11 @@ }, "dependencies": { "@browserbasehq/sdk": "^2.6.0", - "@browserbasehq/stagehand": "^2.5.2", + "@browserbasehq/stagehand": "^3.0.1", "@mcp-ui/server": "^5.10.0", "@modelcontextprotocol/sdk": "^1.13.1", "commander": "^14.0.0", "dotenv": "^16.4.6", - "mcpvals": "^0.0.3", "zod": "^3.25.67" }, "devDependencies": { @@ -64,7 +63,7 @@ "globals": "^16.2.0", "husky": "^9.1.7", "lint-staged": "^16.1.2", - "playwright-core": "^1.53.2", + "mcpvals": "^0.4.0", "prettier": "^3.6.1", "shx": "^0.3.4", "tsx": "^4.20.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8587ca..18da851 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,8 +11,8 @@ importers: specifier: ^2.6.0 version: 2.6.0 "@browserbasehq/stagehand": - specifier: ^2.5.2 - version: 2.5.2(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(react@19.1.0)(zod@3.25.76) + specifier: ^3.0.1 + version: 3.0.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(zod@3.25.76) "@mcp-ui/server": specifier: ^5.10.0 version: 5.10.0 @@ -25,9 +25,6 @@ importers: dotenv: specifier: ^16.4.6 version: 16.6.1 - mcpvals: - specifier: ^0.0.3 - version: 0.0.3(react@19.1.0) zod: specifier: ^3.25.67 version: 3.25.76 @@ -59,9 +56,9 @@ importers: lint-staged: specifier: ^16.1.2 version: 16.1.2 - playwright-core: - specifier: ^1.53.2 - version: 1.54.1 + mcpvals: + specifier: ^0.4.0 + version: 0.4.0(react@19.1.0) prettier: specifier: ^3.6.1 version: 3.6.2 @@ -88,68 +85,86 @@ packages: peerDependencies: zod: ^3.0.0 - "@ai-sdk/azure@1.3.24": + "@ai-sdk/anthropic@2.0.40": resolution: { - integrity: sha512-6zOG8mwmd8esSL/L9oYFZSyZWORRTxuG6on9A3RdPe7MRJ607Q6BWsuvul79kecbLf5xQ4bfP7LzXaBizsd8OA==, + integrity: sha512-aHtqlIIS8lyesSNFxevLGWozCCZ1xQ4Wy2HfQSVVQu3dWtndfPzF6hbWof2Way+qNrvRtjnBpRQyaVeu6Js4pQ==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/cerebras@0.2.16": + "@ai-sdk/azure@2.0.60": resolution: { - integrity: sha512-FbT3gFYADXwyjQlpluWxl5fRnkJvGMHX5ahLZZ7qqpDQHH86ZO6X9j9Gk6vcMCwNPpI7+miiK79q1e5wzVHBSQ==, + integrity: sha512-7G5e5eYovGLb/ZOtlukCJjuxwa24t4gVnMhJg/0AZj7MAkoFeNZm/1T7FwXTyWw0xBR5AY5SyhKCU4rqbe17Zw==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/deepseek@0.2.16": + "@ai-sdk/cerebras@1.0.28": resolution: { - integrity: sha512-pIlwtjNehCpDr1wqxtSbXshynW4CiwS6S3yAKHzHi73QtmS2Hg9kE1DB0zgENKaZLmbsc4UgigGM6FzuUd4M8Q==, + integrity: sha512-gL16Uv2FHXSd3Mj/gfQv8/ylTnYPyWHlu0KauHHd1QYkwSx/tZG7JagoAC+7IePor0kWIxFXepif4p89bzNYJg==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/google@1.2.22": + "@ai-sdk/deepseek@1.0.26": resolution: { - integrity: sha512-Ppxu3DIieF1G9pyQ5O1Z646GYR0gkC57YdBqXJ82qvCdhEhZHu0TWhmnOoeIWe2olSbuDeoOY+MfJrW8dzS3Hw==, + integrity: sha512-HUpDS05A5GEtrWN7LKzG5aTPjETnG/MPB59IwZVvFseKOElAXCNfhMzD3HookIVMwgOYlvpHd8SroFCeKyWAUA==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/groq@1.2.9": + "@ai-sdk/gateway@2.0.5": resolution: { - integrity: sha512-7MoDaxm8yWtiRbD1LipYZG0kBl+Xe0sv/EeyxnHnGPZappXdlgtdOgTZVjjXkT3nWP30jjZi9A45zoVrBMb3Xg==, + integrity: sha512-5TTDSl0USWY6YGnb4QmJGplFZhk+p9OT7hZevAaER6OGiZ17LB1GypsGYDpNo/MiVMklk8kX4gk6p1/R/EiJ8Q==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/mistral@1.2.8": + "@ai-sdk/google@2.0.26": resolution: { - integrity: sha512-lv857D9UJqCVxiq2Fcu7mSPTypEHBUqLl1K+lCaP6X/7QAkcaxI36QDONG+tOhGHJOXTsS114u8lrUTaEiGXbg==, + integrity: sha512-LMCT8TDwj1ww4W34f1YJHfk2LggsMV4dqF8qSolJIopdERCclA+S+LzaIaiyeoYDD+slUrf3FXvi1t+yd21jxQ==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - "@ai-sdk/openai-compatible@0.2.16": + "@ai-sdk/groq@2.0.27": resolution: { - integrity: sha512-LkvfcM8slJedRyJa/MiMiaOzcMjV1zNDwzTHEGz7aAsgsQV0maLfmJRi/nuSwf5jmp0EouC+JXXDUj2l94HgQw==, + integrity: sha512-n5Ap/uLIUbBz3DYy4yvkIKoBUj1Bb6jJ7+hVlvveqdvmxSEPXjN47hs4Pj2pwZMAXoILVSTmd8wu24tmekidUA==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 + + "@ai-sdk/mistral@2.0.22": + resolution: + { + integrity: sha512-/CnLJIzZfVmk7N1f+WRt+/uBV6tmzh77KxzMNxtTnhzIGTgI68ck0NOW5H1VMDBMTsC5D99zsOrbCzn7lreokg==, + } + engines: { node: ">=18" } + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + + "@ai-sdk/openai-compatible@1.0.25": + resolution: + { + integrity: sha512-VPylb5ytkOu9Bs1UnVmz4x0wr1VtS30Pw6ghh6GxpGH6lo4GOWqVnYuB+8M755dkof74c5LULZq5C1n/1J4Kvg==, + } + engines: { node: ">=18" } + peerDependencies: + zod: ^3.25.76 || ^4.1.8 "@ai-sdk/openai@1.3.23": resolution: @@ -160,14 +175,23 @@ packages: peerDependencies: zod: ^3.0.0 - "@ai-sdk/perplexity@1.1.9": + "@ai-sdk/openai@2.0.59": resolution: { - integrity: sha512-Ytolh/v2XupXbTvjE18EFBrHLoNMH0Ueji3lfSPhCoRUfkwrgZ2D9jlNxvCNCCRiGJG5kfinSHvzrH5vGDklYA==, + integrity: sha512-ylaL91BrMyqHsprEI0+brvvGwDjRlKxsJTRL1kpzx6AhG37JqpECQwuqNk7aq+T5Qww9w7dqn1JMUuVPvyZtsA==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 + + "@ai-sdk/perplexity@2.0.16": + resolution: + { + integrity: sha512-qEE+xlSOca7CWWBExepOP+j7D/CKCzSCaKyNdMzW/jDlz8SvKS+omVYJvtSk4tojZaB08h4N9wvhbEN/YYKQCA==, + } + engines: { node: ">=18" } + peerDependencies: + zod: ^3.25.76 || ^4.1.8 "@ai-sdk/provider-utils@2.2.8": resolution: @@ -178,6 +202,15 @@ packages: peerDependencies: zod: ^3.23.8 + "@ai-sdk/provider-utils@3.0.15": + resolution: + { + integrity: sha512-kOc6Pxb7CsRlNt+sLZKL7/VGQUd7ccl3/tIK+Bqf5/QhHR0Qm3qRBMz1IwU1RmjJEZA73x+KB5cUckbDl2WF7Q==, + } + engines: { node: ">=18" } + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + "@ai-sdk/provider@1.1.3": resolution: { @@ -185,6 +218,13 @@ packages: } engines: { node: ">=18" } + "@ai-sdk/provider@2.0.0": + resolution: + { + integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==, + } + engines: { node: ">=18" } + "@ai-sdk/react@1.2.12": resolution: { @@ -198,14 +238,14 @@ packages: zod: optional: true - "@ai-sdk/togetherai@0.2.16": + "@ai-sdk/togetherai@1.0.26": resolution: { - integrity: sha512-vCtYUrIdep0M6GIvemyYpwSa9SWOleb/2cuGNXcxzU2xy4GJQdHK/MigQbT9rfeuqnjU2W9KIdtAVJGVwIBogw==, + integrity: sha512-F3nvcS1TNnxPoL8R1Pq6YOxThjPNBkXqywly+EpO5FPvqQx2sL2Cymu1epKlbYWVJXT3ZJAb2+NISH2Fldsv8w==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 "@ai-sdk/ui-utils@1.2.11": resolution: @@ -216,14 +256,14 @@ packages: peerDependencies: zod: ^3.23.8 - "@ai-sdk/xai@1.2.18": + "@ai-sdk/xai@2.0.30": resolution: { - integrity: sha512-T70WEu+UKXD/Fdj9ck+ujIqUp5ru06mJ/7usePXeXL5EeTi8KXevXF9AMIDdhyD5MZPT2jI8t19lEr8Bhuh/Bg==, + integrity: sha512-dVnt57hX4n8NCjmQ++Bfq5PFdTy4yToOWK2hrs6AsrRfHWsT+7BKecTorsDyX85C4h6yIoB6k1AboDYKsxCpeQ==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 "@anthropic-ai/sdk@0.32.1": resolution: @@ -250,16 +290,21 @@ packages: integrity: sha512-83iXP5D7xMm8Wyn66TUaUrgoByCmAJuoMoZQI3sGg3JAiMlTfnCIMqyVBoNSaItaPIkaCnrsj6LiusmXV2X9YA==, } - "@browserbasehq/stagehand@2.5.2": + "@browserbasehq/stagehand@3.0.1": resolution: { - integrity: sha512-Awo4IRYtlY+jrGpzyAY5+nqPurp87Ou2qGortNYf8hlR+KB+cI7sgIS7SfCbldkMyGO++uXUHTXkyfNutNuo7w==, + integrity: sha512-GfI6qWAGBj3obGvIgi8wbE1e65y29hB7u9FUmlQIz2wUX/izFFchlq+PszafPr9d2q4ZzbqzqNoc9WSjhxT65w==, } - hasBin: true peerDependencies: deepmerge: ^4.3.1 dotenv: ^16.4.5 - zod: ">=3.25.0 <3.25.68" + zod: 3.25.67 + + "@cfworker/json-schema@4.1.1": + resolution: + { + integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==, + } "@changesets/apply-release-plan@7.0.12": resolution: @@ -370,6 +415,14 @@ packages: integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, } + "@composio/json-schema-to-zod@0.1.18": + resolution: + { + integrity: sha512-y/1AXznIZE92KTKmDCFa2S4/+WulfdrO1RH65fy8CG7sXJVxOExktUiQUrvatnZZ5LzXUJqke9W+fMxLBvm5jw==, + } + peerDependencies: + zod: ">=3.25.76 <4 || >=4.1 <5" + "@esbuild/aix-ppc64@0.25.6": resolution: { @@ -728,6 +781,22 @@ packages: "@types/node": optional: true + "@langchain/core@0.3.79": + resolution: + { + integrity: sha512-ZLAs5YMM5N2UXN3kExMglltJrKKoW7hs3KMZFlXUnD7a5DFKBYxPFMeXA4rT+uvTxuJRZPCYX0JKI5BhyAWx4A==, + } + engines: { node: ">=18" } + + "@langchain/openai@0.4.9": + resolution: + { + integrity: sha512-NAsaionRHNdqaMjVLPkFCyjUDze+OqRHghA1Cn4fPoAafz+FXcl9c7LlEl9Xo0FH6/8yiCl7Rw2t780C/SBVxQ==, + } + engines: { node: ">=18" } + peerDependencies: + "@langchain/core": ">=0.3.39 <0.4.0" + "@manypkg/find-root@1.1.0": resolution: { @@ -911,6 +980,14 @@ packages: } engines: { node: ">=8.0.0" } + "@puppeteer/browsers@2.3.0": + resolution: + { + integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==, + } + engines: { node: ">=18" } + hasBin: true + "@smithery/cli@1.2.15": resolution: { @@ -933,6 +1010,18 @@ packages: integrity: sha512-ZXwdgsF2/0xaeRTurNaJ+YI4YsxaQsXDbHXRwy545LBUNqSYpDq+VG1fWGeEks5ODHiXxMeF1JrP9MhgH75BFg==, } + "@standard-schema/spec@1.0.0": + resolution: + { + integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==, + } + + "@tootallnate/quickjs-emscripten@0.23.0": + resolution: + { + integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==, + } + "@types/diff-match-patch@1.0.36": resolution: { @@ -969,12 +1058,24 @@ packages: integrity: sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==, } + "@types/retry@0.12.0": + resolution: + { + integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==, + } + "@types/uuid@10.0.0": resolution: { integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==, } + "@types/yauzl@2.10.3": + resolution: + { + integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==, + } + "@typescript-eslint/eslint-plugin@8.37.0": resolution: { @@ -1064,6 +1165,13 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + "@vercel/oidc@3.0.3": + resolution: + { + integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==, + } + engines: { node: ">= 20" } + abort-controller@3.0.0: resolution: { @@ -1121,6 +1229,15 @@ packages: react: optional: true + ai@5.0.86: + resolution: + { + integrity: sha512-ooHwNTkLdedFf98iQhtSc5btc/P4UuXuOpYneoifq0190vqosLunNdW8Hs6CiE0Am7YOGNplDK56JIPlHZIL4w==, + } + engines: { node: ">=18" } + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + ajv@6.12.6: resolution: { @@ -1169,6 +1286,13 @@ packages: } engines: { node: ">=8" } + ansi-styles@5.2.0: + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: ">=10" } + ansi-styles@6.2.1: resolution: { @@ -1244,6 +1368,13 @@ packages: } engines: { node: ">= 0.4" } + ast-types@0.13.4: + resolution: + { + integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==, + } + engines: { node: ">=4" } + async-function@1.0.0: resolution: { @@ -1271,60 +1402,109 @@ packages: } engines: { node: ">= 0.4" } + b4a@1.7.3: + resolution: + { + integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==, + } + peerDependencies: + react-native-b4a: "*" + peerDependenciesMeta: + react-native-b4a: + optional: true + balanced-match@1.0.2: resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } - base64-js@1.5.1: + bare-events@2.8.1: resolution: { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==, } + peerDependencies: + bare-abort-controller: "*" + peerDependenciesMeta: + bare-abort-controller: + optional: true - basic-auth@0.0.1: + bare-fs@4.5.0: resolution: { - integrity: sha512-sCz6E05DMvrA9dUBGJFfnQ3qs+/lQkVr7qjOT5XMMNfpTzWbpkElpzXfnbNlBjPnDQyz0uBFJ4nELJRIdcKoNQ==, + integrity: sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==, } + engines: { bare: ">=1.16.0" } + peerDependencies: + bare-buffer: "*" + peerDependenciesMeta: + bare-buffer: + optional: true - basic-auth@2.0.1: + bare-os@3.6.2: resolution: { - integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==, + integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==, } - engines: { node: ">= 0.8" } + engines: { bare: ">=1.14.0" } - better-path-resolve@1.0.0: + bare-path@3.0.0: resolution: { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, + integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==, } - engines: { node: ">=4" } - bignumber.js@9.3.1: + bare-stream@2.7.0: resolution: { - integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==, + integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==, + } + peerDependencies: + bare-buffer: "*" + bare-events: "*" + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.3.2: + resolution: + { + integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==, } - bl@4.1.0: + base64-js@1.5.1: resolution: { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + + basic-ftp@5.0.5: + resolution: + { + integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==, + } + engines: { node: ">=10.0.0" } + + better-path-resolve@1.0.0: + resolution: + { + integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, } + engines: { node: ">=4" } - bluebird@2.11.0: + bignumber.js@9.3.1: resolution: { - integrity: sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==, + integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==, } - bluebird@3.7.2: + bl@4.1.0: resolution: { - integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==, + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, } body-parser@2.2.0: @@ -1353,6 +1533,12 @@ packages: } engines: { node: ">=8" } + buffer-crc32@0.2.13: + resolution: + { + integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, + } + buffer-equal-constant-time@1.0.1: resolution: { @@ -1407,6 +1593,13 @@ packages: } engines: { node: ">=6" } + camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: ">=10" } + chalk@4.1.2: resolution: { @@ -1433,6 +1626,22 @@ packages: integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==, } + chrome-launcher@1.2.1: + resolution: + { + integrity: sha512-qmFR5PLMzHyuNJHwOloHPAHhbaNglkfeV/xDtt5b7xiFFyU1I+AZZX0PYseMuhenJSSirgxELYIbswcoc+5H4A==, + } + engines: { node: ">=12.13.0" } + hasBin: true + + chromium-bidi@0.6.3: + resolution: + { + integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==, + } + peerDependencies: + devtools-protocol: "*" + ci-info@3.9.0: resolution: { @@ -1475,26 +1684,19 @@ packages: } engines: { node: ">= 10" } - clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: ">=0.8" } - - co-bluebird@1.1.0: + cliui@8.0.1: resolution: { - integrity: sha512-JuoemMXxQjYAxbfRrNpOsLyiwDiY8mXvGqJyYLM7jMySDJtnMklW3V2o8uyubpc1eN2YoRsAdfZ1lfKCd3lsrA==, + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, } - engines: { node: ">=0.12.0" } + engines: { node: ">=12" } - co-use@1.1.0: + clone@1.0.4: resolution: { - integrity: sha512-1lVRtdywv41zQO/xvI2wU8w6oFcUYT6T84YKSxN25KN4N4Kld3scLovt8FjDmD63Cm7HtyRWHjezt+IanXmkyA==, + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, } - engines: { node: ">=0.12.0" } + engines: { node: ">=0.8" } color-convert@2.0.1: resolution: @@ -1542,6 +1744,12 @@ packages: integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } + console-table-printer@2.15.0: + resolution: + { + integrity: sha512-SrhBq4hYVjLCkBVOWaTzceJalvn5K1Zq5aQA6wXC/cYjI3frKWNPEMK3sZsJfNNQApvCQmgBcc13ZKmFj8qExw==, + } + content-disposition@1.0.0: resolution: { @@ -1590,6 +1798,13 @@ packages: } engines: { node: ">= 8" } + data-uri-to-buffer@6.0.2: + resolution: + { + integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==, + } + engines: { node: ">= 14" } + data-view-buffer@1.0.2: resolution: { @@ -1629,6 +1844,13 @@ packages: supports-color: optional: true + decamelize@1.2.0: + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + } + engines: { node: ">=0.10.0" } + deep-is@0.1.4: resolution: { @@ -1662,6 +1884,13 @@ packages: } engines: { node: ">= 0.4" } + degenerator@5.0.1: + resolution: + { + integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==, + } + engines: { node: ">= 14" } + delayed-stream@1.0.0: resolution: { @@ -1690,6 +1919,12 @@ packages: } engines: { node: ">=8" } + devtools-protocol@0.0.1312386: + resolution: + { + integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==, + } + devtools-protocol@0.0.1464554: resolution: { @@ -1845,6 +2080,13 @@ packages: engines: { node: ">=18" } hasBin: true + escalade@3.2.0: + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + } + engines: { node: ">=6" } + escape-html@1.0.3: resolution: { @@ -1865,6 +2107,14 @@ packages: } engines: { node: ">=10" } + escodegen@2.1.0: + resolution: + { + integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, + } + engines: { node: ">=6.0" } + hasBin: true + eslint-plugin-react@7.37.5: resolution: { @@ -1965,12 +2215,24 @@ packages: } engines: { node: ">=6" } + eventemitter3@4.0.7: + resolution: + { + integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, + } + eventemitter3@5.0.1: resolution: { integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, } + events-universal@1.0.1: + resolution: + { + integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==, + } + eventsource-parser@3.0.3: resolution: { @@ -1978,6 +2240,13 @@ packages: } engines: { node: ">=20.0.0" } + eventsource-parser@3.0.6: + resolution: + { + integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==, + } + engines: { node: ">=18.0.0" } + eventsource@3.0.7: resolution: { @@ -2027,6 +2296,14 @@ packages: } engines: { node: ">=4" } + extract-zip@2.0.1: + resolution: + { + integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==, + } + engines: { node: ">= 10.17.0" } + hasBin: true + fast-copy@3.0.2: resolution: { @@ -2039,6 +2316,12 @@ packages: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } + fast-fifo@1.3.2: + resolution: + { + integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==, + } + fast-glob@3.3.3: resolution: { @@ -2077,6 +2360,12 @@ packages: integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, } + fd-slicer@1.1.0: + resolution: + { + integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==, + } + fetch-cookie@3.1.0: resolution: { @@ -2248,6 +2537,13 @@ packages: } engines: { node: ">=14" } + get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + get-east-asian-width@1.3.0: resolution: { @@ -2269,6 +2565,13 @@ packages: } engines: { node: ">= 0.4" } + get-stream@5.2.0: + resolution: + { + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, + } + engines: { node: ">=8" } + get-stream@8.0.1: resolution: { @@ -2289,10 +2592,17 @@ packages: integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==, } - glob-parent@5.1.2: + get-uri@6.0.5: resolution: { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==, + } + engines: { node: ">= 14" } + + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, } engines: { node: ">= 6" } @@ -2439,6 +2749,13 @@ packages: } engines: { node: ">= 0.8" } + http-proxy-agent@7.0.2: + resolution: + { + integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, + } + engines: { node: ">= 14" } + https-proxy-agent@7.0.6: resolution: { @@ -2565,6 +2882,13 @@ packages: } engines: { node: ">= 0.10" } + ip-address@10.0.1: + resolution: + { + integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==, + } + engines: { node: ">= 12" } + ipaddr.js@1.9.1: resolution: { @@ -2628,6 +2952,14 @@ packages: } engines: { node: ">= 0.4" } + is-docker@2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: ">=8" } + hasBin: true + is-extglob@2.1.1: resolution: { @@ -2670,12 +3002,6 @@ packages: } engines: { node: ">= 0.4" } - is-generator@1.0.3: - resolution: - { - integrity: sha512-G56jBpbJeg7ds83HW1LuShNs8J73Fv3CPz/bmROHOHlnKkN8sWb9ujiagjmxxMUywftgq48HlBZELKKqFLk0oA==, - } - is-glob@4.0.3: resolution: { @@ -2843,6 +3169,13 @@ packages: } engines: { node: ">=0.10.0" } + is-wsl@2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: ">=8" } + isarray@2.0.5: resolution: { @@ -2869,6 +3202,12 @@ packages: } engines: { node: ">=10" } + js-tiktoken@1.0.21: + resolution: + { + integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==, + } + js-tokens@4.0.0: resolution: { @@ -2958,6 +3297,26 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } + langsmith@0.3.77: + resolution: + { + integrity: sha512-wbS/9IX/hOAsOEOtPj8kCS8H0tFHaelwQ97gTONRtIfoPPLd9MMUmhk0KQB5DdsGAI5abg966+f0dZ/B+YRRzg==, + } + peerDependencies: + "@opentelemetry/api": "*" + "@opentelemetry/exporter-trace-otlp-proto": "*" + "@opentelemetry/sdk-trace-base": "*" + openai: "*" + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + "@opentelemetry/exporter-trace-otlp-proto": + optional: true + "@opentelemetry/sdk-trace-base": + optional: true + openai: + optional: true + levn@0.4.1: resolution: { @@ -2965,6 +3324,12 @@ packages: } engines: { node: ">= 0.8.0" } + lighthouse-logger@2.0.2: + resolution: + { + integrity: sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==, + } + lilconfig@3.1.3: resolution: { @@ -3013,12 +3378,6 @@ packages: integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, } - lodash@4.17.19: - resolution: - { - integrity: sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==, - } - lodash@4.17.21: resolution: { @@ -3053,26 +3412,32 @@ packages: } hasBin: true - math-intrinsics@1.1.0: + lru-cache@7.18.3: resolution: { - integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, } - engines: { node: ">= 0.4" } + engines: { node: ">=12" } - mcpvals@0.0.3: + marky@1.3.0: resolution: { - integrity: sha512-aMOsp8K6eJNId796Y1K+S2nNHiW8wuGtMuTEB1aCpMAvT57XpK2cMu/SCoKp3vqMZMPFOWX1TS2AhSdhYaOwkw==, + integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, } - hasBin: true - media-typer@0.3.0: + math-intrinsics@1.1.0: resolution: { - integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, } - engines: { node: ">= 0.6" } + engines: { node: ">= 0.4" } + + mcpvals@0.4.0: + resolution: + { + integrity: sha512-2HoHO+XSi5g1PH1wUI+QTUljqEdWsWUKPqM8PtzOZlVDh9WODCQgujD63hodnd6heV8+LwV2Zu0dbklLeqW1uQ==, + } + hasBin: true media-typer@1.1.0: resolution: @@ -3176,6 +3541,12 @@ packages: integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, } + mitt@3.0.1: + resolution: + { + integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, + } + mri@1.2.0: resolution: { @@ -3189,6 +3560,13 @@ packages: integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, } + mustache@4.2.0: + resolution: + { + integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==, + } + hasBin: true + mute-stream@0.0.8: resolution: { @@ -3223,6 +3601,13 @@ packages: } engines: { node: ">= 0.6" } + netmask@2.0.2: + resolution: + { + integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==, + } + engines: { node: ">= 0.4.0" } + node-domexception@1.0.0: resolution: { @@ -3249,13 +3634,6 @@ packages: } hasBin: true - node-oauth2-server@2.4.0: - resolution: - { - integrity: sha512-k3NUmzjEIPyKBuY1OYtHqJ2L6siIlN+oERGe1MVeUGxzeOxEq/2z5K03/P8lfW4ys0Iivbn1KlGJgBeXNZ6Z5w==, - } - engines: { node: ">=0.8" } - npm-run-path@5.3.0: resolution: { @@ -3263,13 +3641,6 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - oauth2-server@3.1.1: - resolution: - { - integrity: sha512-4dv+fE9hrK+xTaCygOLh/kQeFzbFr7UqSyHvBDbrQq8Hg52sAkV2vTsyH3Z42hoeaKpbhM7udhL8Y4GYbl6TGQ==, - } - engines: { node: ">=4.0" } - object-assign@4.1.1: resolution: { @@ -3325,17 +3696,14 @@ packages: integrity: sha512-1GZkj84Uw2STYhwcGhEkgvNXkremOEmTwSgufKm9CcprjwKFuF6md5f1CIvWJgtYlyfR6BbZYnjr6HCfhUuCpQ==, } - ollama-ai-provider@1.2.0: + ollama-ai-provider-v2@1.5.2: resolution: { - integrity: sha512-jTNFruwe3O/ruJeppI/quoOUxG7NA6blG3ZyQj3lei4+NnJo7bi3eIRWqlVpRlu/mbzbFXeJSBuYQWF6pzGKww==, + integrity: sha512-G7ta7r0oWuwSakxP9fLXwrrYc3Emw+LuDGdLHvqwLmxXR8cadVezrKVpwD57rHMrkihvgOKoHoi7SS73uqCTDQ==, } engines: { node: ">=18" } peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true + zod: ^4.0.16 on-exit-leak-free@2.1.2: resolution: @@ -3441,6 +3809,13 @@ packages: } engines: { node: ">=8" } + p-finally@1.0.0: + resolution: + { + integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, + } + engines: { node: ">=4" } + p-limit@2.3.0: resolution: { @@ -3476,6 +3851,27 @@ packages: } engines: { node: ">=6" } + p-queue@6.6.2: + resolution: + { + integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, + } + engines: { node: ">=8" } + + p-retry@4.6.2: + resolution: + { + integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==, + } + engines: { node: ">=8" } + + p-timeout@3.2.0: + resolution: + { + integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, + } + engines: { node: ">=8" } + p-try@2.2.0: resolution: { @@ -3483,6 +3879,20 @@ packages: } engines: { node: ">=6" } + pac-proxy-agent@7.2.0: + resolution: + { + integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==, + } + engines: { node: ">= 14" } + + pac-resolver@7.0.1: + resolution: + { + integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==, + } + engines: { node: ">= 14" } + package-manager-detector@0.2.11: resolution: { @@ -3503,11 +3913,13 @@ packages: } engines: { node: ">= 0.8" } - partial-json@0.1.7: + patchright-core@1.56.1: resolution: { - integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==, + integrity: sha512-ot1WU31T+FLjBg8LUbEnPPhzh6uRYji25ZONHpxVUEXtANuVJf6tI4nv6jw6n37qsjgS4u12sq7Go0Vdte3JJQ==, } + engines: { node: ">=18" } + hasBin: true path-exists@4.0.0: resolution: @@ -3557,6 +3969,12 @@ packages: } engines: { node: ">=8" } + pend@1.2.0: + resolution: + { + integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, + } + picocolors@1.1.1: resolution: { @@ -3670,12 +4088,12 @@ packages: integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==, } - promisify-any@2.0.1: + progress@2.0.3: resolution: { - integrity: sha512-pVaGouFbTVxqpVJ+T5A15olNJDASAZHYq5cXz6mWdr6/X34mVWiG9MSdzHTcVBCv4aqBP7wGspi7BUSRbEmhsw==, + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, } - engines: { node: ">=0.10.0" } + engines: { node: ">=0.4.0" } prop-types@15.8.1: resolution: @@ -3690,6 +4108,19 @@ packages: } engines: { node: ">= 0.10" } + proxy-agent@6.5.0: + resolution: + { + integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==, + } + engines: { node: ">= 14" } + + proxy-from-env@1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + pump@3.0.3: resolution: { @@ -3703,6 +4134,13 @@ packages: } engines: { node: ">=6" } + puppeteer-core@22.15.0: + resolution: + { + integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==, + } + engines: { node: ">=18" } + qs@6.14.0: resolution: { @@ -3797,6 +4235,13 @@ packages: } engines: { node: ">= 0.4" } + require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } + resolve-from@4.0.0: resolution: { @@ -3846,6 +4291,13 @@ packages: } engines: { node: ">=18" } + retry@0.13.1: + resolution: + { + integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==, + } + engines: { node: ">= 4" } + reusify@1.1.0: resolution: { @@ -3892,12 +4344,6 @@ packages: } engines: { node: ">=0.4" } - safe-buffer@5.1.2: - resolution: - { - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, - } - safe-buffer@5.2.1: resolution: { @@ -4070,6 +4516,12 @@ packages: } engines: { node: ">=14" } + simple-wcswidth@1.1.2: + resolution: + { + integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==, + } + slash@3.0.0: resolution: { @@ -4091,12 +4543,40 @@ packages: } engines: { node: ">=18" } + smart-buffer@4.2.0: + resolution: + { + integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, + } + engines: { node: ">= 6.0.0", npm: ">= 3.0.0" } + + socks-proxy-agent@8.0.5: + resolution: + { + integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==, + } + engines: { node: ">= 14" } + + socks@2.8.7: + resolution: + { + integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==, + } + engines: { node: ">= 10.0.0", npm: ">= 3.0.0" } + sonic-boom@4.2.0: resolution: { integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==, } + source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + spawndamnit@3.0.1: resolution: { @@ -4116,13 +4596,6 @@ packages: integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, } - statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: ">= 0.6" } - statuses@2.0.1: resolution: { @@ -4151,6 +4624,12 @@ packages: } engines: { node: ">= 0.4" } + streamx@2.23.0: + resolution: + { + integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==, + } + string-argv@0.3.2: resolution: { @@ -4269,6 +4748,18 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + tar-fs@3.1.1: + resolution: + { + integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==, + } + + tar-stream@3.1.7: + resolution: + { + integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==, + } + term-size@2.2.1: resolution: { @@ -4276,6 +4767,12 @@ packages: } engines: { node: ">=8" } + text-decoder@1.2.3: + resolution: + { + integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==, + } + thread-stream@3.1.0: resolution: { @@ -4379,13 +4876,6 @@ packages: } engines: { node: ">=10" } - type-is@1.6.18: - resolution: - { - integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, - } - engines: { node: ">= 0.6" } - type-is@2.0.1: resolution: { @@ -4446,6 +4936,12 @@ packages: } engines: { node: ">= 0.4" } + unbzip2-stream@1.4.3: + resolution: + { + integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==, + } + undici-types@5.26.5: resolution: { @@ -4472,6 +4968,12 @@ packages: integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, } + urlpattern-polyfill@10.0.0: + resolution: + { + integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==, + } + use-sync-external-store@1.5.0: resolution: { @@ -4486,6 +4988,13 @@ packages: integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, } + uuid@10.0.0: + resolution: + { + integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==, + } + hasBin: true + uuid@11.1.0: resolution: { @@ -4589,6 +5098,13 @@ packages: } engines: { node: ">=8" } + wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } + wrap-ansi@9.0.0: resolution: { @@ -4617,6 +5133,13 @@ packages: utf-8-validate: optional: true + y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } + yaml@2.8.0: resolution: { @@ -4625,6 +5148,26 @@ packages: engines: { node: ">= 14.6" } hasBin: true + yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: ">=12" } + + yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: ">=12" } + + yauzl@2.10.0: + resolution: + { + integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==, + } + yocto-queue@0.1.0: resolution: { @@ -4640,6 +5183,12 @@ packages: peerDependencies: zod: ^3.24.1 + zod@3.23.8: + resolution: + { + integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==, + } + zod@3.25.76: resolution: { @@ -4653,55 +5202,69 @@ snapshots: "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) zod: 3.25.76 - "@ai-sdk/azure@1.3.24(zod@3.25.76)": + "@ai-sdk/anthropic@2.0.40(zod@3.25.76)": dependencies: - "@ai-sdk/openai": 1.3.23(zod@3.25.76) - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/cerebras@0.2.16(zod@3.25.76)": + "@ai-sdk/azure@2.0.60(zod@3.25.76)": dependencies: - "@ai-sdk/openai-compatible": 0.2.16(zod@3.25.76) - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/openai": 2.0.59(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/deepseek@0.2.16(zod@3.25.76)": + "@ai-sdk/cerebras@1.0.28(zod@3.25.76)": dependencies: - "@ai-sdk/openai-compatible": 0.2.16(zod@3.25.76) - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/openai-compatible": 1.0.25(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/google@1.2.22(zod@3.25.76)": + "@ai-sdk/deepseek@1.0.26(zod@3.25.76)": dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/openai-compatible": 1.0.25(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/groq@1.2.9(zod@3.25.76)": + "@ai-sdk/gateway@2.0.5(zod@3.25.76)": dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) + "@vercel/oidc": 3.0.3 + zod: 3.25.76 + + "@ai-sdk/google@2.0.26(zod@3.25.76)": + dependencies: + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/mistral@1.2.8(zod@3.25.76)": + "@ai-sdk/groq@2.0.27(zod@3.25.76)": dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true - "@ai-sdk/openai-compatible@0.2.16(zod@3.25.76)": + "@ai-sdk/mistral@2.0.22(zod@3.25.76)": dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) + zod: 3.25.76 + optional: true + + "@ai-sdk/openai-compatible@1.0.25(zod@3.25.76)": + dependencies: + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true @@ -4711,10 +5274,17 @@ snapshots: "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) zod: 3.25.76 - "@ai-sdk/perplexity@1.1.9(zod@3.25.76)": + "@ai-sdk/openai@2.0.59(zod@3.25.76)": dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) + zod: 3.25.76 + optional: true + + "@ai-sdk/perplexity@2.0.16(zod@3.25.76)": + dependencies: + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true @@ -4725,10 +5295,21 @@ snapshots: secure-json-parse: 2.7.0 zod: 3.25.76 + "@ai-sdk/provider-utils@3.0.15(zod@3.25.76)": + dependencies: + "@ai-sdk/provider": 2.0.0 + "@standard-schema/spec": 1.0.0 + eventsource-parser: 3.0.6 + zod: 3.25.76 + "@ai-sdk/provider@1.1.3": dependencies: json-schema: 0.4.0 + "@ai-sdk/provider@2.0.0": + dependencies: + json-schema: 0.4.0 + "@ai-sdk/react@1.2.12(react@19.1.0)(zod@3.25.76)": dependencies: "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) @@ -4739,11 +5320,11 @@ snapshots: optionalDependencies: zod: 3.25.76 - "@ai-sdk/togetherai@0.2.16(zod@3.25.76)": + "@ai-sdk/togetherai@1.0.26(zod@3.25.76)": dependencies: - "@ai-sdk/openai-compatible": 0.2.16(zod@3.25.76) - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/openai-compatible": 1.0.25(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true @@ -4754,11 +5335,11 @@ snapshots: zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) - "@ai-sdk/xai@1.2.18(zod@3.25.76)": + "@ai-sdk/xai@2.0.30(zod@3.25.76)": dependencies: - "@ai-sdk/openai-compatible": 0.2.16(zod@3.25.76) - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) + "@ai-sdk/openai-compatible": 1.0.25(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true @@ -4800,13 +5381,15 @@ snapshots: transitivePeerDependencies: - encoding - "@browserbasehq/stagehand@2.5.2(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(react@19.1.0)(zod@3.25.76)": + "@browserbasehq/stagehand@3.0.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(zod@3.25.76)": dependencies: + "@ai-sdk/provider": 2.0.0 "@anthropic-ai/sdk": 0.39.0 "@browserbasehq/sdk": 2.6.0 "@google/genai": 1.24.0(@modelcontextprotocol/sdk@1.17.5)(bufferutil@4.0.9) + "@langchain/openai": 0.4.9(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.0.9)) "@modelcontextprotocol/sdk": 1.17.5 - ai: 4.3.19(react@19.1.0)(zod@3.25.76) + ai: 5.0.86(zod@3.25.76) deepmerge: 4.3.1 devtools-protocol: 0.0.1464554 dotenv: 16.6.1 @@ -4819,25 +5402,37 @@ snapshots: zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) optionalDependencies: - "@ai-sdk/anthropic": 1.2.12(zod@3.25.76) - "@ai-sdk/azure": 1.3.24(zod@3.25.76) - "@ai-sdk/cerebras": 0.2.16(zod@3.25.76) - "@ai-sdk/deepseek": 0.2.16(zod@3.25.76) - "@ai-sdk/google": 1.2.22(zod@3.25.76) - "@ai-sdk/groq": 1.2.9(zod@3.25.76) - "@ai-sdk/mistral": 1.2.8(zod@3.25.76) - "@ai-sdk/openai": 1.3.23(zod@3.25.76) - "@ai-sdk/perplexity": 1.1.9(zod@3.25.76) - "@ai-sdk/togetherai": 0.2.16(zod@3.25.76) - "@ai-sdk/xai": 1.2.18(zod@3.25.76) - ollama-ai-provider: 1.2.0(zod@3.25.76) + "@ai-sdk/anthropic": 2.0.40(zod@3.25.76) + "@ai-sdk/azure": 2.0.60(zod@3.25.76) + "@ai-sdk/cerebras": 1.0.28(zod@3.25.76) + "@ai-sdk/deepseek": 1.0.26(zod@3.25.76) + "@ai-sdk/google": 2.0.26(zod@3.25.76) + "@ai-sdk/groq": 2.0.27(zod@3.25.76) + "@ai-sdk/mistral": 2.0.22(zod@3.25.76) + "@ai-sdk/openai": 2.0.59(zod@3.25.76) + "@ai-sdk/perplexity": 2.0.16(zod@3.25.76) + "@ai-sdk/togetherai": 1.0.26(zod@3.25.76) + "@ai-sdk/xai": 2.0.30(zod@3.25.76) + "@langchain/core": 0.3.79(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)) + chrome-launcher: 1.2.1 + ollama-ai-provider-v2: 1.5.2(zod@3.25.76) + patchright-core: 1.56.1 + playwright-core: 1.54.1 + puppeteer-core: 22.15.0(bufferutil@4.0.9) transitivePeerDependencies: + - "@opentelemetry/api" + - "@opentelemetry/exporter-trace-otlp-proto" + - "@opentelemetry/sdk-trace-base" + - bare-abort-controller + - bare-buffer - bufferutil - encoding - - react + - react-native-b4a - supports-color - utf-8-validate + "@cfworker/json-schema@4.1.1": {} + "@changesets/apply-release-plan@7.0.12": dependencies: "@changesets/config": 3.1.1 @@ -4982,6 +5577,10 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 + "@composio/json-schema-to-zod@0.1.18(zod@3.25.76)": + dependencies: + zod: 3.25.76 + "@esbuild/aix-ppc64@0.25.6": optional: true @@ -5136,6 +5735,37 @@ snapshots: optionalDependencies: "@types/node": 18.19.119 + "@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76))": + dependencies: + "@cfworker/json-schema": 4.1.1 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.21 + langsmith: 0.3.77(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + transitivePeerDependencies: + - "@opentelemetry/api" + - "@opentelemetry/exporter-trace-otlp-proto" + - "@opentelemetry/sdk-trace-base" + - openai + + "@langchain/openai@0.4.9(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.0.9))": + dependencies: + "@langchain/core": 0.3.79(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)) + js-tiktoken: 1.0.21 + openai: 4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + transitivePeerDependencies: + - encoding + - ws + "@manypkg/find-root@1.1.0": dependencies: "@babel/runtime": 7.28.3 @@ -5261,6 +5891,23 @@ snapshots: "@opentelemetry/api@1.9.0": {} + "@puppeteer/browsers@2.3.0": + dependencies: + debug: 4.4.1 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.1.1 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + - supports-color + optional: true + "@smithery/cli@1.2.15(react@19.1.0)(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)": dependencies: "@modelcontextprotocol/sdk": 1.15.1 @@ -5313,6 +5960,11 @@ snapshots: - supports-color - ws + "@standard-schema/spec@1.0.0": {} + + "@tootallnate/quickjs-emscripten@0.23.0": + optional: true + "@types/diff-match-patch@1.0.36": {} "@types/estree@1.0.8": {} @@ -5330,8 +5982,15 @@ snapshots: dependencies: undici-types: 5.26.5 + "@types/retry@0.12.0": {} + "@types/uuid@10.0.0": {} + "@types/yauzl@2.10.3": + dependencies: + "@types/node": 18.19.119 + optional: true + "@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3)": dependencies: "@eslint-community/regexpp": 4.12.1 @@ -5425,6 +6084,8 @@ snapshots: "@typescript-eslint/types": 8.37.0 eslint-visitor-keys: 4.2.1 + "@vercel/oidc@3.0.3": {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -5458,6 +6119,14 @@ snapshots: optionalDependencies: react: 19.1.0 + ai@5.0.86(zod@3.25.76): + dependencies: + "@ai-sdk/gateway": 2.0.5(zod@3.25.76) + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) + "@opentelemetry/api": 1.9.0 + zod: 3.25.76 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -5483,6 +6152,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} argparse@1.0.10: @@ -5550,6 +6221,11 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + optional: true + async-function@1.0.0: {} asynckit@0.4.0: {} @@ -5560,15 +6236,53 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 + b4a@1.7.3: + optional: true + balanced-match@1.0.2: {} - base64-js@1.5.1: {} + bare-events@2.8.1: + optional: true + + bare-fs@4.5.0: + dependencies: + bare-events: 2.8.1 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.8.1) + bare-url: 2.3.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true - basic-auth@0.0.1: {} + bare-os@3.6.2: + optional: true - basic-auth@2.0.1: + bare-path@3.0.0: dependencies: - safe-buffer: 5.1.2 + bare-os: 3.6.2 + optional: true + + bare-stream@2.7.0(bare-events@2.8.1): + dependencies: + streamx: 2.23.0 + optionalDependencies: + bare-events: 2.8.1 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-url@2.3.2: + dependencies: + bare-path: 3.0.0 + optional: true + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: + optional: true better-path-resolve@1.0.0: dependencies: @@ -5582,10 +6296,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - bluebird@2.11.0: {} - - bluebird@3.7.2: {} - body-parser@2.2.0: dependencies: bytes: 3.1.2 @@ -5613,6 +6323,9 @@ snapshots: dependencies: fill-range: 7.1.1 + buffer-crc32@0.2.13: + optional: true + buffer-equal-constant-time@1.0.1: {} buffer@5.7.1: @@ -5646,6 +6359,8 @@ snapshots: callsites@3.1.0: {} + camelcase@6.3.0: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -5657,6 +6372,24 @@ snapshots: chardet@2.1.0: {} + chrome-launcher@1.2.1: + dependencies: + "@types/node": 18.19.119 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 2.0.2 + transitivePeerDependencies: + - supports-color + optional: true + + chromium-bidi@0.6.3(devtools-protocol@0.0.1312386): + dependencies: + devtools-protocol: 0.0.1312386 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + optional: true + ci-info@3.9.0: {} cli-cursor@3.1.0: @@ -5676,14 +6409,14 @@ snapshots: cli-width@3.0.0: {} - clone@1.0.4: {} - - co-bluebird@1.1.0: + cliui@8.0.1: dependencies: - bluebird: 2.11.0 - co-use: 1.1.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + optional: true - co-use@1.1.0: {} + clone@1.0.4: {} color-convert@2.0.1: dependencies: @@ -5703,6 +6436,10 @@ snapshots: concat-map@0.0.1: {} + console-table-printer@2.15.0: + dependencies: + simple-wcswidth: 1.1.2 + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -5730,6 +6467,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + data-uri-to-buffer@6.0.2: + optional: true + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -5754,6 +6494,8 @@ snapshots: dependencies: ms: 2.1.3 + decamelize@1.2.0: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -5774,6 +6516,13 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + optional: true + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -5782,6 +6531,9 @@ snapshots: detect-indent@6.1.0: {} + devtools-protocol@0.0.1312386: + optional: true + devtools-protocol@0.0.1464554: {} diff-match-patch@1.0.5: {} @@ -5955,12 +6707,24 @@ snapshots: "@esbuild/win32-ia32": 0.25.6 "@esbuild/win32-x64": 0.25.6 + escalade@3.2.0: + optional: true + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + optional: true + eslint-plugin-react@7.37.5(eslint@9.31.0): dependencies: array-includes: 3.1.9 @@ -6056,10 +6820,21 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.8.1 + transitivePeerDependencies: + - bare-abort-controller + optional: true + eventsource-parser@3.0.3: {} + eventsource-parser@3.0.6: {} + eventsource@3.0.7: dependencies: eventsource-parser: 3.0.3 @@ -6122,10 +6897,24 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-zip@2.0.1: + dependencies: + debug: 4.4.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + "@types/yauzl": 2.10.3 + transitivePeerDependencies: + - supports-color + optional: true + fast-copy@3.0.2: {} fast-deep-equal@3.1.3: {} + fast-fifo@1.3.2: + optional: true + fast-glob@3.3.3: dependencies: "@nodelib/fs.stat": 2.0.5 @@ -6146,6 +6935,11 @@ snapshots: dependencies: reusify: 1.1.0 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + optional: true + fetch-cookie@3.1.0: dependencies: set-cookie-parser: 2.7.1 @@ -6267,6 +7061,9 @@ snapshots: - encoding - supports-color + get-caller-file@2.0.5: + optional: true + get-east-asian-width@1.3.0: {} get-intrinsic@1.3.0: @@ -6287,6 +7084,11 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + optional: true + get-stream@8.0.1: {} get-symbol-description@1.1.0: @@ -6299,6 +7101,15 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-uri@6.0.5: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + optional: true + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -6394,6 +7205,14 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + optional: true + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -6474,6 +7293,9 @@ snapshots: interpret@1.4.0: {} + ip-address@10.0.1: + optional: true + ipaddr.js@1.9.1: {} is-array-buffer@3.0.5: @@ -6516,6 +7338,9 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-docker@2.2.1: + optional: true + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -6537,8 +7362,6 @@ snapshots: has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 - is-generator@1.0.3: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -6615,6 +7438,11 @@ snapshots: is-windows@1.0.2: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + optional: true + isarray@2.0.5: {} isexe@2.0.0: {} @@ -6630,6 +7458,10 @@ snapshots: joycon@3.1.1: {} + js-tiktoken@1.0.21: + dependencies: + base64-js: 1.5.1 + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -6685,11 +7517,32 @@ snapshots: dependencies: json-buffer: 3.0.1 + langsmith@0.3.77(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76)): + dependencies: + "@types/uuid": 10.0.0 + chalk: 4.1.2 + console-table-printer: 2.15.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.7.2 + uuid: 10.0.0 + optionalDependencies: + "@opentelemetry/api": 1.9.0 + openai: 4.104.0(ws@8.18.3(bufferutil@4.0.9))(zod@3.25.76) + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lighthouse-logger@2.0.2: + dependencies: + debug: 4.4.1 + marky: 1.3.0 + transitivePeerDependencies: + - supports-color + optional: true + lilconfig@3.1.3: {} lint-staged@16.1.2: @@ -6728,8 +7581,6 @@ snapshots: lodash.startcase@4.4.0: {} - lodash@4.17.19: {} - lodash@4.17.21: {} log-symbols@4.1.0: @@ -6754,26 +7605,29 @@ snapshots: dependencies: js-tokens: 4.0.0 + lru-cache@7.18.3: + optional: true + + marky@1.3.0: + optional: true + math-intrinsics@1.1.0: {} - mcpvals@0.0.3(react@19.1.0): + mcpvals@0.4.0(react@19.1.0): dependencies: "@ai-sdk/anthropic": 1.2.12(zod@3.25.76) "@ai-sdk/openai": 1.3.23(zod@3.25.76) - "@modelcontextprotocol/sdk": 1.15.1 + "@composio/json-schema-to-zod": 0.1.18(zod@3.25.76) + "@modelcontextprotocol/sdk": 1.17.5 ai: 4.3.19(react@19.1.0)(zod@3.25.76) chalk: 5.4.1 commander: 11.1.0 execa: 8.0.1 - node-oauth2-server: 2.4.0 - oauth2-server: 3.1.1 zod: 3.25.76 transitivePeerDependencies: - react - supports-color - media-typer@0.3.0: {} - media-typer@1.1.0: {} merge-descriptors@2.0.0: {} @@ -6815,10 +7669,15 @@ snapshots: minimist@1.2.8: {} + mitt@3.0.1: + optional: true + mri@1.2.0: {} ms@2.1.3: {} + mustache@4.2.0: {} + mute-stream@0.0.8: {} nano-spawn@1.0.2: {} @@ -6829,6 +7688,9 @@ snapshots: negotiator@1.0.0: {} + netmask@2.0.2: + optional: true + node-domexception@1.0.0: {} node-fetch@2.7.0: @@ -6838,23 +7700,10 @@ snapshots: node-gyp-build@4.8.4: optional: true - node-oauth2-server@2.4.0: - dependencies: - basic-auth: 0.0.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - oauth2-server@3.1.1: - dependencies: - basic-auth: 2.0.1 - bluebird: 3.7.2 - lodash: 4.17.19 - promisify-any: 2.0.1 - statuses: 1.5.0 - type-is: 1.6.18 - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -6893,12 +7742,10 @@ snapshots: okay-error@1.0.3: {} - ollama-ai-provider@1.2.0(zod@3.25.76): + ollama-ai-provider-v2@1.5.2(zod@3.25.76): dependencies: - "@ai-sdk/provider": 1.1.3 - "@ai-sdk/provider-utils": 2.2.8(zod@3.25.76) - partial-json: 0.1.7 - optionalDependencies: + "@ai-sdk/provider": 2.0.0 + "@ai-sdk/provider-utils": 3.0.15(zod@3.25.76) zod: 3.25.76 optional: true @@ -6986,6 +7833,8 @@ snapshots: dependencies: p-map: 2.1.0 + p-finally@1.0.0: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -7004,8 +7853,42 @@ snapshots: p-map@2.1.0: {} + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + "@types/retry": 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + p-try@2.2.0: {} + pac-proxy-agent@7.2.0: + dependencies: + "@tootallnate/quickjs-emscripten": 0.23.0 + agent-base: 7.1.4 + debug: 4.4.1 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + optional: true + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + optional: true + package-manager-detector@0.2.11: dependencies: quansync: 0.2.11 @@ -7016,7 +7899,7 @@ snapshots: parseurl@1.3.3: {} - partial-json@0.1.7: + patchright-core@1.56.1: optional: true path-exists@4.0.0: {} @@ -7033,6 +7916,9 @@ snapshots: path-type@4.0.0: {} + pend@1.2.0: + optional: true + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -7097,11 +7983,8 @@ snapshots: process-warning@5.0.0: {} - promisify-any@2.0.1: - dependencies: - bluebird: 2.11.0 - co-bluebird: 1.1.0 - is-generator: 1.0.3 + progress@2.0.3: + optional: true prop-types@15.8.1: dependencies: @@ -7114,6 +7997,23 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + optional: true + + proxy-from-env@1.1.0: + optional: true + pump@3.0.3: dependencies: end-of-stream: 1.4.5 @@ -7121,6 +8021,22 @@ snapshots: punycode@2.3.1: {} + puppeteer-core@22.15.0(bufferutil@4.0.9): + dependencies: + "@puppeteer/browsers": 2.3.0 + chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) + debug: 4.4.1 + devtools-protocol: 0.0.1312386 + ws: 8.18.3(bufferutil@4.0.9) + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - utf-8-validate + optional: true + qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -7183,6 +8099,9 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + require-directory@2.1.1: + optional: true + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -7211,6 +8130,8 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + retry@0.13.1: {} + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -7243,8 +8164,6 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} safe-push-apply@1.0.0: @@ -7368,6 +8287,8 @@ snapshots: signal-exit@4.1.0: {} + simple-wcswidth@1.1.2: {} + slash@3.0.0: {} slice-ansi@5.0.0: @@ -7380,10 +8301,31 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + smart-buffer@4.2.0: + optional: true + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + optional: true + + socks@2.8.7: + dependencies: + ip-address: 10.0.1 + smart-buffer: 4.2.0 + optional: true + sonic-boom@4.2.0: dependencies: atomic-sleep: 1.0.0 + source-map@0.6.1: + optional: true + spawndamnit@3.0.1: dependencies: cross-spawn: 7.0.6 @@ -7393,8 +8335,6 @@ snapshots: sprintf-js@1.0.3: {} - statuses@1.5.0: {} - statuses@2.0.1: {} statuses@2.0.2: {} @@ -7406,6 +8346,16 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + streamx@2.23.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + string-argv@0.3.2: {} string-width@4.2.3: @@ -7494,8 +8444,38 @@ snapshots: react: 19.1.0 use-sync-external-store: 1.5.0(react@19.1.0) + tar-fs@3.1.1: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.5.0 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + optional: true + + tar-stream@3.1.7: + dependencies: + b4a: 1.7.3 + fast-fifo: 1.3.2 + streamx: 2.23.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + term-size@2.2.1: {} + text-decoder@1.2.3: + dependencies: + b4a: 1.7.3 + transitivePeerDependencies: + - react-native-b4a + optional: true + thread-stream@3.1.0: dependencies: real-require: 0.2.0 @@ -7545,11 +8525,6 @@ snapshots: type-fest@0.21.3: {} - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - type-is@2.0.1: dependencies: content-type: 1.0.5 @@ -7609,6 +8584,12 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + optional: true + undici-types@5.26.5: {} universalify@0.1.2: {} @@ -7619,12 +8600,17 @@ snapshots: dependencies: punycode: 2.3.1 + urlpattern-polyfill@10.0.0: + optional: true + use-sync-external-store@1.5.0(react@19.1.0): dependencies: react: 19.1.0 util-deprecate@1.0.2: {} + uuid@10.0.0: {} + uuid@11.1.0: {} uuid@9.0.1: {} @@ -7699,6 +8685,13 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + optional: true + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 @@ -7711,12 +8704,38 @@ snapshots: optionalDependencies: bufferutil: 4.0.9 + y18n@5.0.8: + optional: true + yaml@2.8.0: {} + yargs-parser@21.1.1: + optional: true + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + optional: true + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + optional: true + yocto-queue@0.1.0: {} zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76 + zod@3.23.8: + optional: true + zod@3.25.76: {} diff --git a/smithery.config.js b/smithery.config.js deleted file mode 100644 index c082c3c..0000000 --- a/smithery.config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @type {import('esbuild').BuildOptions} - */ -export default { - esbuild: { - // Mark playwright-core as external to prevent bundling - // This avoids the relative path resolution issue in Docker - external: ["playwright-core"], - }, -}; diff --git a/src/config.ts b/src/config.ts index 3ceb662..07c7d5a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,7 +1,4 @@ -import type { Cookie } from "playwright-core"; import type { Config } from "../config.d.ts"; -import { z } from "zod"; -import { AvailableModelSchema } from "@browserbasehq/stagehand"; export type ToolCapability = "core" | string; @@ -13,10 +10,9 @@ export type CLIOptions = { persist?: boolean; port?: number; host?: string; - cookies?: Cookie[]; browserWidth?: number; browserHeight?: number; - modelName?: z.infer; + modelName?: string; modelApiKey?: string; keepAlive?: boolean; experimental?: boolean; @@ -35,7 +31,6 @@ const defaultConfig: Config = { browserWidth: 1024, browserHeight: 768, }, - cookies: undefined, modelName: "gemini-2.0-flash", // Default Model }; @@ -98,7 +93,6 @@ export async function configFromCLIOptions( browserHeight: cliOptions.browserHeight, }, advancedStealth: cliOptions.advancedStealth, - cookies: cliOptions.cookies, modelName: cliOptions.modelName, modelApiKey: cliOptions.modelApiKey, keepAlive: cliOptions.keepAlive, diff --git a/src/context.ts b/src/context.ts index 9fe3daa..00a27e5 100644 --- a/src/context.ts +++ b/src/context.ts @@ -4,7 +4,7 @@ import type { Config } from "../config.d.ts"; import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { listResources, readResource } from "./mcp/resources.js"; import { SessionManager } from "./sessionManager.js"; -import type { MCPTool, BrowserSession } from "./types/types.js"; +import type { MCPTool } from "./types/types.js"; /** * MCP Server Context @@ -54,33 +54,6 @@ export class Context { return session.stagehand; } - public async getActivePage(): Promise { - // Get page from session manager - const session = await this.sessionManager.getSession( - this.currentSessionId, - this.config, - ); - if (session && session.page && !session.page.isClosed()) { - return session.page; - } - - return null; - } - - public async getActiveBrowser( - createIfMissing: boolean = true, - ): Promise { - const session = await this.sessionManager.getSession( - this.currentSessionId, - this.config, - createIfMissing, - ); - if (!session || !session.browser || !session.browser.isConnected()) { - return null; - } - return session.browser; - } - async run(tool: MCPTool, args: unknown): Promise { try { console.error( diff --git a/src/index.ts b/src/index.ts index b59473b..5f987a7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,7 +10,6 @@ import type { MCPToolsArray } from "./types/types.js"; import { Context } from "./context.js"; import type { Config } from "../config.d.ts"; import { TOOLS } from "./tools/index.js"; -import { AvailableModelSchema } from "@browserbasehq/stagehand"; import { RESOURCE_TEMPLATES } from "./mcp/resources.js"; import { @@ -93,9 +92,10 @@ export const configSchema = z ), }) .optional(), - modelName: AvailableModelSchema.optional().describe( - "The model to use for Stagehand (default: gemini-2.0-flash)", - ), // Already an existing Zod Enum + modelName: z + .string() + .optional() + .describe("The model to use for Stagehand (default: gemini-2.0-flash)"), modelApiKey: z .string() .optional() @@ -111,7 +111,11 @@ export const configSchema = z (data) => { // If a non-default model is explicitly specified, API key is required if (data.modelName && data.modelName !== "gemini-2.0-flash") { - return data.modelApiKey !== undefined && data.modelApiKey.length > 0; + return ( + data.modelApiKey !== undefined && + typeof data.modelApiKey === "string" && + data.modelApiKey.length > 0 + ); } return true; }, @@ -132,7 +136,7 @@ export default function ({ config }: { config: z.infer }) { const server = new McpServer({ name: "Browserbase MCP Server", - version: "2.2.0", + version: "2.3.0", description: "Cloud browser automation server powered by Browserbase and Stagehand. Enables LLMs to navigate websites, interact with elements, extract data, and capture screenshots using natural language commands.", capabilities: { @@ -140,6 +144,7 @@ export default function ({ config }: { config: z.infer }) { subscribe: true, listChanged: true, }, + tools: {}, }, }); diff --git a/src/sessionManager.ts b/src/sessionManager.ts index 65aead7..e6aacc9 100644 --- a/src/sessionManager.ts +++ b/src/sessionManager.ts @@ -1,6 +1,5 @@ -import { BrowserContext, Stagehand } from "@browserbasehq/stagehand"; +import { Stagehand } from "@browserbasehq/stagehand"; import type { Config } from "../config.d.ts"; -import type { Cookie } from "playwright-core"; import { clearScreenshotsForSession } from "./mcp/resources.js"; import type { BrowserSession, CreateSessionParams } from "./types/types.js"; import { randomUUID } from "crypto"; @@ -22,17 +21,22 @@ export const createStagehandInstance = async ( throw new Error("Browserbase API Key and Project ID are required"); } + const modelName = params.modelName || config.modelName || "gemini-2.0-flash"; + const modelApiKey = + config.modelApiKey || + process.env.GEMINI_API_KEY || + process.env.GOOGLE_API_KEY; + const stagehand = new Stagehand({ env: "BROWSERBASE", apiKey, projectId, - modelName: params.modelName || config.modelName || "gemini-2.0-flash", - modelClientOptions: { - apiKey: - config.modelApiKey || - process.env.GEMINI_API_KEY || - process.env.GOOGLE_API_KEY, - }, + model: modelApiKey + ? { + apiKey: modelApiKey, + modelName: modelName, + } + : modelName, ...(params.browserbaseSessionID && { browserbaseSessionID: params.browserbaseSessionID, }), @@ -127,38 +131,6 @@ export class SessionManager { return this.activeSessionId; } - /** - * Adds cookies to a browser context - * @param context Playwright browser context - * @param cookies Array of cookies to add - */ - async addCookiesToContext( - context: BrowserContext, - cookies: Cookie[], - ): Promise { - if (!cookies || cookies.length === 0) { - return; - } - - try { - process.stderr.write( - `[SessionManager] Adding ${cookies.length} cookies to browser context\n`, - ); - - // Injecting cookies into the Browser Context - await context.addCookies(cookies); - process.stderr.write( - `[SessionManager] Successfully added cookies to browser context\n`, - ); - } catch (error) { - process.stderr.write( - `[SessionManager] Error adding cookies to browser context: ${ - error instanceof Error ? error.message : String(error) - }\n`, - ); - } - } - /** * Creates a new Browserbase session using Stagehand. * @param newSessionId - Internal session ID for tracking in SessionManager @@ -193,15 +165,12 @@ export class SessionManager { newSessionId, ); - // Get the page and browser from Stagehand - const page = stagehand.page; - const browser = page.context().browser(); - - if (!browser) { - throw new Error("Failed to get browser from Stagehand page context"); + const page = stagehand.context.pages()[0]; + if (!page) { + throw new Error("No pages available in Stagehand context"); } - const browserbaseSessionId = stagehand.browserbaseSessionID; + const browserbaseSessionId = stagehand.browserbaseSessionId; if (!browserbaseSessionId) { throw new Error( @@ -216,63 +185,7 @@ export class SessionManager { `[SessionManager] Browserbase Live Debugger URL: https://www.browserbase.com/sessions/${browserbaseSessionId}\n`, ); - // Set up disconnect handler - browser.on("disconnected", () => { - process.stderr.write( - `[SessionManager] Disconnected: ${newSessionId}\n`, - ); - this.browsers.delete(newSessionId); - if ( - this.defaultBrowserSession && - this.defaultBrowserSession.browser === browser - ) { - process.stderr.write( - `[SessionManager] Disconnected (default): ${newSessionId}\n`, - ); - this.defaultBrowserSession = null; - // Reset active session to default ID since default session needs recreation - this.setActiveSessionId(this.defaultSessionId); - } - if ( - this.activeSessionId === newSessionId && - newSessionId !== this.defaultSessionId - ) { - process.stderr.write( - `[SessionManager] WARN - Active session disconnected, resetting to default: ${newSessionId}\n`, - ); - this.setActiveSessionId(this.defaultSessionId); - } - - // Purge any screenshots associated with both internal and Browserbase IDs - try { - clearScreenshotsForSession(newSessionId); - const bbId = browserbaseSessionId; - if (bbId) { - clearScreenshotsForSession(bbId); - } - } catch (err) { - process.stderr.write( - `[SessionManager] WARN - Failed to clear screenshots on disconnect for ${newSessionId}: ${ - err instanceof Error ? err.message : String(err) - }\n`, - ); - } - }); - - // Add cookies to the context if they are provided in the config - if ( - config.cookies && - Array.isArray(config.cookies) && - config.cookies.length > 0 - ) { - await this.addCookiesToContext( - page.context() as BrowserContext, - config.cookies, - ); - } - const sessionObj: BrowserSession = { - browser, page, sessionId: browserbaseSessionId, stagehand, @@ -330,13 +243,9 @@ export class SessionManager { process.stderr.write( `[SessionManager] Successfully closed Stagehand and browser for session: ${sessionIdToLog}\n`, ); - // After close, purge any screenshots associated with both internal and Browserbase IDs + // After close, purge any screenshots associated with this session try { clearScreenshotsForSession(sessionIdToLog); - const bbId = session?.stagehand?.browserbaseSessionID; - if (bbId) { - clearScreenshotsForSession(bbId); - } } catch (err) { process.stderr.write( `[SessionManager] WARN - Failed to clear screenshots after close for ${sessionIdToLog}: ${ @@ -379,17 +288,25 @@ export class SessionManager { process.stderr.write( `[SessionManager] Default session ${sessionId} not found, creating.\n`, ); - } else if ( - !this.defaultBrowserSession.browser.isConnected() || - this.defaultBrowserSession.page.isClosed() - ) { - needsReCreation = true; - process.stderr.write( - `[SessionManager] Default session ${sessionId} is stale, recreating.\n`, - ); - await this.closeBrowserGracefully(this.defaultBrowserSession, sessionId); - this.defaultBrowserSession = null; - this.browsers.delete(sessionId); + } else { + try { + // Try a simple operation to validate the session is alive + const pages = this.defaultBrowserSession.stagehand.context.pages(); + if (!pages || pages.length === 0) { + throw new Error("No pages available"); + } + } catch { + needsReCreation = true; + process.stderr.write( + `[SessionManager] Default session ${sessionId} is stale, recreating.\n`, + ); + await this.closeBrowserGracefully( + this.defaultBrowserSession, + sessionId, + ); + this.defaultBrowserSession = null; + this.browsers.delete(sessionId); + } } if (needsReCreation) { @@ -474,8 +391,12 @@ export class SessionManager { return null; } - // Validate the found session - if (!sessionObj.browser.isConnected() || sessionObj.page.isClosed()) { + try { + const pages = sessionObj.stagehand.context.pages(); + if (!pages || pages.length === 0) { + throw new Error("No pages available"); + } + } catch { process.stderr.write( `[SessionManager] WARN - Found session ${sessionId} is stale, removing.\n`, ); @@ -518,17 +439,6 @@ export class SessionManager { // Remove from browsers map this.browsers.delete(sessionId); - // Always purge screenshots for this (internal) session id - try { - clearScreenshotsForSession(sessionId); - } catch (err) { - process.stderr.write( - `[SessionManager] WARN - Failed to clear screenshots during cleanup for ${sessionId}: ${ - err instanceof Error ? err.message : String(err) - }\n`, - ); - } - // Clear default session reference if this was the default if (sessionId === this.defaultSessionId && this.defaultBrowserSession) { this.defaultBrowserSession = null; diff --git a/src/tools/act.ts b/src/tools/act.ts index 3957708..d395a66 100644 --- a/src/tools/act.ts +++ b/src/tools/act.ts @@ -41,8 +41,7 @@ async function handleAct( try { const stagehand = await context.getStagehand(); - await stagehand.page.act({ - action: params.action, + await stagehand.act(params.action, { variables: params.variables, }); diff --git a/src/tools/extract.ts b/src/tools/extract.ts index ffd649d..7bfb56b 100644 --- a/src/tools/extract.ts +++ b/src/tools/extract.ts @@ -36,7 +36,8 @@ async function handleExtract( const action = async (): Promise => { try { const stagehand = await context.getStagehand(); - const extraction = await stagehand.page.extract(params.instruction); + + const extraction = await stagehand.extract(params.instruction); return { content: [ diff --git a/src/tools/navigate.ts b/src/tools/navigate.ts index 5992994..c6309a0 100644 --- a/src/tools/navigate.ts +++ b/src/tools/navigate.ts @@ -23,14 +23,16 @@ async function handleNavigate( const action = async (): Promise => { try { const stagehand = await context.getStagehand(); - const page = await context.getActivePage(); + + const pages = stagehand.context.pages(); + const page = pages[0]; if (!page) { throw new Error("No active page available"); } await page.goto(params.url, { waitUntil: "domcontentloaded" }); - const sessionId = stagehand.browserbaseSessionID; + const sessionId = stagehand.browserbaseSessionId; if (!sessionId) { throw new Error("No Browserbase session ID available"); } diff --git a/src/tools/observe.ts b/src/tools/observe.ts index 583b21f..b473300 100644 --- a/src/tools/observe.ts +++ b/src/tools/observe.ts @@ -22,13 +22,6 @@ const ObserveInputSchema = z.object({ you want to observe. This tool is designed to help you identify interactive elements that you can later use with the act tool for performing actions like clicking, typing, or form submission.`, ), - returnAction: z - .boolean() - .optional() - .describe( - `Whether to return the action to perform on the element. If true, the action will be returned as a string. - If false, the action will not be returned.`, - ), }); type ObserveInput = z.infer; @@ -47,10 +40,7 @@ async function handleObserve( try { const stagehand = await context.getStagehand(); - const observations = await stagehand.page.observe({ - instruction: params.instruction, - returnAction: params.returnAction, - }); + const observations = await stagehand.observe(params.instruction); return { content: [ diff --git a/src/tools/screenshot.ts b/src/tools/screenshot.ts index 69e06e4..5a96bf9 100644 --- a/src/tools/screenshot.ts +++ b/src/tools/screenshot.ts @@ -6,7 +6,6 @@ import { registerScreenshot } from "../mcp/resources.js"; /** * Screenshot - * Docs: https://playwright.dev/docs/screenshots * * This tool is used to take a screenshot of the current page. */ @@ -29,7 +28,9 @@ async function handleScreenshot( ): Promise { const action = async (): Promise => { try { - const page = await context.getActivePage(); + const stagehand = await context.getStagehand(); + const page = stagehand.context.pages()[0]; + if (!page) { throw new Error("No active page available"); } diff --git a/src/tools/session.ts b/src/tools/session.ts index a3f9c2a..aa2406a 100644 --- a/src/tools/session.ts +++ b/src/tools/session.ts @@ -65,7 +65,6 @@ async function handleCreateSession( if ( !session || - !session.browser || !session.page || !session.sessionId || !session.stagehand @@ -81,7 +80,7 @@ async function handleCreateSession( apiKey: config.browserbaseApiKey, }); - const browserbaseSessionId = session.stagehand.browserbaseSessionID; + const browserbaseSessionId = session.stagehand.browserbaseSessionId; if (!browserbaseSessionId) { throw new Error( "Browserbase session ID not found in Stagehand instance", diff --git a/src/tools/url.ts b/src/tools/url.ts index 84988bb..da7e124 100644 --- a/src/tools/url.ts +++ b/src/tools/url.ts @@ -29,8 +29,13 @@ async function handleGetUrl( try { const stagehand = await context.getStagehand(); - // Get the current URL from the Playwright page - const currentUrl = stagehand.page.url(); + const page = stagehand.context.pages()[0]; + + if (!page) { + throw new Error("No active page available"); + } + + const currentUrl = page.url(); return { content: [ diff --git a/src/types/types.ts b/src/types/types.ts index b516c99..f09c9a7 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,4 +1,4 @@ -import type { Stagehand, Browser, Page } from "@browserbasehq/stagehand"; +import type { Stagehand } from "@browserbasehq/stagehand"; import { ImageContent, TextContent } from "@modelcontextprotocol/sdk/types.js"; import { Tool } from "../tools/tool.js"; import { InputType } from "../tools/tool.js"; @@ -6,8 +6,7 @@ import { InputType } from "../tools/tool.js"; export type StagehandSession = { id: string; // MCP-side ID stagehand: Stagehand; // owns the Browserbase session - page: Page; - browser: Browser; + page: any; // TODO: replace with Stagehand v3 Page created: number; metadata?: Record; // optional extras (proxy, contextId, bbSessionId) }; @@ -23,8 +22,7 @@ export type CreateSessionParams = { }; export type BrowserSession = { - browser: Browser; - page: Page; + page: any; // TODO: replace with Stagehand v3 Page sessionId: string; stagehand: Stagehand; };