@ai-sdk/mcp 1.0.42 → 1.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1325,6 +1325,24 @@ var HttpMCPTransport = class {
1325
1325
  getRuntimeEnvironmentUserAgent2()
1326
1326
  );
1327
1327
  }
1328
+ /**
1329
+ * Runs a single OAuth recovery flow for concurrent 401 responses.
1330
+ */
1331
+ authorizeOnce(resourceMetadataUrl) {
1332
+ if (!this.authProvider) {
1333
+ return Promise.resolve("REDIRECT");
1334
+ }
1335
+ if (!this.authPromise) {
1336
+ this.authPromise = auth(this.authProvider, {
1337
+ serverUrl: this.url,
1338
+ resourceMetadataUrl,
1339
+ fetchFn: this.fetchFn
1340
+ }).finally(() => {
1341
+ this.authPromise = void 0;
1342
+ });
1343
+ }
1344
+ return this.authPromise;
1345
+ }
1328
1346
  async start() {
1329
1347
  if (this.abortController) {
1330
1348
  throw new MCPClientError({
@@ -1375,11 +1393,7 @@ var HttpMCPTransport = class {
1375
1393
  if (response.status === 401 && this.authProvider && !triedAuth) {
1376
1394
  this.resourceMetadataUrl = extractResourceMetadataUrl(response);
1377
1395
  try {
1378
- const result = await auth(this.authProvider, {
1379
- serverUrl: this.url,
1380
- resourceMetadataUrl: this.resourceMetadataUrl,
1381
- fetchFn: this.fetchFn
1382
- });
1396
+ const result = await this.authorizeOnce(this.resourceMetadataUrl);
1383
1397
  if (result !== "AUTHORIZED") {
1384
1398
  const error2 = new UnauthorizedError();
1385
1399
  throw error2;
@@ -1525,11 +1539,7 @@ var HttpMCPTransport = class {
1525
1539
  if (response.status === 401 && this.authProvider && !triedAuth) {
1526
1540
  this.resourceMetadataUrl = extractResourceMetadataUrl(response);
1527
1541
  try {
1528
- const result = await auth(this.authProvider, {
1529
- serverUrl: this.url,
1530
- resourceMetadataUrl: this.resourceMetadataUrl,
1531
- fetchFn: this.fetchFn
1532
- });
1542
+ const result = await this.authorizeOnce(this.resourceMetadataUrl);
1533
1543
  if (result !== "AUTHORIZED") {
1534
1544
  const error = new UnauthorizedError();
1535
1545
  (_b3 = this.onerror) == null ? void 0 : _b3.call(this, error);