integrate-sdk 0.8.0 → 0.8.2

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.
Files changed (48) hide show
  1. package/dist/adapters/index.js +33 -10
  2. package/dist/adapters/solid-start.js +33 -10
  3. package/dist/adapters/svelte-kit.js +33 -10
  4. package/dist/index.js +33 -10
  5. package/dist/server.js +33 -10
  6. package/dist/src/client.d.ts +27 -5
  7. package/dist/src/client.d.ts.map +1 -1
  8. package/dist/src/config/types.d.ts +32 -1
  9. package/dist/src/config/types.d.ts.map +1 -1
  10. package/dist/src/oauth/manager.d.ts +18 -7
  11. package/dist/src/oauth/manager.d.ts.map +1 -1
  12. package/package.json +1 -1
  13. package/dist/ai/cloudflare.d.ts +0 -158
  14. package/dist/ai/cloudflare.d.ts.map +0 -1
  15. package/dist/ai/cloudflare.js +0 -4249
  16. package/dist/ai/langchain.d.ts +0 -139
  17. package/dist/ai/langchain.d.ts.map +0 -1
  18. package/dist/ai/langchain.js +0 -4237
  19. package/dist/ai/llamaindex.d.ts +0 -125
  20. package/dist/ai/llamaindex.d.ts.map +0 -1
  21. package/dist/ai/llamaindex.js +0 -4236
  22. package/dist/ai/mastra.d.ts +0 -138
  23. package/dist/ai/mastra.d.ts.map +0 -1
  24. package/dist/ai/mastra.js +0 -4240
  25. package/dist/src/ai/cloudflare.d.ts +0 -158
  26. package/dist/src/ai/cloudflare.d.ts.map +0 -1
  27. package/dist/src/ai/langchain.d.ts +0 -139
  28. package/dist/src/ai/langchain.d.ts.map +0 -1
  29. package/dist/src/ai/llamaindex.d.ts +0 -125
  30. package/dist/src/ai/llamaindex.d.ts.map +0 -1
  31. package/dist/src/ai/mastra.d.ts +0 -138
  32. package/dist/src/ai/mastra.d.ts.map +0 -1
  33. package/dist/src/integrations/vercel-ai.d.ts +0 -127
  34. package/dist/src/integrations/vercel-ai.d.ts.map +0 -1
  35. package/dist/src/plugins/generic.d.ts +0 -99
  36. package/dist/src/plugins/generic.d.ts.map +0 -1
  37. package/dist/src/plugins/github-client.d.ts +0 -320
  38. package/dist/src/plugins/github-client.d.ts.map +0 -1
  39. package/dist/src/plugins/github.d.ts +0 -89
  40. package/dist/src/plugins/github.d.ts.map +0 -1
  41. package/dist/src/plugins/gmail-client.d.ts +0 -106
  42. package/dist/src/plugins/gmail-client.d.ts.map +0 -1
  43. package/dist/src/plugins/gmail.d.ts +0 -87
  44. package/dist/src/plugins/gmail.d.ts.map +0 -1
  45. package/dist/src/plugins/server-client.d.ts +0 -18
  46. package/dist/src/plugins/server-client.d.ts.map +0 -1
  47. package/dist/src/plugins/types.d.ts +0 -70
  48. package/dist/src/plugins/types.d.ts.map +0 -1
@@ -1489,6 +1489,7 @@ class OAuthManager {
1489
1489
  apiBaseUrl;
1490
1490
  getTokenCallback;
1491
1491
  setTokenCallback;
1492
+ removeTokenCallback;
1492
1493
  skipLocalStorage;
1493
1494
  constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
1494
1495
  this.oauthApiBase = oauthApiBase;
@@ -1501,6 +1502,7 @@ class OAuthManager {
1501
1502
  };
1502
1503
  this.getTokenCallback = tokenCallbacks?.getProviderToken;
1503
1504
  this.setTokenCallback = tokenCallbacks?.setProviderToken;
1505
+ this.removeTokenCallback = tokenCallbacks?.removeProviderToken;
1504
1506
  this.skipLocalStorage = tokenCallbacks?.skipLocalStorage ?? !!tokenCallbacks?.getProviderToken;
1505
1507
  this.cleanupExpiredPendingAuths();
1506
1508
  }
