integrate-sdk 0.7.43 → 0.7.45

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.
@@ -982,7 +982,9 @@ class OAuthManager {
982
982
  flowConfig;
983
983
  oauthApiBase;
984
984
  apiBaseUrl;
985
- constructor(oauthApiBase, flowConfig, apiBaseUrl) {
985
+ getTokenCallback;
986
+ setTokenCallback;
987
+ constructor(oauthApiBase, flowConfig, apiBaseUrl, tokenCallbacks) {
986
988
  this.oauthApiBase = oauthApiBase;
987
989
  this.apiBaseUrl = apiBaseUrl;
988
990
  this.windowManager = new OAuthWindowManager;
@@ -991,6 +993,8 @@ class OAuthManager {
991
993
  popupOptions: flowConfig?.popupOptions,
992
994
  onAuthCallback: flowConfig?.onAuthCallback
993
995
  };
996
+ this.getTokenCallback = tokenCallbacks?.getProviderToken;
997
+ this.setTokenCallback = tokenCallbacks?.setProviderToken;
994
998
  this.cleanupExpiredPendingAuths();
995
999
  }
996
1000
  async initiateFlow(provider, config, returnUrl) {
@@ -1054,7 +1058,7 @@ class OAuthManager {
1054
1058
  scopes: response.scopes
1055
1059
  };
1056
1060
  this.providerTokens.set(pendingAuth.provider, tokenData);
1057
- this.saveProviderToken(pendingAuth.provider, tokenData);
1061
+ await this.saveProviderToken(pendingAuth.provider, tokenData);
1058
1062
  this.pendingAuths.delete(state);
1059
1063
  this.removePendingAuthFromStorage(state);
1060
1064
  return { ...tokenData, provider: pendingAuth.provider };
@@ -1065,7 +1069,7 @@ class OAuthManager {
1065
1069
  }
1066
1070
  }
1067
1071
  async checkAuthStatus(provider) {
1068
- const tokenData = this.providerTokens.get(provider);
1072
+ const tokenData = await this.getProviderToken(provider);
1069
1073
  if (!tokenData) {
1070
1074
  return {
1071
1075
  authorized: false,
@@ -1080,26 +1084,38 @@ class OAuthManager {
1080
1084
  };
1081
1085
  }
1082
1086
  async disconnectProvider(provider) {
1083
- const tokenData = this.providerTokens.get(provider);
1087
+ const tokenData = await this.getProviderToken(provider);
1084
1088
  if (!tokenData) {
1085
1089
  throw new Error(`No access token available for provider "${provider}". Cannot disconnect provider.`);
1086
1090
  }
1087
1091
  this.providerTokens.delete(provider);
1088
1092
  this.clearProviderToken(provider);
1089
1093
  }
1090
- getProviderToken(provider) {
1094
+ async getProviderToken(provider, context) {
1095
+ if (this.getTokenCallback) {
1096
+ try {
1097
+ const tokenData = await this.getTokenCallback(provider, context);
1098
+ if (tokenData) {
1099
+ this.providerTokens.set(provider, tokenData);
1100
+ }
1101
+ return tokenData;
1102
+ } catch (error) {
1103
+ console.error(`Failed to get token for ${provider} via callback:`, error);
1104
+ return;
1105
+ }
1106
+ }
1091
1107
  return this.providerTokens.get(provider);
1092
1108
  }
1093
1109
  getAllProviderTokens() {
1094
1110
  return new Map(this.providerTokens);
1095
1111
  }
1096
- setProviderToken(provider, tokenData) {
1112
+ async setProviderToken(provider, tokenData, context) {
1097
1113
  this.providerTokens.set(provider, tokenData);
1098
- this.saveProviderToken(provider, tokenData);
1114
+ await this.saveProviderToken(provider, tokenData, context);
1099
1115
  }
1100
1116
  clearProviderToken(provider) {
1101
1117
  this.providerTokens.delete(provider);
1102
- if (typeof window !== "undefined" && window.localStorage) {
1118
+ if (!this.getTokenCallback && typeof window !== "undefined" && window.localStorage) {
1103
1119
  try {
1104
1120
  window.localStorage.removeItem(`integrate_token_${provider}`);
1105
1121
  } catch (error) {
@@ -1110,7 +1126,7 @@ class OAuthManager {
1110
1126
  clearAllProviderTokens() {
1111
1127
  const providers = Array.from(this.providerTokens.keys());
1112
1128
  this.providerTokens.clear();
1113
- if (typeof window !== "undefined" && window.localStorage) {
1129
+ if (!this.getTokenCallback && typeof window !== "undefined" && window.localStorage) {
1114
1130
  for (const provider of providers) {
1115
1131
  try {
1116
1132
  window.localStorage.removeItem(`integrate_token_${provider}`);
@@ -1138,7 +1154,16 @@ class OAuthManager {
1138
1154
  }
1139
1155
  }
1140
1156
  }
1141
- saveProviderToken(provider, tokenData) {
1157
+ async saveProviderToken(provider, tokenData, context) {
1158
+ if (this.setTokenCallback) {
1159
+ try {
1160
+ await this.setTokenCallback(provider, tokenData, context);
1161
+ } catch (error) {
1162
+ console.error(`Failed to save token for ${provider} via callback:`, error);
1163
+ throw error;
1164
+ }
1165
+ return;
1166
+ }
1142
1167
  if (typeof window !== "undefined" && window.localStorage) {
1143
1168
  try {
1144
1169
  const key = `integrate_token_${provider}`;
@@ -1148,7 +1173,15 @@ class OAuthManager {
1148
1173
  }
1149
1174
  }
1150
1175
  }
1151
- loadProviderToken(provider) {
1176
+ async loadProviderToken(provider) {
1177
+ if (this.getTokenCallback) {
1178
+ try {
1179
+ return await this.getTokenCallback(provider);
1180
+ } catch (error) {
1181
+ console.error(`Failed to load token for ${provider} via callback:`, error);
1182
+ return;
1183
+ }
1184
+ }
1152
1185
  if (typeof window !== "undefined" && window.localStorage) {
1153
1186
  try {
1154
1187
  const key = `integrate_token_${provider}`;
@@ -1162,9 +1195,9 @@ class OAuthManager {
1162
1195
  }
1163
1196
  return;
1164
1197
  }
1165
- loadAllProviderTokens(providers) {
1198
+ async loadAllProviderTokens(providers) {
1166
1199
  for (const provider of providers) {
1167
- const tokenData = this.loadProviderToken(provider);
1200
+ const tokenData = await this.loadProviderToken(provider);
1168
1201
  if (tokenData) {
1169
1202
  this.providerTokens.set(provider, tokenData);
1170
1203
  }
@@ -1362,16 +1395,28 @@ class MCPClientBase {
1362
1395
  };
1363
1396
  this.onReauthRequired = config.onReauthRequired;
1364
1397
  this.maxReauthRetries = config.maxReauthRetries ?? 1;
1365
- this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl);
1398
+ this.oauthManager = new OAuthManager(oauthApiBase, config.oauthFlow, this.apiBaseUrl, {
1399
+ getProviderToken: config.getProviderToken,
1400
+ setProviderToken: config.setProviderToken
1401
+ });
1366
1402
  const providers = this.integrations.filter((p) => p.oauth).map((p) => p.oauth.provider);
1367
- this.oauthManager.loadAllProviderTokens(providers);
1403
+ this.oauthManager.loadAllProviderTokens(providers).catch((error) => {
1404
+ console.error("Failed to load provider tokens:", error);
1405
+ });
1368
1406
  for (const integration of this.integrations) {
1369
1407
  for (const toolName of integration.tools) {
1370
1408
  this.enabledToolNames.add(toolName);
1371
1409
  }
1372
1410
  if (integration.oauth) {
1373
- const hasToken = this.oauthManager.getProviderToken(integration.oauth.provider) !== undefined;
1374
- this.authState.set(integration.oauth.provider, { authenticated: hasToken });
1411
+ const provider = integration.oauth.provider;
1412
+ this.authState.set(provider, { authenticated: false });
1413
+ this.oauthManager.getProviderToken(provider).then((tokenData) => {
1414
+ if (tokenData) {
1415
+ this.authState.set(provider, { authenticated: true });
1416
+ }
1417
+ }).catch((error) => {
1418
+ console.error(`Failed to check token for ${provider}:`, error);
1419
+ });
1375
1420
  }
1376
1421
  }
1377
1422
  const integrationIds = this.integrations.map((i) => i.id);
@@ -1399,9 +1444,9 @@ class MCPClientBase {
1399
1444
  }
1400
1445
  return new Proxy({}, {
1401
1446
  get: (_target, methodName) => {
1402
- return async (args) => {
1447
+ return async (args, options) => {
1403
1448
  const toolName = methodToToolName(methodName, integrationId);
1404
- return await this.callToolWithRetry(toolName, args, 0);
1449
+ return await this.callToolWithRetry(toolName, args, 0, options);
1405
1450
  };
1406
1451
  }
1407
1452
  });
@@ -1409,17 +1454,17 @@ class MCPClientBase {
1409
1454
  createServerProxy() {
1410
1455
  return new Proxy({}, {
1411
1456
  get: (_target, methodName) => {
1412
- return async (args) => {
1457
+ return async (args, options) => {
1413
1458
  const toolName = methodToToolName(methodName, "");
1414
1459
  const finalToolName = toolName.startsWith("_") ? toolName.substring(1) : toolName;
1415
- return await this.callServerToolInternal(finalToolName, args);
1460
+ return await this.callServerToolInternal(finalToolName, args, options);
1416
1461
  };
1417
1462
  }
1418
1463
  });
1419
1464
  }
1420
- async callServerToolInternal(name, args) {
1465
+ async callServerToolInternal(name, args, options) {
1421
1466
  try {
1422
- const response = await this.callToolThroughHandler(name, args);
1467
+ const response = await this.callToolThroughHandler(name, args, undefined, options);
1423
1468
  return response;
1424
1469
  } catch (error) {
1425
1470
  const parsedError = parseServerError(error, { toolName: name });
@@ -1468,8 +1513,8 @@ class MCPClientBase {
1468
1513
  const enabledTools = response.tools.filter((tool) => this.enabledToolNames.has(tool.name));
1469
1514
  console.log(`Discovered ${response.tools.length} tools, ${enabledTools.length} enabled by integrations`);
1470
1515
  }
1471
- async _callToolByName(name, args) {
1472
- return await this.callToolWithRetry(name, args, 0);
1516
+ async _callToolByName(name, args, options) {
1517
+ return await this.callToolWithRetry(name, args, 0, options);
1473
1518
  }
1474
1519
  async callServerTool(name, args) {
1475
1520
  try {
@@ -1480,12 +1525,12 @@ class MCPClientBase {
1480
1525
  throw parsedError;
1481
1526
  }
1482
1527
  }
1483
- async callToolThroughHandler(name, args, provider) {
1528
+ async callToolThroughHandler(name, args, provider, options) {
1484
1529
  const transportHeaders = this.transport.headers || {};
1485
1530
  const hasApiKey = !!transportHeaders["X-API-KEY"];
1486
1531
  if (hasApiKey) {
1487
1532
  if (provider) {
1488
- const tokenData = this.oauthManager.getProviderToken(provider);
1533
+ const tokenData = await this.oauthManager.getProviderToken(provider, options?.context);
1489
1534
  if (tokenData && this.transport.setHeader) {
1490
1535
  const previousAuthHeader = transportHeaders["Authorization"];
1491
1536
  try {
@@ -1515,7 +1560,7 @@ class MCPClientBase {
1515
1560
  "Content-Type": "application/json"
1516
1561
  };
1517
1562
  if (provider) {
1518
- const tokenData = this.oauthManager.getProviderToken(provider);
1563
+ const tokenData = await this.oauthManager.getProviderToken(provider, options?.context);
1519
1564
  if (tokenData) {
1520
1565
  headers["Authorization"] = `Bearer ${tokenData.accessToken}`;
1521
1566
  }
@@ -1553,13 +1598,13 @@ class MCPClientBase {
1553
1598
  const result = await response.json();
1554
1599
  return result;
1555
1600
  }
1556
- async callToolWithRetry(name, args, retryCount = 0) {
1601
+ async callToolWithRetry(name, args, retryCount = 0, options) {
1557
1602
  if (!this.enabledToolNames.has(name)) {
1558
1603
  throw new Error(`Tool "${name}" is not enabled. Enable it by adding the appropriate integration.`);
1559
1604
  }
1560
1605
  const provider = this.getProviderForTool(name);
1561
1606
  try {
1562
- const response = await this.callToolThroughHandler(name, args, provider);
1607
+ const response = await this.callToolThroughHandler(name, args, provider, options);
1563
1608
  if (provider) {
1564
1609
  this.authState.set(provider, { authenticated: true });
1565
1610
  }
@@ -1710,7 +1755,7 @@ class MCPClientBase {
1710
1755
  this.eventEmitter.emit("auth:started", { provider });
1711
1756
  try {
1712
1757
  await this.oauthManager.initiateFlow(provider, integration.oauth, options?.returnUrl);
1713
- const tokenData = this.oauthManager.getProviderToken(provider);
1758
+ const tokenData = await this.oauthManager.getProviderToken(provider);
1714
1759
  if (tokenData) {
1715
1760
  this.eventEmitter.emit("auth:complete", {
1716
1761
  provider,
@@ -1741,11 +1786,11 @@ class MCPClientBase {
1741
1786
  throw error;
1742
1787
  }
1743
1788
  }
1744
- getProviderToken(provider) {
1745
- return this.oauthManager.getProviderToken(provider);
1789
+ async getProviderToken(provider, context) {
1790
+ return await this.oauthManager.getProviderToken(provider, context);
1746
1791
  }
1747
- setProviderToken(provider, tokenData) {
1748
- this.oauthManager.setProviderToken(provider, tokenData);
1792
+ async setProviderToken(provider, tokenData, context) {
1793
+ await this.oauthManager.setProviderToken(provider, tokenData, context);
1749
1794
  this.authState.set(provider, { authenticated: true });
1750
1795
  }
1751
1796
  getAllProviderTokens() {
@@ -7,7 +7,6 @@ import type { MCPClient } from "../client.js";
7
7
  import type { AIToolsOptions } from "./utils.js";
8
8
  export * from "./vercel-ai.js";
9
9
  export * from "./openai.js";
10
- export * from "./openai-agents.js";
11
10
  export * from "./anthropic.js";
12
11
  export * from "./google.js";
13
12
  export * from "./cloudflare.js";
@@ -18,7 +17,7 @@ export * from "./utils.js";
18
17
  /**
19
18
  * Supported AI provider names
20
19
  */
21
- export type AIProviderName = "vercel-ai" | "openai" | "openai-agents" | "anthropic" | "google" | "cloudflare" | "langchain" | "llamaindex" | "mastra";
20
+ export type AIProviderName = "vercel-ai" | "openai" | "anthropic" | "google" | "cloudflare" | "langchain" | "llamaindex" | "mastra";
22
21
  /**
23
22
  * Generic function to get AI tools for any supported provider
24
23
  *
@@ -69,7 +68,6 @@ export type AIProviderName = "vercel-ai" | "openai" | "openai-agents" | "anthrop
69
68
  */
70
69
  export declare function getAITools(client: MCPClient<any>, provider: "vercel-ai", options?: AIToolsOptions): Promise<Record<string, any>>;
71
70
  export declare function getAITools(client: MCPClient<any>, provider: "openai", options?: AIToolsOptions): Promise<Array<any>>;
72
- export declare function getAITools(client: MCPClient<any>, provider: "openai-agents", options?: AIToolsOptions): Promise<Array<any>>;
73
71
  export declare function getAITools(client: MCPClient<any>, provider: "anthropic", options?: AIToolsOptions): Promise<Array<any>>;
74
72
  export declare function getAITools(client: MCPClient<any>, provider: "google", options?: AIToolsOptions): Promise<Array<any>>;
75
73
  export declare function getAITools(client: MCPClient<any>, provider: "cloudflare", options?: AIToolsOptions): Promise<Record<string, any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAa3B;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,QAAQ,GACR,eAAe,GACf,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,QAAQ,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEhC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEhC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAY3B;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,QAAQ,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEhC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEhC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC"}
package/dist/ai/index.js CHANGED
@@ -4426,7 +4426,10 @@ function convertMCPToolToVercelAI(mcpTool, client, options) {
4426
4426
  description: mcpTool.description || `Execute ${mcpTool.name}`,
4427
4427
  inputSchema: jsonSchemaToZod(mcpTool.inputSchema),
4428
4428
  execute: async (args) => {
4429
- return await executeToolWithToken(client, mcpTool.name, args, options);
4429
+ if (options?.providerTokens) {
4430
+ return await executeToolWithToken(client, mcpTool.name, args, options);
4431
+ }
4432
+ return await client._callToolByName(mcpTool.name, args, options?.context ? { context: options.context } : undefined);
4430
4433
  }
4431
4434
  };
4432
4435
  }
@@ -4525,33 +4528,6 @@ async function handleOpenAIResponse(client, response, options) {
4525
4528
  return handleOpenAIToolCalls(client, functionCalls, finalOptions);
4526
4529
  }
4527
4530
 
4528
- // openai-agents.ts
4529
- function convertMCPToolToOpenAIAgents(mcpTool, client, options) {
4530
- return {
4531
- name: mcpTool.name,
4532
- description: mcpTool.description || `Execute ${mcpTool.name}`,
4533
- parameters: jsonSchemaToZod(mcpTool.inputSchema),
4534
- execute: async (args) => {
4535
- return await executeToolWithToken(client, mcpTool.name, args, options);
4536
- }
4537
- };
4538
- }
4539
- function convertMCPToolsToOpenAIAgents(client, options) {
4540
- const mcpTools = client.getEnabledTools();
4541
- return mcpTools.map((mcpTool) => convertMCPToolToOpenAIAgents(mcpTool, client, options));
4542
- }
4543
- async function getOpenAIAgentsTools(client, options) {
4544
- await ensureClientConnected(client);
4545
- let providerTokens = options?.providerTokens;
4546
- if (!providerTokens) {
4547
- try {
4548
- providerTokens = await getProviderTokens();
4549
- } catch {}
4550
- }
4551
- const finalOptions = providerTokens ? { ...options, providerTokens } : options;
4552
- return convertMCPToolsToOpenAIAgents(client, finalOptions);
4553
- }
4554
-
4555
4531
  // langchain.ts
4556
4532
  function convertMCPToolToLangChain(mcpTool, client, options) {
4557
4533
  return {
@@ -4647,8 +4623,6 @@ async function getAITools(client, provider, options) {
4647
4623
  return await getVercelAITools(client, options);
4648
4624
  case "openai":
4649
4625
  return await getOpenAITools(client, options);
4650
- case "openai-agents":
4651
- return await getOpenAIAgentsTools(client, options);
4652
4626
  case "anthropic":
4653
4627
  return await getAnthropicTools(client, options);
4654
4628
  case "google":
@@ -4677,7 +4651,6 @@ export {
4677
4651
  getProviderTokens,
4678
4652
  getProviderForTool,
4679
4653
  getOpenAITools,
4680
- getOpenAIAgentsTools,
4681
4654
  getMastraTools,
4682
4655
  getLlamaIndexTools,
4683
4656
  getLangChainTools,
@@ -4693,7 +4666,6 @@ export {
4693
4666
  executeAnthropicToolCall,
4694
4667
  ensureClientConnected,
4695
4668
  convertMCPToolsToVercelAI,
4696
- convertMCPToolsToOpenAIAgents,
4697
4669
  convertMCPToolsToOpenAI,
4698
4670
  convertMCPToolsToMastra,
4699
4671
  convertMCPToolsToLlamaIndex,
@@ -4702,7 +4674,6 @@ export {
4702
4674
  convertMCPToolsToCloudflare,
4703
4675
  convertMCPToolsToAnthropic,
4704
4676
  convertMCPToolToVercelAI,
4705
- convertMCPToolToOpenAIAgents,
4706
4677
  convertMCPToolToOpenAI,
4707
4678
  convertMCPToolToMastra,
4708
4679
  convertMCPToolToLlamaIndex,
@@ -6,6 +6,7 @@
6
6
  import { z } from "zod";
7
7
  import type { MCPClient } from "../client.js";
8
8
  import type { MCPTool } from "../protocol/messages.js";
9
+ import type { MCPContext } from "../config/types.js";
9
10
  import { type AIToolsOptions } from "./utils.js";
10
11
  /**
11
12
  * Tool definition compatible with Vercel AI SDK v5
@@ -20,13 +21,15 @@ export interface VercelAITool {
20
21
  * Options for converting MCP tools to Vercel AI SDK format
21
22
  */
22
23
  export interface VercelAIToolsOptions extends AIToolsOptions {
24
+ /** User context for multi-tenant token storage */
25
+ context?: MCPContext;
23
26
  }
24
27
  /**
25
28
  * Convert a single MCP tool to Vercel AI SDK format
26
29
  *
27
30
  * @param mcpTool - The MCP tool definition
28
31
  * @param client - The MCP client instance (used for executing the tool)
29
- * @param options - Optional configuration including provider tokens
32
+ * @param options - Optional configuration including provider tokens and context
30
33
  * @returns Vercel AI SDK compatible tool definition
31
34
  */
32
35
  export declare function convertMCPToolToVercelAI(mcpTool: MCPTool, client: MCPClient<any>, options?: VercelAIToolsOptions): VercelAITool;
@@ -109,11 +112,12 @@ export declare function convertMCPToolsToVercelAI(client: MCPClient<any>, option
109
112
  *
110
113
  * export async function POST(req: Request) {
111
114
  * const { messages } = await req.json();
115
+ * const userId = await getUserIdFromSession(req);
112
116
  *
113
117
  * const result = streamText({
114
118
  * model: "openai/gpt-4",
115
119
  * messages,
116
- * tools: await getVercelAITools(serverClient), // Tokens auto-extracted
120
+ * tools: await getVercelAITools(serverClient, { context: { userId } }), // Pass user context
117
121
  * });
118
122
  *
119
123
  * return result.toUIMessageStreamResponse();
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../../src/ai/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;CAAI;AAEhE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAQd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,gCAkB/B"}
1
+ {"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../../src/ai/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAcd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,gCAkB/B"}
@@ -4208,7 +4208,10 @@ function convertMCPToolToVercelAI(mcpTool, client, options) {
4208
4208
  description: mcpTool.description || `Execute ${mcpTool.name}`,
4209
4209
  inputSchema: jsonSchemaToZod(mcpTool.inputSchema),
4210
4210
  execute: async (args) => {
4211
- return await executeToolWithToken(client, mcpTool.name, args, options);
4211
+ if (options?.providerTokens) {
4212
+ return await executeToolWithToken(client, mcpTool.name, args, options);
4213
+ }
4214
+ return await client._callToolByName(mcpTool.name, args, options?.context ? { context: options.context } : undefined);
4212
4215
  }
4213
4216
  };
4214
4217
  }