diff --git a/package-lock.json b/package-lock.json index 6cd4f0281..7ae51fc01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,9 +110,9 @@ } }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.2.133.tgz", - "integrity": "sha512-J79AWcnoPaVU55fLAcdUdgYuj4PjXx1qkZGHtoKAMQ7XMktH21nW/VTFkIo/aKcGDsbSYNxMtw+zp/gduCmYww==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.168.tgz", + "integrity": "sha512-tvFGCGVX9tesGBzfpK008nRmv91pd3ToapDpJbjdwiFSLGWT9n+dc/qurwgxgv9VwWRvV8nWTc3zLRSFI8Lf2g==", "cpu": [ "arm64" ], @@ -123,9 +123,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.2.133.tgz", - "integrity": "sha512-juKz5zhWMYPClHWzraJ+CY/DoRfYfgaKsIQC0Tvln+scVJecEYt7tmvw+mmy2yQtPI66BqtoH12Aqnwyq5+RVw==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.168.tgz", + "integrity": "sha512-J5dZUCrwjz4+gY2dAds2rMDWWSdcMl9jEDpZIzKNCx0f0KlJfE1C7/+stOJaBv6tGj8d/mmzcfBCeNBS1KScgA==", "cpu": [ "x64" ], @@ -136,9 +136,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.2.133.tgz", - "integrity": "sha512-80agdXdE1/wCofiyiSGw1EINXv+xcjXaXkmAQgtAwhE22rtzjPh6D+Zm6sHRhyEdogj8PAVw6iAVRVV1xLYq6w==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.168.tgz", + "integrity": "sha512-K9fltcI0VJBr21z4t0iJ4aArFtiS9UwhmMGkxl1jAIM0jatGqiHHbbk+qaCB04va3U6vaflukgtmbpogSB36yQ==", "cpu": [ "arm64" ], @@ -149,9 +149,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.2.133.tgz", - "integrity": "sha512-lvB9C7mnGO1zZp6W90H7zcj11Qaw2Thcwcoov5cFRuC31NDuIZTdMHYMwXBqACep61aBX1fgawoY/+pq0Hptpw==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.168.tgz", + "integrity": "sha512-uOFtBJjntrYkXlHPRK+cTx1pCc37XxGQ/kN3KBK/KoIDcIrmU8DcX2WUw5IJHJqpG2Qjb7gZ5xAbcw3WTmduwQ==", "cpu": [ "arm64" ], @@ -162,9 +162,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.2.133.tgz", - "integrity": "sha512-nl9Law15GS90GEhddMaMuuSJXpRCHLOFm39Aqy5KxSqA6sdLXvi1kLEs2IIJ6XrUDTq0LnwDYACSTR21ybq3cg==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.168.tgz", + "integrity": "sha512-0Fw4ICZopwKbqNQo64HqkpJw5cqxOxFOV/w8GCS2hDsJ+0aogmK/B78t4iV6rFHIkC076Nm5UH14FP1eOIJ3OA==", "cpu": [ "x64" ], @@ -175,9 +175,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.2.133.tgz", - "integrity": "sha512-IShZIbuXLxHzjVcccKFZUYXtN6FwrHVlh3y5YDuQORLYSGSHtcUAfGAT1csGz7fTQ3ZvBfY8ApoWXMR8I65l8g==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.168.tgz", + "integrity": "sha512-JwYD7oxYlIVYDFhgj+QVHgWbJUVGMXsiecB6WQ5VS5u4OqUorivJPFYPaP469otMj4HFtkDupESB+7Zp4jMmUw==", "cpu": [ "x64" ], @@ -188,9 +188,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.2.133.tgz", - "integrity": "sha512-yiQqa9t5OLXsM2a49FS7evQyalEWPtAd5sv4LbymSlq/QrBqDymvgrxSwxHwaZan5JlNYoQKRlUW27lc2vTLQA==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.168.tgz", + "integrity": "sha512-NREaLXAxl23pEzoU7bmX6u8MibAYEY2t8XP5xtj/vMO6UwxFjT3YgGsTuQcnFP+1qsjWaOBCia2ZQnqI68Y0Ng==", "cpu": [ "arm64" ], @@ -201,9 +201,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.2.133.tgz", - "integrity": "sha512-tH6tviy+vYPoL6M7qGCg4gKLt3w5AxhmUN7yi8Rs/2AjMbYjPuM6F/G7T+4/CTg246k9gZxxA86Dxs95gQMv8A==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.168.tgz", + "integrity": "sha512-Ha3eivz2Wm4y3BR+Xpn/r+CBM8ARC6knYDLbjLqH/DxjKahr6WB60xQkBD1U6wchT6w7zfIQqQGbucuUOTTuew==", "cpu": [ "x64" ], @@ -213,6 +213,27 @@ "win32" ] }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.102.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.102.0.tgz", + "integrity": "sha512-cThh3KcPW3lzkFyTz1cjyhJvOVw45NkLMoowO2ZJ/76CBz44ADUon+NsjEc/PypAkARs72Xu8qxTnx6PAOTQUQ==", + "license": "MIT", + "dependencies": { + "json-schema-to-ts": "^3.1.1", + "standardwebhooks": "^1.0.0" + }, + "bin": { + "anthropic-ai-sdk": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, "node_modules/@babel/cli": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", @@ -11465,6 +11486,12 @@ "integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==", "license": "CC0-1.0" }, + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", + "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==", + "license": "MIT" + }, "node_modules/@standard-schema/spec": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", @@ -13055,16 +13082,6 @@ "undici-types": "~6.21.0" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.4" - } - }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", @@ -14458,18 +14475,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/ai": { "version": "5.0.78", "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.78.tgz", @@ -15223,6 +15228,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, "license": "MIT" }, "node_modules/at-least-node": { @@ -16721,6 +16727,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -17579,6 +17586,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -18683,6 +18691,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -22329,6 +22338,12 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", + "license": "Unlicense" + }, "node_modules/fast-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", @@ -22812,6 +22827,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -22824,12 +22840,6 @@ "node": ">= 6" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", - "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", - "license": "MIT" - }, "node_modules/formatly": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", @@ -22846,19 +22856,6 @@ "node": ">=18.3.0" } }, - "node_modules/formdata-node": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", - "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", - "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 12.20" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -23991,15 +23988,6 @@ "node": ">= 6" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -29012,26 +29000,6 @@ "node": "*" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-exports-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", @@ -29628,51 +29596,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openai": { - "version": "4.104.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", - "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - }, - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "ws": "^8.18.0", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "ws": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/openai/node_modules/@types/node": { - "version": "18.19.130", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/openai/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, "node_modules/opentype.js": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.8.0.tgz", @@ -33747,6 +33670,16 @@ "node": ">=8" } }, + "node_modules/standardwebhooks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.0.0.tgz", + "integrity": "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==", + "license": "MIT", + "dependencies": { + "@stablelib/base64": "^1.0.0", + "fast-sha256": "^1.3.0" + } + }, "node_modules/stat-mode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", @@ -36208,15 +36141,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -36899,6 +36823,16 @@ "zod": "^3.18.0" } }, + "node_modules/zod3": { + "name": "zod", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zustand": { "version": "5.0.11", "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz", @@ -38213,13 +38147,14 @@ "version": "0.1.91-beta.2", "dependencies": { "@agentclientprotocol/sdk": "^0.17.1", - "@anthropic-ai/claude-agent-sdk": "^0.2.133", + "@anthropic-ai/claude-agent-sdk": "0.3.168", + "@anthropic-ai/sdk": "^0.102.0", "@getpaseo/client": "0.1.91-beta.2", "@getpaseo/highlight": "0.1.91-beta.2", "@getpaseo/protocol": "0.1.91-beta.2", "@getpaseo/relay": "0.1.91-beta.2", "@isaacs/ttlcache": "^2.1.4", - "@modelcontextprotocol/sdk": "^1.20.1", + "@modelcontextprotocol/sdk": "^1.29.0", "@opencode-ai/sdk": "1.14.46", "@xterm/headless": "^6.0.0", "ai": "5.0.78", @@ -38231,7 +38166,7 @@ "lru-cache": "^11.5.1", "mnemonic-id": "^3.2.7", "node-pty": "1.2.0-beta.11", - "openai": "^4.20.0", + "openai": "^6.42.0", "p-limit": "^7.3.0", "p-memoize": "^8.0.0", "pino": "^10.2.0", @@ -38244,8 +38179,9 @@ "uuid": "^9.0.1", "which": "^5.0.0", "ws": "^8.14.2", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.25.1" + "zod": "^4.1.8", + "zod-to-json-schema": "^3.25.1", + "zod3": "npm:zod@^3.25.76" }, "devDependencies": { "@playwright/test": "^1.56.1", @@ -38262,51 +38198,29 @@ } }, "packages/server/node_modules/@anthropic-ai/claude-agent-sdk": { - "version": "0.2.133", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.2.133.tgz", - "integrity": "sha512-teqnsqYB7LeZ7BYRQx66BSB+ykiswiVJyeEQ3chdQrTsVhz7lK47uWqZ70zD6vJIh4a5PgljFcZabTNFHjJcJA==", + "version": "0.3.168", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.168.tgz", + "integrity": "sha512-C7n9uS1fsAt9lFKw/ovsFNAlPI7UXE2uPQbOzzKLpDNjfFR5spthALhV49b01PtYWEzTo3W3OJfgCv6wooXtYg==", "license": "SEE LICENSE IN README.md", - "dependencies": { - "@anthropic-ai/sdk": "^0.81.0", - "@modelcontextprotocol/sdk": "^1.29.0" - }, "engines": { "node": ">=18.0.0" }, "optionalDependencies": { - "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.2.133", - "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.2.133", - "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.2.133", - "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.2.133", - "@anthropic-ai/claude-agent-sdk-linux-x64": "0.2.133", - "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.2.133", - "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.2.133", - "@anthropic-ai/claude-agent-sdk-win32-x64": "0.2.133" + "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.168", + "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.168", + "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.168", + "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.168", + "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.168", + "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.168", + "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.168", + "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.168" }, "peerDependencies": { + "@anthropic-ai/sdk": ">=0.93.0", + "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.0.0" } }, - "packages/server/node_modules/@anthropic-ai/sdk": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.81.0.tgz", - "integrity": "sha512-D4K5PvEV6wPiRtVlVsJHIUhHAmOZ6IT/I9rKlTf84gR7GyyAurPJK7z9BOf/AZqC5d1DhYQGJNKRmV+q8dGhgw==", - "license": "MIT", - "dependencies": { - "json-schema-to-ts": "^3.1.1" - }, - "bin": { - "anthropic-ai-sdk": "bin/cli" - }, - "peerDependencies": { - "zod": "^3.25.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } - }, "packages/server/node_modules/@isaacs/ttlcache": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-2.1.4.tgz", @@ -38730,6 +38644,24 @@ "node": ">= 0.6" } }, + "packages/server/node_modules/openai": { + "version": "6.42.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.42.0.tgz", + "integrity": "sha512-1WFEt/uXMXOLhYRNkgJWo08Y2YNvNwpVU72K7ibrWgWpNOXd4VojXLbe6SQ4bLiUQ3Y8jz4IiyVkylJCL1DtZg==", + "license": "Apache-2.0", + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "packages/server/node_modules/p-limit": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.0.tgz", diff --git a/packages/server/package.json b/packages/server/package.json index 8884f1fec..0685d9be0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -58,13 +58,14 @@ }, "dependencies": { "@agentclientprotocol/sdk": "^0.17.1", - "@anthropic-ai/claude-agent-sdk": "^0.2.133", + "@anthropic-ai/claude-agent-sdk": "0.3.168", + "@anthropic-ai/sdk": "^0.102.0", "@getpaseo/client": "0.1.91-beta.2", "@getpaseo/highlight": "0.1.91-beta.2", "@getpaseo/protocol": "0.1.91-beta.2", "@getpaseo/relay": "0.1.91-beta.2", "@isaacs/ttlcache": "^2.1.4", - "@modelcontextprotocol/sdk": "^1.20.1", + "@modelcontextprotocol/sdk": "^1.29.0", "@opencode-ai/sdk": "1.14.46", "@xterm/headless": "^6.0.0", "ai": "5.0.78", @@ -76,7 +77,7 @@ "lru-cache": "^11.5.1", "mnemonic-id": "^3.2.7", "node-pty": "1.2.0-beta.11", - "openai": "^4.20.0", + "openai": "^6.42.0", "p-limit": "^7.3.0", "p-memoize": "^8.0.0", "pino": "^10.2.0", @@ -89,8 +90,9 @@ "uuid": "^9.0.1", "which": "^5.0.0", "ws": "^8.14.2", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.25.1" + "zod": "^4.1.8", + "zod-to-json-schema": "^3.25.1", + "zod3": "npm:zod@^3.25.76" }, "devDependencies": { "@playwright/test": "^1.56.1", diff --git a/packages/server/scripts/test-codex-mcp-servers.ts b/packages/server/scripts/test-codex-mcp-servers.ts index f5e98a9e4..323430f81 100644 --- a/packages/server/scripts/test-codex-mcp-servers.ts +++ b/packages/server/scripts/test-codex-mcp-servers.ts @@ -1,6 +1,6 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; -import { z } from "zod"; +import { z } from "zod3"; async function main() { const transport = new StdioClientTransport({ diff --git a/packages/server/src/server/agent/agent-manager.ts b/packages/server/src/server/agent/agent-manager.ts index dc6d61480..6e7fe91cb 100644 --- a/packages/server/src/server/agent/agent-manager.ts +++ b/packages/server/src/server/agent/agent-manager.ts @@ -7,7 +7,7 @@ import { } from "@getpaseo/protocol/agent-lifecycle"; import { isDelegatedAgent, PARENT_AGENT_ID_LABEL } from "@getpaseo/protocol/agent-labels"; import type { Logger } from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import type { TerminalManager } from "../../terminal/terminal-manager.js"; import { diff --git a/packages/server/src/server/agent/agent-metadata-generator.ts b/packages/server/src/server/agent/agent-metadata-generator.ts index 35035b3fc..bc8f51acf 100644 --- a/packages/server/src/server/agent/agent-metadata-generator.ts +++ b/packages/server/src/server/agent/agent-metadata-generator.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { Logger } from "pino"; import type { AgentManager } from "./agent-manager.js"; diff --git a/packages/server/src/server/agent/agent-response-loop.real.e2e.test.ts b/packages/server/src/server/agent/agent-response-loop.real.e2e.test.ts index ec9dbfdb1..725534a7b 100644 --- a/packages/server/src/server/agent/agent-response-loop.real.e2e.test.ts +++ b/packages/server/src/server/agent/agent-response-loop.real.e2e.test.ts @@ -4,7 +4,7 @@ import { mkdtempSync, rmSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { randomUUID } from "crypto"; -import { z } from "zod"; +import { z } from "zod3"; import express from "express"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js"; diff --git a/packages/server/src/server/agent/agent-response-loop.test.ts b/packages/server/src/server/agent/agent-response-loop.test.ts index 5e2b84d59..10691404c 100644 --- a/packages/server/src/server/agent/agent-response-loop.test.ts +++ b/packages/server/src/server/agent/agent-response-loop.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from "vitest"; -import { z } from "zod"; +import { z } from "zod3"; import { getStructuredAgentResponse, generateStructuredAgentResponseWithFallback, diff --git a/packages/server/src/server/agent/agent-response-loop.ts b/packages/server/src/server/agent/agent-response-loop.ts index ac72af9c4..c6985fac0 100644 --- a/packages/server/src/server/agent/agent-response-loop.ts +++ b/packages/server/src/server/agent/agent-response-loop.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import { zodToJsonSchema } from "zod-to-json-schema"; import Ajv, { type ErrorObject, type Options as AjvOptions } from "ajv"; import type { AgentProvider, AgentSessionConfig } from "./agent-sdk-types.js"; diff --git a/packages/server/src/server/agent/agent-storage.ts b/packages/server/src/server/agent/agent-storage.ts index 03501fbec..6c02fb5b1 100644 --- a/packages/server/src/server/agent/agent-storage.ts +++ b/packages/server/src/server/agent/agent-storage.ts @@ -1,6 +1,6 @@ import { promises as fs } from "node:fs"; import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import type { Logger } from "pino"; import { writeJsonFileAtomic } from "../atomic-file.js"; diff --git a/packages/server/src/server/agent/import-sessions.ts b/packages/server/src/server/agent/import-sessions.ts index 7f5922a84..2ffda2e4e 100644 --- a/packages/server/src/server/agent/import-sessions.ts +++ b/packages/server/src/server/agent/import-sessions.ts @@ -1,4 +1,4 @@ -import type { z } from "zod"; +import type { z } from "zod3"; import type { Logger } from "pino"; import type { ProviderSnapshotManager } from "./provider-snapshot-manager.js"; import type { AgentManager, ManagedAgent } from "./agent-manager.js"; diff --git a/packages/server/src/server/agent/mcp-parity.e2e.test.ts b/packages/server/src/server/agent/mcp-parity.e2e.test.ts index 9313d5730..32b1affd1 100644 --- a/packages/server/src/server/agent/mcp-parity.e2e.test.ts +++ b/packages/server/src/server/agent/mcp-parity.e2e.test.ts @@ -5,7 +5,7 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { afterAll, beforeAll, describe, expect, test } from "vitest"; import { experimental_createMCPClient } from "ai"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; -import { z } from "zod"; +import { z } from "zod3"; import { AGENT_WAIT_TIMEOUT_MS } from "./mcp-shared.js"; import { createTestPaseoDaemon, type TestPaseoDaemon } from "../test-utils/paseo-daemon.js"; diff --git a/packages/server/src/server/agent/mcp-sdk-types.ts b/packages/server/src/server/agent/mcp-sdk-types.ts new file mode 100644 index 000000000..9162d92d2 --- /dev/null +++ b/packages/server/src/server/agent/mcp-sdk-types.ts @@ -0,0 +1,33 @@ +import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; +import type { + CallToolResult, + ServerNotification, + ServerRequest, +} from "@modelcontextprotocol/sdk/types.js"; + +export interface ToolConfig { + title?: string; + description?: string; + inputSchema?: unknown; + outputSchema?: unknown; + annotations?: unknown; + [key: string]: unknown; +} + +// oxlint-disable-next-line typescript-eslint/no-explicit-any -- mirrors MCP's schema-inferred handler args without importing its zod-heavy generics. +type ToolArgs = any; + +export type ToolHandler = ( + args: ToolArgs, + extra: RequestHandlerExtra, +) => CallToolResult | Promise; + +export interface RegisteredTool { + remove?: () => void; +} + +export declare class McpServer { + constructor(config: { name: string; version: string }); + registerTool(name: string, config: ToolConfig, handler: ToolHandler): RegisteredTool; + connect(transport: unknown): Promise; +} diff --git a/packages/server/src/server/agent/mcp-server.test.ts b/packages/server/src/server/agent/mcp-server.test.ts index e9a0cde1f..ad07b7c7d 100644 --- a/packages/server/src/server/agent/mcp-server.test.ts +++ b/packages/server/src/server/agent/mcp-server.test.ts @@ -5,7 +5,7 @@ import { access, mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; import { join, resolve as resolvePath } from "node:path"; import { tmpdir } from "node:os"; import Ajv from "ajv"; -import { z } from "zod"; +import { z } from "zod3"; import { zodToJsonSchema } from "zod-to-json-schema"; import { createTestLogger } from "../../test-utils/test-logger.js"; diff --git a/packages/server/src/server/agent/mcp-server.ts b/packages/server/src/server/agent/mcp-server.ts index 79ca55489..33fc48823 100644 --- a/packages/server/src/server/agent/mcp-server.ts +++ b/packages/server/src/server/agent/mcp-server.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import { z } from "zod3"; import { ensureValidJson } from "../json-utils.js"; import type { Logger } from "pino"; import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; diff --git a/packages/server/src/server/agent/mcp-shared.ts b/packages/server/src/server/agent/mcp-shared.ts index db545fc06..2bf31d993 100644 --- a/packages/server/src/server/agent/mcp-shared.ts +++ b/packages/server/src/server/agent/mcp-shared.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { Logger } from "pino"; import type { AgentPermissionRequest } from "./agent-sdk-types.js"; diff --git a/packages/server/src/server/agent/providers/claude/claude-agent-sdk-types.ts b/packages/server/src/server/agent/providers/claude/claude-agent-sdk-types.ts new file mode 100644 index 000000000..6d1a25b79 --- /dev/null +++ b/packages/server/src/server/agent/providers/claude/claude-agent-sdk-types.ts @@ -0,0 +1,235 @@ +import type { ChildProcess } from "node:child_process"; + +export type PermissionMode = "default" | "acceptEdits" | "plan" | "bypassPermissions" | "auto"; + +export interface PermissionUpdate extends Record { + type: "addRules" | "replaceRules" | "removeRules"; + rules: string[]; + behavior: string; + destination: string; +} + +export type PermissionResult = + | { + behavior: "allow"; + updatedInput?: Record; + updatedPermissions?: PermissionUpdate[]; + } + | { + behavior: "deny"; + message?: string; + interrupt?: boolean; + updatedPermissions?: PermissionUpdate[]; + }; + +export type CanUseTool = ( + toolName: string, + input: Record, + options: { + signal: AbortSignal; + suggestions?: PermissionUpdate[]; + blockedPath?: string; + decisionReason?: string; + title?: string; + displayName?: string; + description?: string; + toolUseID: string; + agentID?: string; + }, +) => Promise; + +export interface AgentDefinition { + description: string; + prompt: string; + tools?: string[]; + disallowedTools?: string[]; + model?: string; + mcpServers?: unknown[]; + criticalSystemReminder_EXPERIMENTAL?: string; + skills?: string[]; + initialPrompt?: string; + maxTurns?: number; + background?: boolean; + memory?: "user" | "project" | "local"; + effort?: "low" | "medium" | "high" | "xhigh" | "max" | number; + permissionMode?: PermissionMode; +} + +export type McpServerConfig = + | { + type: "stdio"; + command: string; + args?: string[]; + env?: Record; + alwaysLoad?: boolean; + } + | { type: "http"; url: string; headers?: Record; alwaysLoad?: boolean } + | { type: "sse"; url: string; headers?: Record; alwaysLoad?: boolean }; + +export interface SpawnOptions { + command: string; + args: string[]; + cwd?: string; + env?: NodeJS.ProcessEnv; + signal?: AbortSignal; +} + +export interface Options { + abortController?: AbortController; + additionalDirectories?: string[]; + agent?: string; + agents?: Record; + allowedTools?: string[]; + allowDangerouslySkipPermissions?: boolean; + canUseTool?: CanUseTool; + continue?: boolean; + cwd?: string; + disallowedTools?: string[]; + enableFileCheckpointing?: boolean; + env?: NodeJS.ProcessEnv; + effort?: "low" | "medium" | "high" | "xhigh" | "max" | number; + includePartialMessages?: boolean; + maxThinkingTokens?: number; + mcpServers?: Record; + model?: string; + pathToClaudeCodeExecutable?: string; + permissionMode?: PermissionMode; + persistSession?: boolean; + resume?: string; + sessionId?: string; + settingSources?: Array<"user" | "project" | "local" | "managed">; + settings?: string | Record; + spawnClaudeCodeProcess?: (spawnOptions: SpawnOptions) => ChildProcess; + stderr?: (data: string) => void; + systemPrompt?: + | string + | { type: "preset"; preset: string; append?: string } + | Record; + thinking?: { type: "adaptive" } | { type: "enabled"; budgetTokens?: number }; + tools?: string[] | { type: "preset"; preset: string }; +} + +export interface SDKBaseMessage { + type: string; + subtype?: string; + uuid?: string; + session_id?: string; + parent_tool_use_id?: string | null; + [key: string]: unknown; +} + +export interface SDKUserMessage extends SDKBaseMessage { + type: "user"; + message: { role?: "user"; content: string | ReadonlyArray }; +} + +export interface SDKAssistantMessage extends SDKBaseMessage { + type: "assistant"; + message: { content: ReadonlyArray }; +} + +export interface SDKPartialAssistantMessage extends SDKBaseMessage { + type: "stream_event"; + event: + | { + type: "content_block_start"; + index: number; + content_block?: unknown; + [key: string]: unknown; + } + | { + type: "content_block_delta"; + index: number; + delta?: unknown; + [key: string]: unknown; + } + | { type: "content_block_stop"; index: number; [key: string]: unknown } + | { type: "message_start"; [key: string]: unknown } + | { type: "message_delta"; [key: string]: unknown }; + modelUsage?: unknown; +} + +export interface SDKInitSystemMessage extends SDKBaseMessage { + type: "system"; + subtype: "init"; + permissionMode: PermissionMode; + model?: string; +} + +export interface SDKStatusSystemMessage extends SDKBaseMessage { + type: "system"; + subtype: "status"; +} + +export interface SDKCompactBoundaryMessage extends SDKBaseMessage { + type: "system"; + subtype: "compact_boundary"; +} + +export interface SDKTaskNotificationMessage extends SDKBaseMessage { + type: "system"; + subtype: "task_notification"; + tool_use_id?: string; + usage?: unknown; +} + +export interface SDKTaskProgressMessage extends SDKBaseMessage { + type: "system"; + subtype: "task_progress"; + usage?: unknown; +} + +export type SDKSystemMessage = + | SDKInitSystemMessage + | SDKStatusSystemMessage + | SDKCompactBoundaryMessage + | SDKTaskNotificationMessage + | SDKTaskProgressMessage; + +export interface SDKResultMessage extends SDKBaseMessage { + type: "result"; + subtype: "success" | "error_during_execution" | string; + result?: string; + errors?: string[]; + modelUsage?: unknown; + total_cost_usd?: number; + usage?: { + input_tokens?: number; + cache_read_input_tokens?: number; + output_tokens?: number; + }; +} + +export type SDKMessage = + | SDKUserMessage + | SDKAssistantMessage + | SDKPartialAssistantMessage + | SDKSystemMessage + | SDKTaskProgressMessage + | SDKResultMessage + | (SDKBaseMessage & { type: "tool_progress"; tool_name?: string; tool_use_id?: string }); + +export interface Query extends AsyncGenerator { + interrupt(): Promise; + setPermissionMode(mode: PermissionMode): Promise; + setModel(model?: string): Promise; + applyFlagSettings(settings: Record): Promise; + supportedCommands(): Promise>; + rewindFiles( + messageId: string, + options: { dryRun: boolean }, + ): Promise<{ canRewind: boolean; error?: string }>; + close(): void; +} + +export declare function query(params: { + prompt: string | AsyncIterable; + options?: Options; +}): Query; + +export declare function forkSession( + sessionId: string, + options: { upToMessageId: string }, +): Promise<{ sessionId: string }>; + +export declare function getSessionInfo(...args: unknown[]): Promise; diff --git a/packages/server/src/server/agent/providers/claude/task-notification-tool-call.ts b/packages/server/src/server/agent/providers/claude/task-notification-tool-call.ts index a0789ef39..0b6a97669 100644 --- a/packages/server/src/server/agent/providers/claude/task-notification-tool-call.ts +++ b/packages/server/src/server/agent/providers/claude/task-notification-tool-call.ts @@ -1,5 +1,5 @@ import { createHash } from "node:crypto"; -import { z } from "zod"; +import { z } from "zod3"; import type { AgentTimelineItem } from "../../agent-sdk-types.js"; diff --git a/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts b/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts index a63e8b715..59db99d5a 100644 --- a/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts +++ b/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallDetail } from "../../agent-sdk-types.js"; import { diff --git a/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts b/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts index cc8ed529f..c6e0bc699 100644 --- a/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts +++ b/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallTimelineItem } from "../../agent-sdk-types.js"; import { isSpeakToolName } from "@getpaseo/protocol/tool-name-normalization"; diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.ts index 9f1dc6aa4..215523299 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.ts @@ -39,7 +39,7 @@ import * as fsSync from "node:fs"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import { renderPromptAttachmentAsText } from "../prompt-attachments.js"; import { composeSystemPromptParts } from "../system-prompt.js"; import { curateAgentActivity } from "../activity-curator.js"; diff --git a/packages/server/src/server/agent/providers/codex/app-server-transport.ts b/packages/server/src/server/agent/providers/codex/app-server-transport.ts index e99360bf3..3649eae9e 100644 --- a/packages/server/src/server/agent/providers/codex/app-server-transport.ts +++ b/packages/server/src/server/agent/providers/codex/app-server-transport.ts @@ -1,7 +1,7 @@ import type { ChildProcessWithoutNullStreams } from "node:child_process"; import readline from "node:readline"; import type { Logger } from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import { terminateWithTreeKill } from "../../../../utils/tree-kill.js"; diff --git a/packages/server/src/server/agent/providers/codex/tool-call-detail-parser.ts b/packages/server/src/server/agent/providers/codex/tool-call-detail-parser.ts index df650e865..e4741632c 100644 --- a/packages/server/src/server/agent/providers/codex/tool-call-detail-parser.ts +++ b/packages/server/src/server/agent/providers/codex/tool-call-detail-parser.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallDetail } from "../../agent-sdk-types.js"; import { stripCwdPrefix } from "@getpaseo/protocol/path-utils"; diff --git a/packages/server/src/server/agent/providers/codex/tool-call-mapper.ts b/packages/server/src/server/agent/providers/codex/tool-call-mapper.ts index c4bdf9077..64d7b8bee 100644 --- a/packages/server/src/server/agent/providers/codex/tool-call-mapper.ts +++ b/packages/server/src/server/agent/providers/codex/tool-call-mapper.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallTimelineItem } from "../../agent-sdk-types.js"; import { diff --git a/packages/server/src/server/agent/providers/opencode-agent.ts b/packages/server/src/server/agent/providers/opencode-agent.ts index c5e440a51..833dddbf8 100644 --- a/packages/server/src/server/agent/providers/opencode-agent.ts +++ b/packages/server/src/server/agent/providers/opencode-agent.ts @@ -13,7 +13,7 @@ import { import { createPathEquivalenceMatcher } from "../../../utils/path.js"; import pLimit from "p-limit"; import type { Logger } from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import { getAgentStreamEventTurnId, diff --git a/packages/server/src/server/agent/providers/opencode/tool-call-detail-parser.ts b/packages/server/src/server/agent/providers/opencode/tool-call-detail-parser.ts index 992a0a4e6..c9050c430 100644 --- a/packages/server/src/server/agent/providers/opencode/tool-call-detail-parser.ts +++ b/packages/server/src/server/agent/providers/opencode/tool-call-detail-parser.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallDetail } from "../../agent-sdk-types.js"; import { nonEmptyString, truncateDiffText } from "../tool-call-mapper-utils.js"; diff --git a/packages/server/src/server/agent/providers/opencode/tool-call-mapper.ts b/packages/server/src/server/agent/providers/opencode/tool-call-mapper.ts index 6d6051f87..c746514ff 100644 --- a/packages/server/src/server/agent/providers/opencode/tool-call-mapper.ts +++ b/packages/server/src/server/agent/providers/opencode/tool-call-mapper.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallTimelineItem } from "../../agent-sdk-types.js"; import { normalizeToolCallStatus } from "../tool-call-mapper-utils.js"; diff --git a/packages/server/src/server/agent/providers/pi/tool-call-mapper.ts b/packages/server/src/server/agent/providers/pi/tool-call-mapper.ts index abdea5624..fed5a62be 100644 --- a/packages/server/src/server/agent/providers/pi/tool-call-mapper.ts +++ b/packages/server/src/server/agent/providers/pi/tool-call-mapper.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallDetail } from "../../agent-sdk-types.js"; diff --git a/packages/server/src/server/agent/providers/tool-call-detail-primitives.ts b/packages/server/src/server/agent/providers/tool-call-detail-primitives.ts index 98bf594bb..f5554d680 100644 --- a/packages/server/src/server/agent/providers/tool-call-detail-primitives.ts +++ b/packages/server/src/server/agent/providers/tool-call-detail-primitives.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { ToolCallDetail } from "../agent-sdk-types.js"; import { diff --git a/packages/server/src/server/chat/chat-service.ts b/packages/server/src/server/chat/chat-service.ts index 08706d5ee..dc898caf4 100644 --- a/packages/server/src/server/chat/chat-service.ts +++ b/packages/server/src/server/chat/chat-service.ts @@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto"; import { promises as fs } from "node:fs"; import path from "node:path"; import type pino from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import { writeJsonFileAtomic } from "../atomic-file.js"; import { ChatMessageSchema, diff --git a/packages/server/src/server/config.ts b/packages/server/src/server/config.ts index 3163954b0..bdbbce9ee 100644 --- a/packages/server/src/server/config.ts +++ b/packages/server/src/server/config.ts @@ -1,6 +1,6 @@ import path from "node:path"; import { resolvePaseoNodeEnv } from "./paseo-env.js"; -import { z } from "zod"; +import { z } from "zod3"; import { expandTilde } from "../utils/path.js"; import type { PaseoDaemonConfig } from "./bootstrap.js"; diff --git a/packages/server/src/server/daemon-e2e/checkout-pr-merge.e2e.test.ts b/packages/server/src/server/daemon-e2e/checkout-pr-merge.e2e.test.ts index e7907bd88..170bd0252 100644 --- a/packages/server/src/server/daemon-e2e/checkout-pr-merge.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/checkout-pr-merge.e2e.test.ts @@ -3,7 +3,7 @@ import { execSync } from "child_process"; import { existsSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from "fs"; import { tmpdir } from "os"; import path from "path"; -import { z } from "zod"; +import { z } from "zod3"; import { createDaemonTestContext, diff --git a/packages/server/src/server/daemon-keypair.ts b/packages/server/src/server/daemon-keypair.ts index 27ae0bbf6..3425f4cb4 100644 --- a/packages/server/src/server/daemon-keypair.ts +++ b/packages/server/src/server/daemon-keypair.ts @@ -1,6 +1,6 @@ import { existsSync, readFileSync } from "node:fs"; import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import type pino from "pino"; import { diff --git a/packages/server/src/server/loop-service.ts b/packages/server/src/server/loop-service.ts index 5ce736bd2..f20a6ba73 100644 --- a/packages/server/src/server/loop-service.ts +++ b/packages/server/src/server/loop-service.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import { promises as fs } from "node:fs"; import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import type { Logger } from "pino"; import { writeJsonFileAtomic } from "./atomic-file.js"; import { curateAgentActivity } from "./agent/activity-curator.js"; diff --git a/packages/server/src/server/package-version.ts b/packages/server/src/server/package-version.ts index e30844693..3cfac1f10 100644 --- a/packages/server/src/server/package-version.ts +++ b/packages/server/src/server/package-version.ts @@ -1,7 +1,7 @@ import { existsSync, readFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import { z } from "zod"; +import { z } from "zod3"; interface ResolvePackageVersionParams { moduleUrl?: string; diff --git a/packages/server/src/server/persisted-config.ts b/packages/server/src/server/persisted-config.ts index cdeb0568b..79e319ffa 100644 --- a/packages/server/src/server/persisted-config.ts +++ b/packages/server/src/server/persisted-config.ts @@ -1,6 +1,6 @@ import { existsSync, readFileSync } from "node:fs"; import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import { AgentProviderRuntimeSettingsMapSchema, diff --git a/packages/server/src/server/pid-lock.ts b/packages/server/src/server/pid-lock.ts index 96d663e89..926f893bf 100644 --- a/packages/server/src/server/pid-lock.ts +++ b/packages/server/src/server/pid-lock.ts @@ -2,7 +2,7 @@ import { open, readFile, unlink, mkdir } from "node:fs/promises"; import { existsSync } from "node:fs"; import { join } from "node:path"; import { hostname } from "node:os"; -import { z } from "zod"; +import { z } from "zod3"; export const pidLockInfoSchema = z.object({ pid: z.number(), diff --git a/packages/server/src/server/session.ts b/packages/server/src/server/session.ts index 42d10f22a..3ddc05d74 100644 --- a/packages/server/src/server/session.ts +++ b/packages/server/src/server/session.ts @@ -4,7 +4,7 @@ import { realpathSync } from "node:fs"; import type { FSWatcher } from "node:fs"; import { basename, resolve, sep } from "path"; import { homedir } from "node:os"; -import { z } from "zod"; +import { z } from "zod3"; import type { ToolSet } from "ai"; import { CLIENT_CAPS, type ClientCapability } from "@getpaseo/protocol/client-capabilities"; import { diff --git a/packages/server/src/server/session.workspaces.test.ts b/packages/server/src/server/session.workspaces.test.ts index 0abe620e9..a3ad7b1c6 100644 --- a/packages/server/src/server/session.workspaces.test.ts +++ b/packages/server/src/server/session.workspaces.test.ts @@ -3,7 +3,7 @@ import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from "nod import { homedir, tmpdir } from "node:os"; import path from "node:path"; import { expect, test, vi } from "vitest"; -import { z } from "zod"; +import { z } from "zod3"; import { Session } from "./session.js"; import type { AgentSnapshotPayload, SessionOutboundMessage } from "@getpaseo/protocol/messages"; import { AgentManager } from "./agent/agent-manager.js"; diff --git a/packages/server/src/server/speech/providers/local/config.ts b/packages/server/src/server/speech/providers/local/config.ts index b4bf0d483..e9376d129 100644 --- a/packages/server/src/server/speech/providers/local/config.ts +++ b/packages/server/src/server/speech/providers/local/config.ts @@ -1,6 +1,6 @@ import path from "node:path"; -import { z } from "zod"; +import { z } from "zod3"; import type { PersistedConfig } from "../../../persisted-config.js"; import type { RequestedSpeechProviders } from "../../speech-types.js"; diff --git a/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts b/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts index cb65adc48..4580f0ae5 100644 --- a/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts +++ b/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; export type SherpaOnnxModelKind = "stt-offline" | "tts"; diff --git a/packages/server/src/server/speech/providers/openai/config.ts b/packages/server/src/server/speech/providers/openai/config.ts index c1a3abf2e..6ea44013a 100644 --- a/packages/server/src/server/speech/providers/openai/config.ts +++ b/packages/server/src/server/speech/providers/openai/config.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { PersistedConfig } from "../../../persisted-config.js"; import type { RequestedSpeechProviders } from "../../speech-types.js"; diff --git a/packages/server/src/server/speech/speech-config-resolver.ts b/packages/server/src/server/speech/speech-config-resolver.ts index 95c78707a..05aa2541f 100644 --- a/packages/server/src/server/speech/speech-config-resolver.ts +++ b/packages/server/src/server/speech/speech-config-resolver.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { PersistedConfig } from "../persisted-config.js"; import type { PaseoOpenAIConfig, PaseoSpeechConfig } from "../bootstrap.js"; diff --git a/packages/server/src/server/speech/speech-types.ts b/packages/server/src/server/speech/speech-types.ts index 12baacd83..572f2e931 100644 --- a/packages/server/src/server/speech/speech-types.ts +++ b/packages/server/src/server/speech/speech-types.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; export const SpeechProviderIdSchema = z.enum(["openai", "local"]); export type SpeechProviderId = z.infer; diff --git a/packages/server/src/server/websocket-server.relay-reconnect.test.ts b/packages/server/src/server/websocket-server.relay-reconnect.test.ts index d2c9abbb4..89d526bc3 100644 --- a/packages/server/src/server/websocket-server.relay-reconnect.test.ts +++ b/packages/server/src/server/websocket-server.relay-reconnect.test.ts @@ -98,7 +98,7 @@ vi.mock("./push/push-service.js", () => ({ }, })); -import { z } from "zod"; +import { z } from "zod3"; import { VoiceAssistantWebSocketServer } from "./websocket-server"; import { parseServerInfoStatusPayload } from "./messages.js"; import type { SpeechReadinessSnapshot } from "./speech/speech-runtime.js"; diff --git a/packages/server/src/server/wire-compat.test.ts b/packages/server/src/server/wire-compat.test.ts index 506be11b0..cf687c8b3 100644 --- a/packages/server/src/server/wire-compat.test.ts +++ b/packages/server/src/server/wire-compat.test.ts @@ -1,5 +1,5 @@ import pino from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import { describe, expect, test } from "vitest"; import { CLIENT_CAPS } from "@getpaseo/protocol/client-capabilities"; diff --git a/packages/server/src/server/workspace-registry.ts b/packages/server/src/server/workspace-registry.ts index 0b2139061..119a38498 100644 --- a/packages/server/src/server/workspace-registry.ts +++ b/packages/server/src/server/workspace-registry.ts @@ -1,7 +1,7 @@ import { promises as fs } from "node:fs"; import type { Logger } from "pino"; -import { z } from "zod"; +import { z } from "zod3"; import { writeJsonFileAtomic } from "./atomic-file.js"; import type { PersistedProjectKind, PersistedWorkspaceKind } from "./workspace-registry-model.js"; diff --git a/packages/server/src/server/worktree-branch-name-generator.ts b/packages/server/src/server/worktree-branch-name-generator.ts index e4c3a5485..bba54ed43 100644 --- a/packages/server/src/server/worktree-branch-name-generator.ts +++ b/packages/server/src/server/worktree-branch-name-generator.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { FirstAgentContext } from "@getpaseo/protocol/messages"; import type { AgentManager } from "./agent/agent-manager.js"; import { diff --git a/packages/server/src/services/github-service.ts b/packages/server/src/services/github-service.ts index d0b15e990..5700a3d55 100644 --- a/packages/server/src/services/github-service.ts +++ b/packages/server/src/services/github-service.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import type { GitHubSearchKind } from "@getpaseo/protocol/messages"; import { findExecutable } from "../utils/executable.js"; import { resolveGitHubRemote } from "../utils/github-remote.js"; diff --git a/packages/server/src/utils/tool-call-parsers.ts b/packages/server/src/utils/tool-call-parsers.ts index b76afe8d9..7b5701c00 100644 --- a/packages/server/src/utils/tool-call-parsers.ts +++ b/packages/server/src/utils/tool-call-parsers.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod3"; import { stripCwdPrefix } from "@getpaseo/protocol/path-utils"; const SHELL_WRAPPER_PREFIX_PATTERN = /^\/bin\/(?:zsh|bash|sh)\s+(?:-[a-zA-Z]+\s+)?/; diff --git a/packages/server/src/utils/worktree-metadata.ts b/packages/server/src/utils/worktree-metadata.ts index a8be30586..0b677c616 100644 --- a/packages/server/src/utils/worktree-metadata.ts +++ b/packages/server/src/utils/worktree-metadata.ts @@ -1,6 +1,6 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; import { isAbsolute, join, resolve } from "path"; -import { z } from "zod"; +import { z } from "zod3"; const PaseoWorktreeMetadataV1Schema = z.object({ version: z.literal(1), diff --git a/packages/server/tsconfig.server.json b/packages/server/tsconfig.server.json index aee1b6367..697e99589 100644 --- a/packages/server/tsconfig.server.json +++ b/packages/server/tsconfig.server.json @@ -5,6 +5,10 @@ "moduleResolution": "NodeNext", "lib": ["ES2023", "DOM"], "paths": { + "@anthropic-ai/claude-agent-sdk": [ + "./src/server/agent/providers/claude/claude-agent-sdk-types.ts" + ], + "@modelcontextprotocol/sdk/server/mcp.js": ["./src/server/agent/mcp-sdk-types.ts"], "@server/*": ["./src/*"] }, "skipLibCheck": true,