1
0
Эх сурвалжийг харах

chore(mcp): upgrade client to 2.0.0 (#39369)

Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
opencode-agent[bot] 2 долоо хоног өмнө
parent
commit
7edefb3347

+ 7 - 7
bun.lock

@@ -592,7 +592,7 @@
         "@effect/platform-node": "catalog:",
         "@ff-labs/fff-bun": "0.9.4",
         "@gitlab/opencode-gitlab-auth": "1.3.3",
-        "@modelcontextprotocol/client": "2.0.0-beta.5",
+        "@modelcontextprotocol/client": "2.0.0",
         "@octokit/graphql": "9.0.2",
         "@octokit/rest": "catalog:",
         "@openauthjs/openauth": "catalog:",
@@ -666,7 +666,7 @@
       },
       "devDependencies": {
         "@babel/core": "7.28.4",
-        "@modelcontextprotocol/server": "2.0.0-beta.5",
+        "@modelcontextprotocol/server": "2.0.0",
         "@octokit/webhooks-types": "7.6.1",
         "@opencode-ai/core": "workspace:*",
         "@opencode-ai/http-recorder": "workspace:*",
@@ -1071,10 +1071,10 @@
   ],
   "patchedDependencies": {
     "@pierre/trees@1.0.0-beta.4": "patches/@pierre%2Ftrees@1.0.0-beta.4.patch",
-    "@modelcontextprotocol/client@2.0.0-beta.5": "patches/@modelcontextprotocol%2Fclient@2.0.0-beta.5.patch",
-    "@ai-sdk/xai@3.0.102": "patches/@ai-sdk%2Fxai@3.0.102.patch",
     "@tanstack/virtual-core@3.17.3": "patches/@tanstack%2Fvirtual-core@3.17.3.patch",
+    "@ai-sdk/xai@3.0.102": "patches/@ai-sdk%2Fxai@3.0.102.patch",
     "gcp-metadata@8.1.2": "patches/gcp-metadata@8.1.2.patch",
+    "@modelcontextprotocol/client@2.0.0": "patches/@modelcontextprotocol%2Fclient@2.0.0.patch",
     "@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch",
     "effect@4.0.0-beta.83": "patches/effect@4.0.0-beta.83.patch",
     "@ai-sdk/mistral@3.0.51": "patches/@ai-sdk%2Fmistral@3.0.51.patch",
@@ -1830,11 +1830,11 @@
 
     "@mixmark-io/domino": ["@mixmark-io/domino@2.2.0", "", {}, "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="],
 
-    "@modelcontextprotocol/client": ["@modelcontextprotocol/client@2.0.0-beta.5", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0-beta.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "jose": "^6.1.3", "pkce-challenge": "^5.0.0", "zod": "^4.2.0" } }, "sha512-YuuNm5f2TMoFQRje1UqVP8TJRjijCXMz4ckvoVpx1cUXuBEmykWQ2d8R536pek6UKcXT41T5nWc4qR1JFIbEmg=="],
+    "@modelcontextprotocol/client": ["@modelcontextprotocol/client@2.0.0", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "jose": "^6.1.3", "pkce-challenge": "^5.0.0", "zod": "^4.2.0" } }, "sha512-8f1OghQ2rjzIOfqgUCP+8GiUWqRs89njoWLNqAe8kWmDePv3s1fZXseej+QXemssEuuOvLLmLO/kqM3IQHtISw=="],
 
-    "@modelcontextprotocol/core": ["@modelcontextprotocol/core@2.0.0-beta.5", "", { "dependencies": { "zod": "^4.2.0" } }, "sha512-HKbY9XTbsDy1Y6r2I55TGE3JEapM0vg96e1MUmBIF9LGjos5gjhcIrTz1yvBPLg2aFKHjwhUAQfRdrCEnPxNew=="],
+    "@modelcontextprotocol/core": ["@modelcontextprotocol/core@2.0.0", "", { "dependencies": { "zod": "^4.2.0" } }, "sha512-pJCEwGG7Lfr/+PQp9ZTwKXNeO5wzbfKL7H3MYpCorM4oFBoQrdjnBgEoqG+RjhsvS1FKrDbKux+M1HhlnGWqcA=="],
 