@@ -1590,10 +1592,22 @@ class OAuthManager {
1590
1592
  expiresAt: tokenData.expiresAt
1591
1593
  };
1592
1594
  }
1593
- async disconnectProvider(provider) {
1594
- const tokenData = await this.getProviderToken(provider);
1595
- if (!tokenData) {
1596
- throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1595
+ async disconnectProvider(provider, context) {
1596
+ if (this.removeTokenCallback) {
1597
+ try {
1598
+ await this.removeTokenCallback(provider, context);
1599
+ } catch (error) {
1600
+ console.error(`Failed to delete token for ${provider} from database via removeProviderToken:`, error);
1601
+ }
1602
+ } else if (this.setTokenCallback) {
1603
+ try {
1604
+ const tokenData = await this.getProviderToken(provider, context);
1605
+ if (tokenData) {
1606
+ await this.setTokenCallback(provider, null, context);
1607
+ }
1608
+ } catch (error) {
1609
+ console.error(`Failed to delete token for ${provider} from database via setProviderToken:`, error);
1610
+ }
1597
1611
  }
1598
1612
  this.providerTokens.delete(provider);
1599
1613
  this.clearProviderToken(provider);
@@ -1620,7 +1634,11 @@ class OAuthManager {
1620
1634
  return this.providerTokens.get(provider);
1621
1635
  }
1622
1636
  async setProviderToken(provider, tokenData, context) {
1623
- this.providerTokens.set(provider, tokenData);
1637
+ if (tokenData === null) {
1638
+ this.providerTokens.delete(provider);
1639
+ } else {
1640
+ this.providerTokens.set(provider, tokenData);
1641
+ }
1624
1642
  await this.saveProviderToken(provider, tokenData, context);
1625
1643
  }
1626
1644
  clearProviderToken(provider) {
@@ -1669,11 +1687,15 @@ class OAuthManager {
1669
1687
  try {
1670
1688
  await this.setTokenCallback(provider, tokenData, context);
1671
1689
  } catch (error) {
1672
- console.error(`Failed to save token for ${provider} via callback:`, error);
1690
+ console.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
1673
1691
  throw error;
1674
1692
  }
1675
1693
  return;
1676
1694
  }
1695
+ if (tokenData === null) {
1696
+ this.clearProviderToken(provider);
1697
+ return;
1698
+ }
1677
1699
  if (this.skipLocalStorage) {
1678
1700
  return;
1679
1701
  }
@@ -1952,6 +1974,7 @@ class MCPClientBase {
1952
1974
  this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1953
1975
  getProviderToken: config.getProviderToken,
1954
1976
  setProviderToken: config.setProviderToken,
1977
+ removeProviderToken: config.removeProviderToken,
1955
1978
  skipLocalStorage: config.skipLocalStorage
1956
1979
  });
1957
1980
  for (const integration of this.integrations) {
@@ -2261,13 +2284,13 @@ class MCPClientBase {
2261
2284
  clearSessionToken() {
2262
2285
  this.oauthManager.clearAllProviderTokens();
2263
2286
  }
2264
- async disconnectProvider(provider) {
2287
+ async disconnectProvider(provider, context) {
2265
2288
  const integration = this.integrations.find((p) => p.oauth?.provider === provider);
2266
2289
  if (!integration?.oauth) {
2267
2290
  throw new Error(`No OAuth configuration found for provider: ${provider}`);
2268
2291
  }
2269
2292
  try {
2270
- await this.oauthManager.disconnectProvider(provider);
2293
+ await this.oauthManager.disconnectProvider(provider, context);
2271
2294
  this.authState.set(provider, { authenticated: false });
2272
2295
  this.eventEmitter.emit("auth:disconnect", { provider });
2273
2296
  } catch (error) {
@@ -2310,13 +2333,13 @@ class MCPClientBase {
2310
2333
  isProviderAuthenticated(provider) {
2311
2334
  return this.authState.get(provider)?.authenticated ?? false;
2312
2335
  }
2313
- async isAuthorized(provider) {
2336
+ async isAuthorized(provider, context) {
2314
2337
  if (this.oauthCallbackPromise) {
2315
2338
  await this.oauthCallbackPromise;
2316
2339
  this.oauthCallbackPromise = null;
2317
2340
  }
2318
2341
  try {
2319
- const tokenData = await this.oauthManager.getProviderToken(provider);
2342
+ const tokenData = await this.oauthManager.getProviderToken(provider, context);
2320
2343
  const isAuthenticated = !!tokenData;
2321
2344
  const currentState = this.authState.get(provider);
2322
2345
  if (currentState) {
@@ -1348,6 +1348,7 @@ class OAuthManager {
1348
1348
  apiBaseUrl;
1349
1349
  getTokenCallback;
1350
1350
  setTokenCallback;
1351
+ removeTokenCallback;
1351
1352
  skipLocalStorage;
1352
1353
  constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
1353
1354
  this.oauthApiBase = oauthApiBase;
@@ -1360,6 +1361,7 @@ class OAuthManager {
1360
1361
  };
1361
1362
  this.getTokenCallback = tokenCallbacks?.getProviderToken;
1362
1363
  this.setTokenCallback = tokenCallbacks?.setProviderToken;
1364
+ this.removeTokenCallback = tokenCallbacks?.removeProviderToken;
1363
1365
  this.skipLocalStorage = tokenCallbacks?.skipLocalStorage ?? !!tokenCallbacks?.getProviderToken;
1364
1366
  this.cleanupExpiredPendingAuths();
1365
1367
  }
@@ -1449,10 +1451,22 @@ class OAuthManager {
1449
1451
  expiresAt: tokenData.expiresAt
1450
1452
  };
1451
1453
  }
1452
- async disconnectProvider(provider) {
1453
- const tokenData = await this.getProviderToken(provider);
1454
- if (!tokenData) {
1455
- throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1454
+ async disconnectProvider(provider, context) {
1455
+ if (this.removeTokenCallback) {
1456
+ try {
1457
+ await this.removeTokenCallback(provider, context);
1458
+ } catch (error) {
1459
+ console.error(`Failed to delete token for ${provider} from database via removeProviderToken:`, error);
1460
+ }
1461
+ } else if (this.setTokenCallback) {
1462
+ try {
1463
+ const tokenData = await this.getProviderToken(provider, context);
1464
+ if (tokenData) {
1465
+ await this.setTokenCallback(provider, null, context);
1466
+ }
1467
+ } catch (error) {
1468
+ console.error(`Failed to delete token for ${provider} from database via setProviderToken:`, error);
1469
+ }
1456
1470
  }
1457
1471
  this.providerTokens.delete(provider);
1458
1472
  this.clearProviderToken(provider);
@@ -1479,7 +1493,11 @@ class OAuthManager {
1479
1493
  return this.providerTokens.get(provider);
1480
1494
  }
1481
1495
  async setProviderToken(provider, tokenData, context) {
1482
- this.providerTokens.set(provider, tokenData);
1496
+ if (tokenData === null) {
1497
+ this.providerTokens.delete(provider);
1498
+ } else {
1499
+ this.providerTokens.set(provider, tokenData);
1500
+ }
1483
1501
  await this.saveProviderToken(provider, tokenData, context);
1484
1502
  }
1485
1503
  clearProviderToken(provider) {
@@ -1528,11 +1546,15 @@ class OAuthManager {
1528
1546
  try {
1529
1547
  await this.setTokenCallback(provider, tokenData, context);
1530
1548
  } catch (error) {
1531
- console.error(`Failed to save token for ${provider} via callback:`, error);
1549
+ console.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
1532
1550
  throw error;
1533
1551
  }
1534
1552
  return;
1535
1553
  }
1554
+ if (tokenData === null) {
1555
+ this.clearProviderToken(provider);
1556
+ return;
1557
+ }
1536
1558
  if (this.skipLocalStorage) {
1537
1559
  return;
1538
1560
  }
@@ -1811,6 +1833,7 @@ class MCPClientBase {
1811
1833
  this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1812
1834
  getProviderToken: config.getProviderToken,
1813
1835
  setProviderToken: config.setProviderToken,
1836
+ removeProviderToken: config.removeProviderToken,
1814
1837
  skipLocalStorage: config.skipLocalStorage
1815
1838
  });
1816
1839
  for (const integration of this.integrations) {
@@ -2120,13 +2143,13 @@ class MCPClientBase {
2120
2143
  clearSessionToken() {
2121
2144
  this.oauthManager.clearAllProviderTokens();
2122
2145
  }
2123
- async disconnectProvider(provider) {
2146
+ async disconnectProvider(provider, context) {
2124
2147
  const integration = this.integrations.find((p) => p.oauth?.provider === provider);
2125
2148
  if (!integration?.oauth) {
2126
2149
  throw new Error(`No OAuth configuration found for provider: ${provider}`);
2127
2150
  }
2128
2151
  try {
2129
- await this.oauthManager.disconnectProvider(provider);
2152
+ await this.oauthManager.disconnectProvider(provider, context);
2130
2153
  this.authState.set(provider, { authenticated: false });
2131
2154
  this.eventEmitter.emit("auth:disconnect", { provider });
2132
2155
  } catch (error) {
@@ -2169,13 +2192,13 @@ class MCPClientBase {
2169
2192
  isProviderAuthenticated(provider) {
2170
2193
  return this.authState.get(provider)?.authenticated ?? false;
2171
2194
  }
2172
- async isAuthorized(provider) {
2195
+ async isAuthorized(provider, context) {
2173
2196
  if (this.oauthCallbackPromise) {
2174
2197
  await this.oauthCallbackPromise;
2175
2198
  this.oauthCallbackPromise = null;
2176
2199
  }
2177
2200
  try {
2178
- const tokenData = await this.oauthManager.getProviderToken(provider);
2201
+ const tokenData = await this.oauthManager.getProviderToken(provider, context);
2179
2202
  const isAuthenticated = !!tokenData;
2180
2203
  const currentState = this.authState.get(provider);
2181
2204
  if (currentState) {
@@ -1348,6 +1348,7 @@ class OAuthManager {
1348
1348
  apiBaseUrl;
1349
1349
  getTokenCallback;
1350
1350
  setTokenCallback;
1351
+ removeTokenCallback;
1351
1352
  skipLocalStorage;
1352
1353
  constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
1353
1354
  this.oauthApiBase = oauthApiBase;
@@ -1360,6 +1361,7 @@ class OAuthManager {
1360
1361
  };
1361
1362
  this.getTokenCallback = tokenCallbacks?.getProviderToken;
1362
1363
  this.setTokenCallback = tokenCallbacks?.setProviderToken;
1364
+ this.removeTokenCallback = tokenCallbacks?.removeProviderToken;
1363
1365
  this.skipLocalStorage = tokenCallbacks?.skipLocalStorage ?? !!tokenCallbacks?.getProviderToken;
1364
1366
  this.cleanupExpiredPendingAuths();
1365
1367
  }
@@ -1449,10 +1451,22 @@ class OAuthManager {
1449
1451
  expiresAt: tokenData.expiresAt
1450
1452
  };
1451
1453
  }
1452
- async disconnectProvider(provider) {
1453
- const tokenData = await this.getProviderToken(provider);
1454
- if (!tokenData) {
1455
- throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1454
+ async disconnectProvider(provider, context) {
1455
+ if (this.removeTokenCallback) {
1456
+ try {
1457
+ await this.removeTokenCallback(provider, context);
1458
+ } catch (error) {
1459
+ console.error(`Failed to delete token for ${provider} from database via removeProviderToken:`, error);
1460
+ }
1461
+ } else if (this.setTokenCallback) {
1462
+ try {
1463
+ const tokenData = await this.getProviderToken(provider, context);
1464
+ if (tokenData) {
1465
+ await this.setTokenCallback(provider, null, context);
1466
+ }
1467
+ } catch (error) {
1468
+ console.error(`Failed to delete token for ${provider} from database via setProviderToken:`, error);
1469
+ }
1456
1470
  }
1457
1471
  this.providerTokens.delete(provider);
1458
1472
  this.clearProviderToken(provider);
@@ -1479,7 +1493,11 @@ class OAuthManager {
1479
1493
  return this.providerTokens.get(provider);
1480
1494
  }
1481
1495
  async setProviderToken(provider, tokenData, context) {
1482
- this.providerTokens.set(provider, tokenData);
1496
+ if (tokenData === null) {
1497
+ this.providerTokens.delete(provider);
1498
+ } else {
1499
+ this.providerTokens.set(provider, tokenData);
1500
+ }
1483
1501
  await this.saveProviderToken(provider, tokenData, context);
1484
1502
  }
1485
1503
  clearProviderToken(provider) {
@@ -1528,11 +1546,15 @@ class OAuthManager {
1528
1546
  try {
1529
1547
  await this.setTokenCallback(provider, tokenData, context);
1530
1548
  } catch (error) {
1531
- console.error(`Failed to save token for ${provider} via callback:`, error);
1549
+ console.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
1532
1550
  throw error;
1533
1551
  }
1534
1552
  return;
1535
1553
  }
1554
+ if (tokenData === null) {
1555
+ this.clearProviderToken(provider);
1556
+ return;
1557
+ }
1536
1558
  if (this.skipLocalStorage) {
1537
1559
  return;
1538
1560
  }
@@ -1811,6 +1833,7 @@ class MCPClientBase {
1811
1833
  this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1812
1834
  getProviderToken: config.getProviderToken,
1813
1835
  setProviderToken: config.setProviderToken,
1836
+ removeProviderToken: config.removeProviderToken,
1814
1837
  skipLocalStorage: config.skipLocalStorage
1815
1838
  });
1816
1839
  for (const integration of this.integrations) {
@@ -2120,13 +2143,13 @@ class MCPClientBase {
2120
2143
  clearSessionToken() {
2121
2144
  this.oauthManager.clearAllProviderTokens();
2122
2145
  }
2123
- async disconnectProvider(provider) {
2146
+ async disconnectProvider(provider, context) {
2124
2147
  const integration = this.integrations.find((p) => p.oauth?.provider === provider);
2125
2148
  if (!integration?.oauth) {
2126
2149
  throw new Error(`No OAuth configuration found for provider: ${provider}`);
2127
2150
  }
2128
2151
  try {
2129
- await this.oauthManager.disconnectProvider(provider);
2152
+ await this.oauthManager.disconnectProvider(provider, context);
2130
2153
  this.authState.set(provider, { authenticated: false });
2131
2154
  this.eventEmitter.emit("auth:disconnect", { provider });
2132
2155
  } catch (error) {
@@ -2169,13 +2192,13 @@ class MCPClientBase {
2169
2192
  isProviderAuthenticated(provider) {
2170
2193
  return this.authState.get(provider)?.authenticated ?? false;
2171
2194
  }
2172
- async isAuthorized(provider) {
2195
+ async isAuthorized(provider, context) {
2173
2196
  if (this.oauthCallbackPromise) {
2174
2197
  await this.oauthCallbackPromise;
2175
2198
  this.oauthCallbackPromise = null;
2176
2199
  }
2177
2200
  try {
2178
- const tokenData = await this.oauthManager.getProviderToken(provider);
2201
+ const tokenData = await this.oauthManager.getProviderToken(provider, context);
2179
2202
  const isAuthenticated = !!tokenData;
2180
2203
  const currentState = this.authState.get(provider);
2181
2204
  if (currentState) {
package/dist/index.js CHANGED
@@ -1189,6 +1189,7 @@ class OAuthManager {
1189
1189
  apiBaseUrl;
1190
1190
  getTokenCallback;
1191
1191
  setTokenCallback;
1192
+ removeTokenCallback;
1192
1193
  skipLocalStorage;
1193
1194
  constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
1194
1195
  this.oauthApiBase = oauthApiBase;
@@ -1201,6 +1202,7 @@ class OAuthManager {
1201
1202
  };
1202
1203
  this.getTokenCallback = tokenCallbacks?.getProviderToken;
1203
1204
  this.setTokenCallback = tokenCallbacks?.setProviderToken;
1205
+ this.removeTokenCallback = tokenCallbacks?.removeProviderToken;
1204
1206
  this.skipLocalStorage = tokenCallbacks?.skipLocalStorage ?? !!tokenCallbacks?.getProviderToken;
1205
1207
  this.cleanupExpiredPendingAuths();
1206
1208
  }
@@ -1290,10 +1292,22 @@ class OAuthManager {
1290
1292
  expiresAt: tokenData.expiresAt
1291
1293
  };
1292
1294
  }
1293
- async disconnectProvider(provider) {
1294
- const tokenData = await this.getProviderToken(provider);
1295
- if (!tokenData) {
1296
- throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1295
+ async disconnectProvider(provider, context) {
1296
+ if (this.removeTokenCallback) {
1297
+ try {
1298
+ await this.removeTokenCallback(provider, context);
1299
+ } catch (error) {
1300
+ console.error(`Failed to delete token for ${provider} from database via removeProviderToken:`, error);
1301
+ }
1302
+ } else if (this.setTokenCallback) {
1303
+ try {
1304
+ const tokenData = await this.getProviderToken(provider, context);
1305
+ if (tokenData) {
1306
+ await this.setTokenCallback(provider, null, context);
1307
+ }
1308
+ } catch (error) {
1309
+ console.error(`Failed to delete token for ${provider} from database via setProviderToken:`, error);
1310
+ }
1297
1311
  }
1298
1312
  this.providerTokens.delete(provider);
1299
1313
  this.clearProviderToken(provider);
@@ -1320,7 +1334,11 @@ class OAuthManager {
1320
1334
  return this.providerTokens.get(provider);
1321
1335
  }
1322
1336
  async setProviderToken(provider, tokenData, context) {
1323
- this.providerTokens.set(provider, tokenData);
1337
+ if (tokenData === null) {
1338
+ this.providerTokens.delete(provider);
1339
+ } else {
1340
+ this.providerTokens.set(provider, tokenData);
1341
+ }
1324
1342
  await this.saveProviderToken(provider, tokenData, context);
1325
1343
  }
1326
1344
  clearProviderToken(provider) {
@@ -1369,11 +1387,15 @@ class OAuthManager {
1369
1387
  try {
1370
1388
  await this.setTokenCallback(provider, tokenData, context);
1371
1389
  } catch (error) {
1372
- console.error(`Failed to save token for ${provider} via callback:`, error);
1390
+ console.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
1373
1391
  throw error;
1374
1392
  }
1375
1393
  return;
1376
1394
  }
1395
+ if (tokenData === null) {
1396
+ this.clearProviderToken(provider);
1397
+ return;
1398
+ }
1377
1399
  if (this.skipLocalStorage) {
1378
1400
  return;
1379
1401
  }
@@ -1654,6 +1676,7 @@ class MCPClientBase {
1654
1676
  this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1655
1677
  getProviderToken: config.getProviderToken,
1656
1678
  setProviderToken: config.setProviderToken,
1679
+ removeProviderToken: config.removeProviderToken,
1657
1680
  skipLocalStorage: config.skipLocalStorage
1658
1681
  });
1659
1682
  for (const integration of this.integrations) {
@@ -1963,13 +1986,13 @@ class MCPClientBase {
1963
1986
  clearSessionToken() {
1964
1987
  this.oauthManager.clearAllProviderTokens();
1965
1988
  }
1966
- async disconnectProvider(provider) {
1989
+ async disconnectProvider(provider, context) {
1967
1990
  const integration = this.integrations.find((p) => p.oauth?.provider === provider);
1968
1991
  if (!integration?.oauth) {
1969
1992
  throw new Error(`No OAuth configuration found for provider: ${provider}`);
1970
1993
  }
1971
1994
  try {
1972
- await this.oauthManager.disconnectProvider(provider);
1995
+ await this.oauthManager.disconnectProvider(provider, context);
1973
1996
  this.authState.set(provider, { authenticated: false });
1974
1997
  this.eventEmitter.emit("auth:disconnect", { provider });
1975
1998
  } catch (error) {
@@ -2012,13 +2035,13 @@ class MCPClientBase {
2012
2035
  isProviderAuthenticated(provider) {
2013
2036
  return this.authState.get(provider)?.authenticated ?? false;
2014
2037
  }
2015
- async isAuthorized(provider) {
2038
+ async isAuthorized(provider, context) {
2016
2039
  if (this.oauthCallbackPromise) {
2017
2040
  await this.oauthCallbackPromise;
2018
2041
  this.oauthCallbackPromise = null;
2019
2042
  }
2020
2043
  try {
2021
- const tokenData = await this.oauthManager.getProviderToken(provider);
2044
+ const tokenData = await this.oauthManager.getProviderToken(provider, context);
2022
2045
  const isAuthenticated = !!tokenData;
2023
2046
  const currentState = this.authState.get(provider);
2024
2047
  if (currentState) {
package/dist/server.js CHANGED
@@ -1182,6 +1182,7 @@ class OAuthManager {
1182
1182
  apiBaseUrl;
1183
1183
  getTokenCallback;
1184
1184
  setTokenCallback;
1185
+ removeTokenCallback;
1185
1186
  skipLocalStorage;
1186
1187
  constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
1187
1188
  this.oauthApiBase = oauthApiBase;
@@ -1194,6 +1195,7 @@ class OAuthManager {
1194
1195
  };
1195
1196
  this.getTokenCallback = tokenCallbacks?.getProviderToken;
1196
1197
  this.setTokenCallback = tokenCallbacks?.setProviderToken;
1198
+ this.removeTokenCallback = tokenCallbacks?.removeProviderToken;
1197
1199
  this.skipLocalStorage = tokenCallbacks?.skipLocalStorage ?? !!tokenCallbacks?.getProviderToken;
1198
1200
  this.cleanupExpiredPendingAuths();
1199
1201
  }
@@ -1283,10 +1285,22 @@ class OAuthManager {
1283
1285
  expiresAt: tokenData.expiresAt
1284
1286
  };
1285
1287
  }
1286
- async disconnectProvider(provider) {
1287
- const tokenData = await this.getProviderToken(provider);
1288
- if (!tokenData) {
1289
- throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1288
+ async disconnectProvider(provider, context) {
1289
+ if (this.removeTokenCallback) {
1290
+ try {
1291
+ await this.removeTokenCallback(provider, context);
1292
+ } catch (error) {
1293
+ console.error(`Failed to delete token for ${provider} from database via removeProviderToken:`, error);
1294
+ }
1295
+ } else if (this.setTokenCallback) {
1296
+ try {
1297
+ const tokenData = await this.getProviderToken(provider, context);
1298
+ if (tokenData) {
1299
+ await this.setTokenCallback(provider, null, context);
1300
+ }
1301
+ } catch (error) {
1302
+ console.error(`Failed to delete token for ${provider} from database via setProviderToken:`, error);
1303
+ }
1290
1304
  }
1291
1305
  this.providerTokens.delete(provider);
1292
1306
  this.clearProviderToken(provider);
@@ -1313,7 +1327,11 @@ class OAuthManager {
1313
1327
  return this.providerTokens.get(provider);
1314
1328
  }
1315
1329
  async setProviderToken(provider, tokenData, context) {
1316
- this.providerTokens.set(provider, tokenData);
1330
+ if (tokenData === null) {
1331
+ this.providerTokens.delete(provider);
1332
+ } else {
1333
+ this.providerTokens.set(provider, tokenData);
1334
+ }
1317
1335
  await this.saveProviderToken(provider, tokenData, context);
1318
1336
  }
1319
1337
  clearProviderToken(provider) {
@@ -1362,11 +1380,15 @@ class OAuthManager {
1362
1380
  try {
1363
1381
  await this.setTokenCallback(provider, tokenData, context);
1364
1382
  } catch (error) {
1365
- console.error(`Failed to save token for ${provider} via callback:`, error);
1383
+ console.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
1366
1384
  throw error;
1367
1385
  }
1368
1386
  return;
1369
1387
  }
1388
+ if (tokenData === null) {
1389
+ this.clearProviderToken(provider);
1390
+ return;
1391
+ }
1370
1392
  if (this.skipLocalStorage) {
1371
1393
  return;
1372
1394
  }
@@ -1645,6 +1667,7 @@ class MCPClientBase {
1645
1667
  this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1646
1668
  getProviderToken: config.getProviderToken,
1647
1669
  setProviderToken: config.setProviderToken,
1670
+ removeProviderToken: config.removeProviderToken,
1648
1671
  skipLocalStorage: config.skipLocalStorage
1649
1672
  });
1650
1673
  for (const integration of this.integrations) {
@@ -1954,13 +1977,13 @@ class MCPClientBase {
1954
1977
  clearSessionToken() {
1955
1978
  this.oauthManager.clearAllProviderTokens();
1956
1979
  }
1957
- async disconnectProvider(provider) {
1980
+ async disconnectProvider(provider, context) {
1958
1981
  const integration = this.integrations.find((p) => p.oauth?.provider === provider);
1959
1982
  if (!integration?.oauth) {
1960
1983
  throw new Error(`No OAuth configuration found for provider: ${provider}`);
1961
1984
  }
1962
1985
  try {
1963
- await this.oauthManager.disconnectProvider(provider);
1986
+ await this.oauthManager.disconnectProvider(provider, context);
1964
1987
  this.authState.set(provider, { authenticated: false });
1965
1988
  this.eventEmitter.emit("auth:disconnect", { provider });
1966
1989
  } catch (error) {
@@ -2003,13 +2026,13 @@ class MCPClientBase {
2003
2026
  isProviderAuthenticated(provider) {
2004
2027
  return this.authState.get(provider)?.authenticated ?? false;
2005
2028
  }
2006
- async isAuthorized(provider) {
2029
+ async isAuthorized(provider, context) {
2007
2030
  if (this.oauthCallbackPromise) {
2008
2031
  await this.oauthCallbackPromise;
2009
2032
  this.oauthCallbackPromise = null;
2010
2033
  }
2011
2034
  try {
2012
- const tokenData = await this.oauthManager.getProviderToken(provider);
2035
+ const tokenData = await this.oauthManager.getProviderToken(provider, context);
2013
2036
  const isAuthenticated = !!tokenData;
2014
2037
  const currentState = this.authState.get(provider);
2015
2038
  if (currentState) {
@@ -213,21 +213,30 @@ export declare class MCPClientBase<TIntegrations extends readonly MCPIntegration
213
213
  * Removes authorization for a single provider while keeping others connected
214
214
  * Makes a server-side call to revoke the provider's authorization
215
215
  *
216
+ * When using database callbacks (server-side), provide context to delete
217
+ * the correct user's token from the database.
218
+ *
216
219
  * @param provider - Provider name to disconnect (e.g., 'github', 'gmail')
220
+ * @param context - Optional user context (userId, organizationId, etc.) for multi-tenant apps
217
221
  *
218
222
  * @example
219
223
  * ```typescript
220
- * // Disconnect only GitHub, keep Gmail connected
224
+ * // Client-side usage (no context needed)
221
225
  * await client.disconnectProvider('github');
222
226
  *
223
227
  * // Check if still authorized
224
228
  * const isAuthorized = await client.isAuthorized('github'); // false
229
+ * ```
225
230
  *
226
- * // Re-authorize if needed
227
- * await client.authorize('github');
231
+ * @example
232
+ * ```typescript
233
+ * // Server-side usage with context (multi-tenant)
234
+ * const context = await getSessionContext(request);
235
+ * await client.disconnectProvider('github', context);
236
+ * // Token is now deleted from database for the specific user
228
237
  * ```
229
238
  */
230
- disconnectProvider(provider: string): Promise<void>;
239
+ disconnectProvider(provider: string, context?: MCPContext): Promise<void>;
231
240
  /**
232
241
  * Logout and terminate all OAuth connections
233
242
  * Clears all session tokens, pending OAuth state, and resets authentication state for all providers
@@ -275,11 +284,17 @@ export declare class MCPClientBase<TIntegrations extends readonly MCPIntegration
275
284
  * Automatically waits for any pending OAuth callback to complete, ensuring
276
285
  * the auth state is always up-to-date, even immediately after OAuth redirects
277
286
  *
287
+ * When using database callbacks (server-side), provide context to check
288
+ * the correct user's token. Without context, it will check without user
289
+ * identification (works for single-user scenarios).
290
+ *
278
291
  * @param provider - Provider name (github, gmail, etc.)
292
+ * @param context - Optional user context (userId, organizationId, etc.) for multi-tenant apps
279
293
  * @returns Promise that resolves to authorization status
280
294
  *
281
295
  * @example
282
296
  * ```typescript
297
+ * // Client-side usage (no context needed)
283
298
  * const isAuthorized = await client.isAuthorized('github');
284
299
  * if (!isAuthorized) {
285
300
  * await client.authorize('github');
@@ -287,8 +302,15 @@ export declare class MCPClientBase<TIntegrations extends readonly MCPIntegration
287
302
  * console.log(await client.isAuthorized('github')); // true
288
303
  * }
289
304
  * ```
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * // Server-side usage with context
309
+ * const context = await getSessionContext(request);
310
+ * const isAuthorized = await client.isAuthorized('github', context);
311
+ * ```
290
312
  */
291
- isAuthorized(provider: string): Promise<boolean>;
313
+ isAuthorized(provider: string, context?: MCPContext): Promise<boolean>;
292
314
  /**
293
315
  * Get list of all authorized providers
294
316
  * Returns cached authorization status for all configured OAuth providers
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}