-    "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0-beta.5", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0-beta.5", "zod": "^4.2.0" } }, "sha512-i1E5l75rQKsgY/AKAIspgMBH1vEL7dqiK7tHr0L+raYcb0SWOziqNGJXGIG6NY4AlXDWIKGJQGB7Nqfs3oUi5g=="],
+    "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0", "zod": "^4.2.0" } }, "sha512-YhHWdHfpFMQfd0prsEnxKeS3Qz3ytIGmsS0sth4KDjnacIT7hxk6hXHkJ9KysxlkvTM+WZAtQbbcUhdoP4Hvtw=="],
 
     "@motionone/animation": ["@motionone/animation@10.18.0", "", { "dependencies": { "@motionone/easing": "^10.18.0", "@motionone/types": "^10.17.1", "@motionone/utils": "^10.18.0", "tslib": "^2.3.1" } }, "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw=="],
 

+ 1 - 1
bunfig.toml

@@ -2,7 +2,7 @@
 exact = true
 # Only install newly resolved package versions published at least 3 days ago.
 minimumReleaseAge = 259200
-minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron-builder", "electron-publish"]
+minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@modelcontextprotocol/client", "@modelcontextprotocol/core", "@modelcontextprotocol/server", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron-builder", "electron-publish"]
 
 [test]
 root = "./do-not-run-tests-from-root"

+ 1 - 1
package.json

@@ -157,6 +157,6 @@
     "@pierre/trees@1.0.0-beta.4": "patches/@pierre%2Ftrees@1.0.0-beta.4.patch",
     "effect@4.0.0-beta.83": "patches/effect@4.0.0-beta.83.patch",
     "@tanstack/virtual-core@3.17.3": "patches/@tanstack%2Fvirtual-core@3.17.3.patch",
-    "@modelcontextprotocol/client@2.0.0-beta.5": "patches/@modelcontextprotocol%2Fclient@2.0.0-beta.5.patch"
+    "@modelcontextprotocol/client@2.0.0": "patches/@modelcontextprotocol%2Fclient@2.0.0.patch"
   }
 }

+ 2 - 2
packages/opencode/package.json

@@ -30,7 +30,7 @@
   },
   "devDependencies": {
     "@babel/core": "7.28.4",
-    "@modelcontextprotocol/server": "2.0.0-beta.5",
+    "@modelcontextprotocol/server": "2.0.0",
     "@octokit/webhooks-types": "7.6.1",
     "@opencode-ai/core": "workspace:*",
     "@opencode-ai/http-recorder": "workspace:*",
@@ -81,7 +81,7 @@
     "@effect/platform-node": "catalog:",
     "@ff-labs/fff-bun": "0.9.4",
     "@gitlab/opencode-gitlab-auth": "1.3.3",
-    "@modelcontextprotocol/client": "2.0.0-beta.5",
+    "@modelcontextprotocol/client": "2.0.0",
     "@octokit/graphql": "9.0.2",
     "@octokit/rest": "catalog:",
     "@openauthjs/openauth": "catalog:",

+ 26 - 26
patches/@modelcontextprotocol%2Fclient@2.0.0-beta.5.patch → patches/@modelcontextprotocol%2Fclient@2.0.0.patch

@@ -1,8 +1,8 @@
 diff --git a/dist/index.cjs b/dist/index.cjs
-index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370a4553855 100644
+index 635f1c0..9214f0b 100644
 --- a/dist/index.cjs
 +++ b/dist/index.cjs
-@@ -3154,6 +3154,7 @@ var Client = class extends require_src.Protocol {
+@@ -3211,6 +3211,7 @@ var Client = class extends require_src.Protocol {
  	*/
  	async _connectPlainLegacy(transport, options) {
  		await super.connect(transport);
@@ -10,7 +10,7 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  		if (transport.sessionId !== void 0) {
  			const negotiatedProtocolVersion = this._negotiatedProtocolVersion;
  			if (negotiatedProtocolVersion !== void 0) transport.setProtocolVersion?.(negotiatedProtocolVersion);
-@@ -3170,6 +3171,7 @@ var Client = class extends require_src.Protocol {
+@@ -3227,6 +3228,7 @@ var Client = class extends require_src.Protocol {
  	* the handshake; its completion sets the negotiated (legacy) version.
  	*/
  	async _legacyHandshake(transport, options) {
@@ -18,7 +18,7 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  		const legacyVersions = require_src.legacyProtocolVersions(this._supportedProtocolVersions);
  		try {
  			const offeredVersion = legacyVersions[0];
-@@ -3208,6 +3210,7 @@ var Client = class extends require_src.Protocol {
+@@ -3265,6 +3267,7 @@ var Client = class extends require_src.Protocol {
  			await super.connect(transport);
  			const negotiatedProtocolVersion = this._negotiatedProtocolVersion;
  			if (negotiatedProtocolVersion !== void 0 && transport.setProtocolVersion) transport.setProtocolVersion(negotiatedProtocolVersion);
@@ -26,7 +26,7 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  			return;
  		}
  		this._resetConnectionState();
-@@ -5211,10 +5214,32 @@ var StreamableHTTPClientTransport = class {
+@@ -5294,10 +5297,32 @@ var StreamableHTTPClientTransport = class {
  		}
  	}
  	async send(message, options) {
@@ -61,7 +61,7 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  			const { resumptionToken, onresumptiontoken } = options || {};
  			if (resumptionToken) {
  				this._startOrAuthSse({
-@@ -5226,8 +5251,8 @@ var StreamableHTTPClientTransport = class {
+@@ -5309,8 +5334,8 @@ var StreamableHTTPClientTransport = class {
  			}
  			const headers = await this._commonHeaders();
  			this._applyBodyDerivedHeaders(headers, message);
@@ -71,7 +71,7 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  			if (options?.headers !== void 0) for (const [name, value] of Object.entries(options.headers)) {
  				if (RESERVED_REQUEST_HEADER_NAMES.has(name.toLowerCase())) continue;
  				headers.set(name, value);
-@@ -5249,8 +5274,14 @@ var StreamableHTTPClientTransport = class {
+@@ -5332,8 +5357,14 @@ var StreamableHTTPClientTransport = class {
  				signal
  			};
  			const response = await (this._fetch ?? fetch)(this._url, init);
@@ -87,29 +87,29 @@ index 1c43bac25a1037416fdf2ddfb4534ba0897a2e69..7e2108326f368ccbc48897195d57e370
  				if (response.status === 401 && this._authProvider) {
  					if (response.headers.has("www-authenticate")) {
  						const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(response);
-@@ -5264,7 +5295,7 @@ var StreamableHTTPClientTransport = class {
- 							fetchFn: this._fetchWithInit
- 						});
+@@ -5351,7 +5382,7 @@ var StreamableHTTPClientTransport = class {
+ 							throw markAuthSeamEscape(error);
+ 						}
  						await response.text?.().catch(() => {});
 -						return this._send(message, options, true, stepUpRetries);
 +						return this._send(message, options, true, stepUpRetries, isSessionRetry);
  					}
  					await response.text?.().catch(() => {});
- 					if (isAuthRetry) throw new require_src.SdkHttpError(require_src.SdkErrorCode.ClientHttpAuthentication, "Server returned 401 after re-authentication", {
-@@ -5284,7 +5315,7 @@ var StreamableHTTPClientTransport = class {
+ 					if (isAuthRetry) throw markAuthSeamEscape(new require_src.SdkHttpError(require_src.SdkErrorCode.ClientHttpAuthentication, "Server returned 401 after re-authentication", {
+@@ -5371,7 +5402,7 @@ var StreamableHTTPClientTransport = class {
  							statusText: response.statusText,
  							text
- 						}, stepUpRetries) !== "AUTHORIZED") throw new UnauthorizedError();
+ 						}, stepUpRetries) !== "AUTHORIZED") throw markAuthSeamEscape(new UnauthorizedError());
 -						return this._send(message, options, isAuthRetry, stepUpRetries + 1);
 +						return this._send(message, options, isAuthRetry, stepUpRetries + 1, isSessionRetry);
  					}
  				}
  				if (response.status === 400 && typeof text === "string" && this._isModernEnvelopedRequest(message)) try {
 diff --git a/dist/index.mjs b/dist/index.mjs
-index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a7749668c39747 100644
+index f02ce3c..0a5a649 100644
 --- a/dist/index.mjs
 +++ b/dist/index.mjs
-@@ -3151,6 +3151,7 @@ var Client = class extends Protocol {
+@@ -3208,6 +3208,7 @@ var Client = class extends Protocol {
  	*/
  	async _connectPlainLegacy(transport, options) {
  		await super.connect(transport);
@@ -117,7 +117,7 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  		if (transport.sessionId !== void 0) {
  			const negotiatedProtocolVersion = this._negotiatedProtocolVersion;
  			if (negotiatedProtocolVersion !== void 0) transport.setProtocolVersion?.(negotiatedProtocolVersion);
-@@ -3167,6 +3168,7 @@ var Client = class extends Protocol {
+@@ -3224,6 +3225,7 @@ var Client = class extends Protocol {
  	* the handshake; its completion sets the negotiated (legacy) version.
  	*/
  	async _legacyHandshake(transport, options) {
@@ -125,7 +125,7 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  		const legacyVersions = legacyProtocolVersions(this._supportedProtocolVersions);
  		try {
  			const offeredVersion = legacyVersions[0];
-@@ -3205,6 +3207,7 @@ var Client = class extends Protocol {
+@@ -3262,6 +3264,7 @@ var Client = class extends Protocol {
  			await super.connect(transport);
  			const negotiatedProtocolVersion = this._negotiatedProtocolVersion;
  			if (negotiatedProtocolVersion !== void 0 && transport.setProtocolVersion) transport.setProtocolVersion(negotiatedProtocolVersion);
@@ -133,7 +133,7 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  			return;
  		}
  		this._resetConnectionState();
-@@ -5208,10 +5211,32 @@ var StreamableHTTPClientTransport = class {
+@@ -5291,10 +5294,32 @@ var StreamableHTTPClientTransport = class {
  		}
  	}
  	async send(message, options) {
@@ -168,7 +168,7 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  			const { resumptionToken, onresumptiontoken } = options || {};
  			if (resumptionToken) {
  				this._startOrAuthSse({
-@@ -5223,8 +5248,8 @@ var StreamableHTTPClientTransport = class {
+@@ -5306,8 +5331,8 @@ var StreamableHTTPClientTransport = class {
  			}
  			const headers = await this._commonHeaders();
  			this._applyBodyDerivedHeaders(headers, message);
@@ -178,7 +178,7 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  			if (options?.headers !== void 0) for (const [name, value] of Object.entries(options.headers)) {
  				if (RESERVED_REQUEST_HEADER_NAMES.has(name.toLowerCase())) continue;
  				headers.set(name, value);
-@@ -5246,8 +5271,14 @@ var StreamableHTTPClientTransport = class {
+@@ -5329,8 +5354,14 @@ var StreamableHTTPClientTransport = class {
  				signal
  			};
  			const response = await (this._fetch ?? fetch)(this._url, init);
@@ -194,19 +194,19 @@ index 77e2389913cb5c5c2b047f95d990ab2892bef923..4b5e4ff2869189d600ca644488a77496
  				if (response.status === 401 && this._authProvider) {
  					if (response.headers.has("www-authenticate")) {
  						const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(response);
-@@ -5261,7 +5292,7 @@ var StreamableHTTPClientTransport = class {
- 							fetchFn: this._fetchWithInit
- 						});
+@@ -5348,7 +5379,7 @@ var StreamableHTTPClientTransport = class {
+ 							throw markAuthSeamEscape(error);
+ 						}
  						await response.text?.().catch(() => {});
 -						return this._send(message, options, true, stepUpRetries);
 +						return this._send(message, options, true, stepUpRetries, isSessionRetry);
  					}
  					await response.text?.().catch(() => {});
- 					if (isAuthRetry) throw new SdkHttpError(SdkErrorCode.ClientHttpAuthentication, "Server returned 401 after re-authentication", {
-@@ -5281,7 +5312,7 @@ var StreamableHTTPClientTransport = class {
+ 					if (isAuthRetry) throw markAuthSeamEscape(new SdkHttpError(SdkErrorCode.ClientHttpAuthentication, "Server returned 401 after re-authentication", {
+@@ -5368,7 +5399,7 @@ var StreamableHTTPClientTransport = class {
  							statusText: response.statusText,
  							text
- 						}, stepUpRetries) !== "AUTHORIZED") throw new UnauthorizedError();
+ 						}, stepUpRetries) !== "AUTHORIZED") throw markAuthSeamEscape(new UnauthorizedError());
 -						return this._send(message, options, isAuthRetry, stepUpRetries + 1);
 +						return this._send(message, options, isAuthRetry, stepUpRetries + 1, isSessionRetry);
  					}