integrate-sdk 0.8.42 → 0.8.43-dev.0
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/adapters/auto-routes.d.ts.map +1 -1
- package/dist/adapters/auto-routes.js +265 -139
- package/dist/adapters/base-handler.d.ts.map +1 -1
- package/dist/adapters/index.js +261 -137
- package/dist/adapters/nextjs-oauth-redirect.d.ts.map +1 -1
- package/dist/adapters/nextjs-oauth-redirect.js +47 -2
- package/dist/adapters/nextjs.d.ts.map +1 -1
- package/dist/adapters/nextjs.js +260 -137
- package/dist/adapters/node.js +260 -137
- package/dist/adapters/svelte-kit.js +260 -137
- package/dist/adapters/tanstack-start.js +260 -137
- package/dist/index.js +275 -147
- package/dist/oauth.js +265 -139
- package/dist/react.js +59 -14
- package/dist/server.js +264 -137
- package/dist/src/adapters/auto-routes.d.ts.map +1 -1
- package/dist/src/adapters/base-handler.d.ts.map +1 -1
- package/dist/src/adapters/nextjs-oauth-redirect.d.ts.map +1 -1
- package/dist/src/adapters/nextjs.d.ts.map +1 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/config/types.d.ts +15 -0
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/integrations/airtable.d.ts.map +1 -1
- package/dist/src/integrations/calcom.d.ts.map +1 -1
- package/dist/src/integrations/cursor.d.ts.map +1 -1
- package/dist/src/integrations/figma.d.ts.map +1 -1
- package/dist/src/integrations/gcal.d.ts.map +1 -1
- package/dist/src/integrations/github.d.ts.map +1 -1
- package/dist/src/integrations/gmail.d.ts.map +1 -1
- package/dist/src/integrations/gworkspace.d.ts.map +1 -1
- package/dist/src/integrations/hubspot.d.ts.map +1 -1
- package/dist/src/integrations/intercom.d.ts.map +1 -1
- package/dist/src/integrations/linear.d.ts.map +1 -1
- package/dist/src/integrations/notion.d.ts.map +1 -1
- package/dist/src/integrations/onedrive.d.ts.map +1 -1
- package/dist/src/integrations/outlook.d.ts.map +1 -1
- package/dist/src/integrations/polar.d.ts.map +1 -1
- package/dist/src/integrations/ramp.d.ts.map +1 -1
- package/dist/src/integrations/slack.d.ts.map +1 -1
- package/dist/src/integrations/stripe.d.ts.map +1 -1
- package/dist/src/integrations/todoist.d.ts.map +1 -1
- package/dist/src/integrations/vercel.d.ts.map +1 -1
- package/dist/src/integrations/whatsapp.d.ts.map +1 -1
- package/dist/src/integrations/youtube.d.ts.map +1 -1
- package/dist/src/integrations/zendesk.d.ts.map +1 -1
- package/dist/src/oauth/email-fetcher.d.ts.map +1 -1
- package/dist/src/oauth/manager.d.ts.map +1 -1
- package/dist/src/oauth/window-manager.d.ts.map +1 -1
- package/dist/src/react/hooks.d.ts.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/transport/http-session.d.ts.map +1 -1
- package/dist/src/transport/http-stream.d.ts.map +1 -1
- package/dist/src/utils/logger.d.ts +37 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/adapters/base-handler.js +0 -561
- package/dist/ai/cloudflare.d.ts +0 -158
- package/dist/ai/cloudflare.d.ts.map +0 -1
- package/dist/ai/cloudflare.js +0 -4249
- package/dist/ai/langchain.d.ts +0 -139
- package/dist/ai/langchain.d.ts.map +0 -1
- package/dist/ai/langchain.js +0 -4237
- package/dist/ai/llamaindex.d.ts +0 -125
- package/dist/ai/llamaindex.d.ts.map +0 -1
- package/dist/ai/llamaindex.js +0 -4236
- package/dist/ai/mastra.d.ts +0 -138
- package/dist/ai/mastra.d.ts.map +0 -1
- package/dist/ai/mastra.js +0 -4240
- package/dist/src/ai/cloudflare.d.ts +0 -158
- package/dist/src/ai/cloudflare.d.ts.map +0 -1
- package/dist/src/ai/langchain.d.ts +0 -139
- package/dist/src/ai/langchain.d.ts.map +0 -1
- package/dist/src/ai/llamaindex.d.ts +0 -125
- package/dist/src/ai/llamaindex.d.ts.map +0 -1
- package/dist/src/ai/mastra.d.ts +0 -138
- package/dist/src/ai/mastra.d.ts.map +0 -1
- package/dist/src/integrations/vercel-ai.d.ts +0 -127
- package/dist/src/integrations/vercel-ai.d.ts.map +0 -1
- package/dist/src/plugins/generic.d.ts +0 -99
- package/dist/src/plugins/generic.d.ts.map +0 -1
- package/dist/src/plugins/github-client.d.ts +0 -320
- package/dist/src/plugins/github-client.d.ts.map +0 -1
- package/dist/src/plugins/github.d.ts +0 -89
- package/dist/src/plugins/github.d.ts.map +0 -1
- package/dist/src/plugins/gmail-client.d.ts +0 -106
- package/dist/src/plugins/gmail-client.d.ts.map +0 -1
- package/dist/src/plugins/gmail.d.ts +0 -87
- package/dist/src/plugins/gmail.d.ts.map +0 -1
- package/dist/src/plugins/server-client.d.ts +0 -18
- package/dist/src/plugins/server-client.d.ts.map +0 -1
- package/dist/src/plugins/types.d.ts +0 -70
- package/dist/src/plugins/types.d.ts.map +0 -1
package/dist/server.js
CHANGED
|
@@ -19,6 +19,49 @@ function parseMessage(message) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
// src/utils/logger.ts
|
|
23
|
+
function shouldLog(level) {
|
|
24
|
+
return logLevelHierarchy[level] <= logLevelHierarchy[globalLogLevel];
|
|
25
|
+
}
|
|
26
|
+
function setLogLevel(level) {
|
|
27
|
+
globalLogLevel = level;
|
|
28
|
+
}
|
|
29
|
+
function createLogger(namespace) {
|
|
30
|
+
const prefix = `[${namespace}]`;
|
|
31
|
+
return {
|
|
32
|
+
debug: (...args) => {
|
|
33
|
+
if (shouldLog("debug")) {
|
|
34
|
+
console.log(prefix, ...args);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
info: (...args) => {
|
|
38
|
+
if (shouldLog("info")) {
|
|
39
|
+
console.log(prefix, ...args);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
warn: (...args) => {
|
|
43
|
+
if (shouldLog("warn")) {
|
|
44
|
+
console.warn(prefix, ...args);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
error: (...args) => {
|
|
48
|
+
if (shouldLog("error")) {
|
|
49
|
+
console.error(prefix, ...args);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
var globalLogLevel = "error", logLevelHierarchy;
|
|
55
|
+
var init_logger = __esm(() => {
|
|
56
|
+
logLevelHierarchy = {
|
|
57
|
+
none: 0,
|
|
58
|
+
error: 1,
|
|
59
|
+
warn: 2,
|
|
60
|
+
info: 3,
|
|
61
|
+
debug: 4
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
|
|
22
65
|
// src/transport/http-session.ts
|
|
23
66
|
class HttpSessionTransport {
|
|
24
67
|
url;
|
|
@@ -75,7 +118,7 @@ class HttpSessionTransport {
|
|
|
75
118
|
const sid = response.headers.get("mcp-session-id");
|
|
76
119
|
if (sid) {
|
|
77
120
|
this.sessionId = sid;
|
|
78
|
-
|
|
121
|
+
logger.debug("Session established:", sid);
|
|
79
122
|
this.startSSEListener();
|
|
80
123
|
}
|
|
81
124
|
}
|
|
@@ -125,7 +168,7 @@ class HttpSessionTransport {
|
|
|
125
168
|
if (error instanceof Error && error.name === "AbortError") {
|
|
126
169
|
return;
|
|
127
170
|
}
|
|
128
|
-
|
|
171
|
+
logger.error("SSE connection error:", error);
|
|
129
172
|
}
|
|
130
173
|
}
|
|
131
174
|
async processSSEStream(body) {
|
|
@@ -154,7 +197,7 @@ class HttpSessionTransport {
|
|
|
154
197
|
if (error instanceof Error && error.name === "AbortError") {
|
|
155
198
|
return;
|
|
156
199
|
}
|
|
157
|
-
|
|
200
|
+
logger.error("SSE stream error:", error);
|
|
158
201
|
} finally {
|
|
159
202
|
reader.releaseLock();
|
|
160
203
|
}
|
|
@@ -166,11 +209,11 @@ class HttpSessionTransport {
|
|
|
166
209
|
try {
|
|
167
210
|
handler(message);
|
|
168
211
|
} catch (error) {
|
|
169
|
-
|
|
212
|
+
logger.error("Error in message handler:", error);
|
|
170
213
|
}
|
|
171
214
|
});
|
|
172
215
|
} catch (error) {
|
|
173
|
-
|
|
216
|
+
logger.error("Failed to parse notification:", error);
|
|
174
217
|
}
|
|
175
218
|
}
|
|
176
219
|
onMessage(handler) {
|
|
@@ -207,7 +250,11 @@ class HttpSessionTransport {
|
|
|
207
250
|
return { ...this.headers };
|
|
208
251
|
}
|
|
209
252
|
}
|
|
210
|
-
var
|
|
253
|
+
var logger;
|
|
254
|
+
var init_http_session = __esm(() => {
|
|
255
|
+
init_logger();
|
|
256
|
+
logger = createLogger("HTTPSession");
|
|
257
|
+
});
|
|
211
258
|
|
|
212
259
|
// src/protocol/messages.ts
|
|
213
260
|
var init_messages = () => {};
|
|
@@ -566,7 +613,7 @@ class OAuthWindowManager {
|
|
|
566
613
|
const windowName = `oauth_popup_${Date.now()}`;
|
|
567
614
|
this.popupWindow = window.open(url, windowName, features);
|
|
568
615
|
if (!this.popupWindow) {
|
|
569
|
-
|
|
616
|
+
logger2.warn("Popup was blocked by the browser. Please allow popups for this site.");
|
|
570
617
|
return null;
|
|
571
618
|
}
|
|
572
619
|
this.popupWindow.focus();
|
|
@@ -576,7 +623,7 @@ class OAuthWindowManager {
|
|
|
576
623
|
if (!isBrowser()) {
|
|
577
624
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
578
625
|
}
|
|
579
|
-
|
|
626
|
+
logger2.debug("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
580
627
|
window.location.href = url;
|
|
581
628
|
}
|
|
582
629
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -655,7 +702,7 @@ class OAuthWindowManager {
|
|
|
655
702
|
window.history.replaceState(null, "", window.location.pathname + window.location.search);
|
|
656
703
|
}
|
|
657
704
|
} catch (e) {
|
|
658
|
-
|
|
705
|
+
logger2.error("Failed to parse OAuth callback params from hash:", e);
|
|
659
706
|
}
|
|
660
707
|
}
|
|
661
708
|
if (!code && !error) {
|
|
@@ -668,7 +715,7 @@ class OAuthWindowManager {
|
|
|
668
715
|
sessionStorage.removeItem("oauth_callback_params");
|
|
669
716
|
}
|
|
670
717
|
} catch (e) {
|
|
671
|
-
|
|
718
|
+
logger2.error("Failed to parse OAuth callback params from sessionStorage:", e);
|
|
672
719
|
}
|
|
673
720
|
}
|
|
674
721
|
if (error) {
|
|
@@ -701,6 +748,11 @@ class OAuthWindowManager {
|
|
|
701
748
|
this.cleanup();
|
|
702
749
|
}
|
|
703
750
|
}
|
|
751
|
+
var logger2;
|
|
752
|
+
var init_window_manager = __esm(() => {
|
|
753
|
+
init_logger();
|
|
754
|
+
logger2 = createLogger("OAuthWindowManager");
|
|
755
|
+
});
|
|
704
756
|
|
|
705
757
|
// src/oauth/indexeddb-storage.ts
|
|
706
758
|
class IndexedDBStorage {
|
|
@@ -891,7 +943,7 @@ async function fetchUserEmail(provider, tokenData) {
|
|
|
891
943
|
return tokenData.email;
|
|
892
944
|
}
|
|
893
945
|
} catch (error) {
|
|
894
|
-
|
|
946
|
+
logger3.error(`Failed to fetch email for ${provider}:`, error);
|
|
895
947
|
return;
|
|
896
948
|
}
|
|
897
949
|
}
|
|
@@ -933,7 +985,7 @@ async function fetchGitHubEmail(accessToken) {
|
|
|
933
985
|
}
|
|
934
986
|
return;
|
|
935
987
|
} catch (error) {
|
|
936
|
-
|
|
988
|
+
logger3.error("Failed to fetch GitHub email:", error);
|
|
937
989
|
return;
|
|
938
990
|
}
|
|
939
991
|
}
|
|
@@ -950,7 +1002,7 @@ async function fetchGoogleEmail(accessToken) {
|
|
|
950
1002
|
const user = await response.json();
|
|
951
1003
|
return user.email;
|
|
952
1004
|
} catch (error) {
|
|
953
|
-
|
|
1005
|
+
logger3.error("Failed to fetch Google email:", error);
|
|
954
1006
|
return;
|
|
955
1007
|
}
|
|
956
1008
|
}
|
|
@@ -968,10 +1020,15 @@ async function fetchNotionEmail(accessToken) {
|
|
|
968
1020
|
const user = await response.json();
|
|
969
1021
|
return user.person?.email;
|
|
970
1022
|
} catch (error) {
|
|
971
|
-
|
|
1023
|
+
logger3.error("Failed to fetch Notion email:", error);
|
|
972
1024
|
return;
|
|
973
1025
|
}
|
|
974
1026
|
}
|
|
1027
|
+
var logger3;
|
|
1028
|
+
var init_email_fetcher = __esm(() => {
|
|
1029
|
+
init_logger();
|
|
1030
|
+
logger3 = createLogger("EmailFetcher");
|
|
1031
|
+
});
|
|
975
1032
|
|
|
976
1033
|
// src/oauth/manager.ts
|
|
977
1034
|
class OAuthManager {
|
|
@@ -1084,7 +1141,7 @@ class OAuthManager {
|
|
|
1084
1141
|
try {
|
|
1085
1142
|
await this.flowConfig.onAuthCallback(pendingAuth.provider, code, state);
|
|
1086
1143
|
} catch (error) {
|
|
1087
|
-
|
|
1144
|
+
logger4.error("Custom OAuth callback handler failed:", error);
|
|
1088
1145
|
}
|
|
1089
1146
|
}
|
|
1090
1147
|
try {
|
|
@@ -1132,20 +1189,20 @@ class OAuthManager {
|
|
|
1132
1189
|
try {
|
|
1133
1190
|
await this.removeTokenCallback(provider, email, context);
|
|
1134
1191
|
} catch (error) {
|
|
1135
|
-
|
|
1192
|
+
logger4.error(`Failed to delete token for ${provider} (${email}) from database:`, error);
|
|
1136
1193
|
}
|
|
1137
1194
|
} else if (this.setTokenCallback) {
|
|
1138
1195
|
try {
|
|
1139
1196
|
await this.setTokenCallback(provider, null, email, context);
|
|
1140
1197
|
} catch (error) {
|
|
1141
|
-
|
|
1198
|
+
logger4.error(`Failed to delete token for ${provider} (${email}) from database:`, error);
|
|
1142
1199
|
}
|
|
1143
1200
|
}
|
|
1144
1201
|
if (!this.setTokenCallback && !this.removeTokenCallback) {
|
|
1145
1202
|
try {
|
|
1146
1203
|
await this.indexedDBStorage.deleteToken(provider, email);
|
|
1147
1204
|
} catch (error) {
|
|
1148
|
-
|
|
1205
|
+
logger4.error(`Failed to delete token from IndexedDB for ${provider} (${email}):`, error);
|
|
1149
1206
|
}
|
|
1150
1207
|
}
|
|
1151
1208
|
this.providerTokens.delete(provider);
|
|
@@ -1155,13 +1212,13 @@ class OAuthManager {
|
|
|
1155
1212
|
try {
|
|
1156
1213
|
await this.removeTokenCallback(provider, undefined, context);
|
|
1157
1214
|
} catch (error) {
|
|
1158
|
-
|
|
1215
|
+
logger4.error(`Failed to delete tokens for ${provider} from database:`, error);
|
|
1159
1216
|
}
|
|
1160
1217
|
} else if (this.setTokenCallback) {
|
|
1161
1218
|
try {
|
|
1162
1219
|
await this.setTokenCallback(provider, null, undefined, context);
|
|
1163
1220
|
} catch (error) {
|
|
1164
|
-
|
|
1221
|
+
logger4.error(`Failed to delete tokens for ${provider} from database:`, error);
|
|
1165
1222
|
}
|
|
1166
1223
|
}
|
|
1167
1224
|
if (!this.setTokenCallback && !this.removeTokenCallback) {
|
|
@@ -1194,7 +1251,7 @@ class OAuthManager {
|
|
|
1194
1251
|
try {
|
|
1195
1252
|
return await this.indexedDBStorage.listAccounts(provider);
|
|
1196
1253
|
} catch (error) {
|
|
1197
|
-
|
|
1254
|
+
logger4.error(`Failed to list accounts for ${provider}:`, error);
|
|
1198
1255
|
return [];
|
|
1199
1256
|
}
|
|
1200
1257
|
}
|
|
@@ -1209,7 +1266,7 @@ class OAuthManager {
|
|
|
1209
1266
|
}
|
|
1210
1267
|
return tokenData;
|
|
1211
1268
|
} catch (error) {
|
|
1212
|
-
|
|
1269
|
+
logger4.error(`Failed to get token for ${provider} via callback:`, error);
|
|
1213
1270
|
return;
|
|
1214
1271
|
}
|
|
1215
1272
|
}
|
|
@@ -1221,7 +1278,7 @@ class OAuthManager {
|
|
|
1221
1278
|
}
|
|
1222
1279
|
return tokenData;
|
|
1223
1280
|
} catch (error) {
|
|
1224
|
-
|
|
1281
|
+
logger4.error(`Failed to get token from IndexedDB for ${provider}:`, error);
|
|
1225
1282
|
}
|
|
1226
1283
|
}
|
|
1227
1284
|
return this.providerTokens.get(provider);
|
|
@@ -1249,7 +1306,7 @@ class OAuthManager {
|
|
|
1249
1306
|
this.providerTokens.delete(provider);
|
|
1250
1307
|
if (!this.setTokenCallback && !this.removeTokenCallback && !this.skipLocalStorage) {
|
|
1251
1308
|
this.indexedDBStorage.deleteTokensByProvider(provider).catch((error) => {
|
|
1252
|
-
|
|
1309
|
+
logger4.error(`Failed to clear tokens for ${provider} from IndexedDB:`, error);
|
|
1253
1310
|
});
|
|
1254
1311
|
}
|
|
1255
1312
|
}
|
|
@@ -1269,7 +1326,7 @@ class OAuthManager {
|
|
|
1269
1326
|
} catch (localStorageError) {}
|
|
1270
1327
|
}
|
|
1271
1328
|
this.indexedDBStorage.clearAll().catch((error) => {
|
|
1272
|
-
|
|
1329
|
+
logger4.error("Failed to clear all tokens from IndexedDB:", error);
|
|
1273
1330
|
});
|
|
1274
1331
|
}
|
|
1275
1332
|
}
|
|
@@ -1287,7 +1344,7 @@ class OAuthManager {
|
|
|
1287
1344
|
}
|
|
1288
1345
|
keysToRemove.forEach((key) => window.localStorage.removeItem(key));
|
|
1289
1346
|
} catch (error) {
|
|
1290
|
-
|
|
1347
|
+
logger4.error("Failed to clear pending auths from localStorage:", error);
|
|
1291
1348
|
}
|
|
1292
1349
|
}
|
|
1293
1350
|
}
|
|
@@ -1296,7 +1353,7 @@ class OAuthManager {
|
|
|
1296
1353
|
try {
|
|
1297
1354
|
await this.setTokenCallback(provider, tokenData, email, context);
|
|
1298
1355
|
} catch (error) {
|
|
1299
|
-
|
|
1356
|
+
logger4.error(`Failed to ${tokenData === null ? "delete" : "save"} token for ${provider} via callback:`, error);
|
|
1300
1357
|
throw error;
|
|
1301
1358
|
}
|
|
1302
1359
|
return;
|
|
@@ -1337,10 +1394,10 @@ class OAuthManager {
|
|
|
1337
1394
|
const key = `integrate_token_${provider}`;
|
|
1338
1395
|
window.localStorage.setItem(key, JSON.stringify(tokenData));
|
|
1339
1396
|
} catch (localStorageError) {
|
|
1340
|
-
|
|
1397
|
+
logger4.error(`Failed to save token for ${provider} to localStorage:`, localStorageError);
|
|
1341
1398
|
}
|
|
1342
1399
|
} else {
|
|
1343
|
-
|
|
1400
|
+
logger4.error(`Failed to save token for ${provider} to IndexedDB:`, error);
|
|
1344
1401
|
}
|
|
1345
1402
|
}
|
|
1346
1403
|
} else {
|
|
@@ -1349,7 +1406,7 @@ class OAuthManager {
|
|
|
1349
1406
|
const key = `integrate_token_${provider}`;
|
|
1350
1407
|
window.localStorage.setItem(key, JSON.stringify(tokenData));
|
|
1351
1408
|
} catch (localStorageError) {
|
|
1352
|
-
|
|
1409
|
+
logger4.error(`Failed to save token for ${provider} to localStorage:`, localStorageError);
|
|
1353
1410
|
}
|
|
1354
1411
|
}
|
|
1355
1412
|
}
|
|
@@ -1359,7 +1416,7 @@ class OAuthManager {
|
|
|
1359
1416
|
try {
|
|
1360
1417
|
return await this.getTokenCallback(provider, email, context);
|
|
1361
1418
|
} catch (error) {
|
|
1362
|
-
|
|
1419
|
+
logger4.error(`Failed to load token for ${provider} via callback:`, error);
|
|
1363
1420
|
return;
|
|
1364
1421
|
}
|
|
1365
1422
|
}
|
|
@@ -1436,7 +1493,7 @@ class OAuthManager {
|
|
|
1436
1493
|
const key = `integrate_oauth_pending_${state}`;
|
|
1437
1494
|
window.localStorage.setItem(key, JSON.stringify(pendingAuth));
|
|
1438
1495
|
} catch (error) {
|
|
1439
|
-
|
|
1496
|
+
logger4.error("Failed to save pending auth to localStorage:", error);
|
|
1440
1497
|
}
|
|
1441
1498
|
}
|
|
1442
1499
|
}
|
|
@@ -1449,7 +1506,7 @@ class OAuthManager {
|
|
|
1449
1506
|
return JSON.parse(stored);
|
|
1450
1507
|
}
|
|
1451
1508
|
} catch (error) {
|
|
1452
|
-
|
|
1509
|
+
logger4.error("Failed to load pending auth from localStorage:", error);
|
|
1453
1510
|
}
|
|
1454
1511
|
}
|
|
1455
1512
|
return;
|
|
@@ -1460,7 +1517,7 @@ class OAuthManager {
|
|
|
1460
1517
|
const key = `integrate_oauth_pending_${state}`;
|
|
1461
1518
|
window.localStorage.removeItem(key);
|
|
1462
1519
|
} catch (error) {
|
|
1463
|
-
|
|
1520
|
+
logger4.error("Failed to remove pending auth from localStorage:", error);
|
|
1464
1521
|
}
|
|
1465
1522
|
}
|
|
1466
1523
|
}
|
|
@@ -1489,7 +1546,7 @@ class OAuthManager {
|
|
|
1489
1546
|
}
|
|
1490
1547
|
keysToRemove.forEach((key) => window.localStorage.removeItem(key));
|
|
1491
1548
|
} catch (error) {
|
|
1492
|
-
|
|
1549
|
+
logger4.error("Failed to cleanup expired pending auths:", error);
|
|
1493
1550
|
}
|
|
1494
1551
|
}
|
|
1495
1552
|
}
|
|
@@ -1557,7 +1614,13 @@ class OAuthManager {
|
|
|
1557
1614
|
this.windowManager.close();
|
|
1558
1615
|
}
|
|
1559
1616
|
}
|
|
1560
|
-
var
|
|
1617
|
+
var logger4;
|
|
1618
|
+
var init_manager = __esm(() => {
|
|
1619
|
+
init_window_manager();
|
|
1620
|
+
init_email_fetcher();
|
|
1621
|
+
init_logger();
|
|
1622
|
+
logger4 = createLogger("OAuth");
|
|
1623
|
+
});
|
|
1561
1624
|
|
|
1562
1625
|
// src/client.ts
|
|
1563
1626
|
class SimpleEventEmitter {
|
|
@@ -1581,7 +1644,7 @@ class SimpleEventEmitter {
|
|
|
1581
1644
|
try {
|
|
1582
1645
|
handler(payload);
|
|
1583
1646
|
} catch (error) {
|
|
1584
|
-
|
|
1647
|
+
logger5.error(`Error in event handler for ${event}:`, error);
|
|
1585
1648
|
}
|
|
1586
1649
|
});
|
|
1587
1650
|
}
|
|
@@ -1673,7 +1736,7 @@ class MCPClientBase {
|
|
|
1673
1736
|
this.authState.set(provider, { authenticated: !!tokenData });
|
|
1674
1737
|
}
|
|
1675
1738
|
} catch (error) {
|
|
1676
|
-
|
|
1739
|
+
logger5.error(`Failed to check token for ${provider}:`, error);
|
|
1677
1740
|
const currentState = this.authState.get(provider);
|
|
1678
1741
|
if (currentState && !currentState.authenticated && !currentState.lastError) {
|
|
1679
1742
|
this.authState.set(provider, { authenticated: false });
|
|
@@ -1682,7 +1745,7 @@ class MCPClientBase {
|
|
|
1682
1745
|
}
|
|
1683
1746
|
}
|
|
1684
1747
|
}).catch((error) => {
|
|
1685
|
-
|
|
1748
|
+
logger5.error("Failed to load provider tokens:", error);
|
|
1686
1749
|
});
|
|
1687
1750
|
} else {
|
|
1688
1751
|
this.oauthManager.loadAllProviderTokensSync(providers);
|
|
@@ -1845,7 +1908,7 @@ class MCPClientBase {
|
|
|
1845
1908
|
this.availableTools.set(tool.name, tool);
|
|
1846
1909
|
}
|
|
1847
1910
|
const enabledTools = response.tools.filter((tool) => this.enabledToolNames.has(tool.name));
|
|
1848
|
-
|
|
1911
|
+
logger5.debug(`Discovered ${response.tools.length} tools, ${enabledTools.length} enabled by integrations`);
|
|
1849
1912
|
}
|
|
1850
1913
|
async _callToolByName(name, args, options) {
|
|
1851
1914
|
return await this.callToolWithRetry(name, args, 0, options);
|
|
@@ -2238,12 +2301,14 @@ class MCPClientBase {
|
|
|
2238
2301
|
return success;
|
|
2239
2302
|
}
|
|
2240
2303
|
}
|
|
2241
|
-
var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp", clientCache, cleanupClients;
|
|
2304
|
+
var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp", logger5, clientCache, cleanupClients;
|
|
2242
2305
|
var init_client = __esm(() => {
|
|
2243
2306
|
init_http_session();
|
|
2244
2307
|
init_messages();
|
|
2245
2308
|
init_errors();
|
|
2309
|
+
init_logger();
|
|
2246
2310
|
init_manager();
|
|
2311
|
+
logger5 = createLogger("MCPClient");
|
|
2247
2312
|
clientCache = new Map;
|
|
2248
2313
|
cleanupClients = new Set;
|
|
2249
2314
|
});
|
|
@@ -2743,11 +2808,11 @@ class OAuthHandler {
|
|
|
2743
2808
|
try {
|
|
2744
2809
|
await this.config.removeProviderToken(request.provider, undefined, context);
|
|
2745
2810
|
} catch (error) {
|
|
2746
|
-
|
|
2811
|
+
logger6.error(`Failed to delete token for ${request.provider} from database via removeProviderToken:`, error);
|
|
2747
2812
|
}
|
|
2748
2813
|
}
|
|
2749
2814
|
} catch (error) {
|
|
2750
|
-
|
|
2815
|
+
logger6.error(`Failed to extract context for disconnect:`, error);
|
|
2751
2816
|
}
|
|
2752
2817
|
}
|
|
2753
2818
|
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
@@ -2807,7 +2872,11 @@ class OAuthHandler {
|
|
|
2807
2872
|
return jsonRpcResponse.result;
|
|
2808
2873
|
}
|
|
2809
2874
|
}
|
|
2810
|
-
var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
2875
|
+
var logger6, MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
2876
|
+
var init_base_handler = __esm(() => {
|
|
2877
|
+
init_logger();
|
|
2878
|
+
logger6 = createLogger("OAuthHandler");
|
|
2879
|
+
});
|
|
2811
2880
|
|
|
2812
2881
|
// src/adapters/nextjs.ts
|
|
2813
2882
|
function createNextOAuthHandler(config) {
|
|
@@ -2825,7 +2894,7 @@ function createNextOAuthHandler(config) {
|
|
|
2825
2894
|
}
|
|
2826
2895
|
return response;
|
|
2827
2896
|
} catch (error) {
|
|
2828
|
-
|
|
2897
|
+
logger7.error("[OAuth Authorize] Error:", error);
|
|
2829
2898
|
return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
|
|
2830
2899
|
}
|
|
2831
2900
|
},
|
|
@@ -2841,7 +2910,7 @@ function createNextOAuthHandler(config) {
|
|
|
2841
2910
|
}
|
|
2842
2911
|
return response;
|
|
2843
2912
|
} catch (error) {
|
|
2844
|
-
|
|
2913
|
+
logger7.error("[OAuth Callback] Error:", error);
|
|
2845
2914
|
return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
|
|
2846
2915
|
}
|
|
2847
2916
|
},
|
|
@@ -2863,7 +2932,7 @@ function createNextOAuthHandler(config) {
|
|
|
2863
2932
|
}
|
|
2864
2933
|
return response;
|
|
2865
2934
|
} catch (error) {
|
|
2866
|
-
|
|
2935
|
+
logger7.error("[OAuth Status] Error:", error);
|
|
2867
2936
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
2868
2937
|
}
|
|
2869
2938
|
},
|
|
@@ -2886,7 +2955,7 @@ function createNextOAuthHandler(config) {
|
|
|
2886
2955
|
}
|
|
2887
2956
|
return response;
|
|
2888
2957
|
} catch (error) {
|
|
2889
|
-
|
|
2958
|
+
logger7.error("[OAuth Disconnect] Error:", error);
|
|
2890
2959
|
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
2891
2960
|
}
|
|
2892
2961
|
},
|
|
@@ -2927,7 +2996,7 @@ function createNextOAuthHandler(config) {
|
|
|
2927
2996
|
const result = await handler.handleToolCall(body, authHeader, integrationsHeader);
|
|
2928
2997
|
return Response.json(result);
|
|
2929
2998
|
} catch (error) {
|
|
2930
|
-
|
|
2999
|
+
logger7.error("[MCP Tool Call] Error:", error);
|
|
2931
3000
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
2932
3001
|
}
|
|
2933
3002
|
},
|
|
@@ -2972,11 +3041,11 @@ function createNextOAuthHandler(config) {
|
|
|
2972
3041
|
const errorDescription = searchParams.get("error_description");
|
|
2973
3042
|
if (error) {
|
|
2974
3043
|
const errorMsg = errorDescription || error;
|
|
2975
|
-
|
|
3044
|
+
logger7.error("[OAuth Redirect] Error:", errorMsg);
|
|
2976
3045
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, req.url));
|
|
2977
3046
|
}
|
|
2978
3047
|
if (!code || !state) {
|
|
2979
|
-
|
|
3048
|
+
logger7.error("[OAuth Redirect] Missing code or state parameter");
|
|
2980
3049
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, req.url));
|
|
2981
3050
|
}
|
|
2982
3051
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -3011,7 +3080,12 @@ function createNextOAuthHandler(config) {
|
|
|
3011
3080
|
};
|
|
3012
3081
|
return handlers;
|
|
3013
3082
|
}
|
|
3014
|
-
var
|
|
3083
|
+
var logger7;
|
|
3084
|
+
var init_nextjs = __esm(() => {
|
|
3085
|
+
init_base_handler();
|
|
3086
|
+
init_logger();
|
|
3087
|
+
logger7 = createLogger("NextJSOAuth");
|
|
3088
|
+
});
|
|
3015
3089
|
|
|
3016
3090
|
// src/utils/env.ts
|
|
3017
3091
|
function getEnv(key) {
|
|
@@ -3095,15 +3169,17 @@ function githubIntegration(config = {}) {
|
|
|
3095
3169
|
tools: [...GITHUB_TOOLS],
|
|
3096
3170
|
oauth,
|
|
3097
3171
|
async onInit(_client) {
|
|
3098
|
-
|
|
3172
|
+
logger8.debug("GitHub integration initialized");
|
|
3099
3173
|
},
|
|
3100
3174
|
async onAfterConnect(_client) {
|
|
3101
|
-
|
|
3175
|
+
logger8.debug("GitHub integration connected");
|
|
3102
3176
|
}
|
|
3103
3177
|
};
|
|
3104
3178
|
}
|
|
3105
|
-
var GITHUB_TOOLS;
|
|
3179
|
+
var logger8, GITHUB_TOOLS;
|
|
3106
3180
|
var init_github = __esm(() => {
|
|
3181
|
+
init_logger();
|
|
3182
|
+
logger8 = createLogger("GitHub");
|
|
3107
3183
|
GITHUB_TOOLS = [
|
|
3108
3184
|
"github_create_issue",
|
|
3109
3185
|
"github_list_issues",
|
|
@@ -3146,15 +3222,17 @@ function gmailIntegration(config = {}) {
|
|
|
3146
3222
|
tools: [...GMAIL_TOOLS],
|
|
3147
3223
|
oauth,
|
|
3148
3224
|
async onInit(_client) {
|
|
3149
|
-
|
|
3225
|
+
logger9.debug("Gmail integration initialized");
|
|
3150
3226
|
},
|
|
3151
3227
|
async onAfterConnect(_client) {
|
|
3152
|
-
|
|
3228
|
+
logger9.debug("Gmail integration connected");
|
|
3153
3229
|
}
|
|
3154
3230
|
};
|
|
3155
3231
|
}
|
|
3156
|
-
var GMAIL_TOOLS;
|
|
3232
|
+
var logger9, GMAIL_TOOLS;
|
|
3157
3233
|
var init_gmail = __esm(() => {
|
|
3234
|
+
init_logger();
|
|
3235
|
+
logger9 = createLogger("Gmail");
|
|
3158
3236
|
GMAIL_TOOLS = [
|
|
3159
3237
|
"gmail_send_message",
|
|
3160
3238
|
"gmail_list_messages",
|
|
@@ -3183,15 +3261,17 @@ function notionIntegration(config = {}) {
|
|
|
3183
3261
|
tools: [...NOTION_TOOLS],
|
|
3184
3262
|
oauth,
|
|
3185
3263
|
async onInit(_client) {
|
|
3186
|
-
|
|
3264
|
+
logger10.debug("Notion integration initialized");
|
|
3187
3265
|
},
|
|
3188
3266
|
async onAfterConnect(_client) {
|
|
3189
|
-
|
|
3267
|
+
logger10.debug("Notion integration connected");
|
|
3190
3268
|
}
|
|
3191
3269
|
};
|
|
3192
3270
|
}
|
|
3193
|
-
var NOTION_TOOLS;
|
|
3271
|
+
var logger10, NOTION_TOOLS;
|
|
3194
3272
|
var init_notion = __esm(() => {
|
|
3273
|
+
init_logger();
|
|
3274
|
+
logger10 = createLogger("Notion");
|
|
3195
3275
|
NOTION_TOOLS = [
|
|
3196
3276
|
"notion_search",
|
|
3197
3277
|
"notion_get_page"
|
|
@@ -3215,15 +3295,17 @@ function slackIntegration(config = {}) {
|
|
|
3215
3295
|
tools: [...SLACK_TOOLS],
|
|
3216
3296
|
oauth,
|
|
3217
3297
|
async onInit(_client) {
|
|
3218
|
-
|
|
3298
|
+
logger11.debug("Slack integration initialized");
|
|
3219
3299
|
},
|
|
3220
3300
|
async onAfterConnect(_client) {
|
|
3221
|
-
|
|
3301
|
+
logger11.debug("Slack integration connected");
|
|
3222
3302
|
}
|
|
3223
3303
|
};
|
|
3224
3304
|
}
|
|
3225
|
-
var SLACK_TOOLS;
|
|
3305
|
+
var logger11, SLACK_TOOLS;
|
|
3226
3306
|
var init_slack = __esm(() => {
|
|
3307
|
+
init_logger();
|
|
3308
|
+
logger11 = createLogger("Slack");
|
|
3227
3309
|
SLACK_TOOLS = [
|
|
3228
3310
|
"slack_send_message",
|
|
3229
3311
|
"slack_list_channels",
|
|
@@ -3254,15 +3336,17 @@ function linearIntegration(config = {}) {
|
|
|
3254
3336
|
tools: [...LINEAR_TOOLS],
|
|
3255
3337
|
oauth,
|
|
3256
3338
|
async onInit(_client) {
|
|
3257
|
-
|
|
3339
|
+
logger12.debug("Linear integration initialized");
|
|
3258
3340
|
},
|
|
3259
3341
|
async onAfterConnect(_client) {
|
|
3260
|
-
|
|
3342
|
+
logger12.debug("Linear integration connected");
|
|
3261
3343
|
}
|
|
3262
3344
|
};
|
|
3263
3345
|
}
|
|
3264
|
-
var LINEAR_TOOLS;
|
|
3346
|
+
var logger12, LINEAR_TOOLS;
|
|
3265
3347
|
var init_linear = __esm(() => {
|
|
3348
|
+
init_logger();
|
|
3349
|
+
logger12 = createLogger("Linear");
|
|
3266
3350
|
LINEAR_TOOLS = [
|
|
3267
3351
|
"linear_create_issue",
|
|
3268
3352
|
"linear_list_issues",
|
|
@@ -3293,15 +3377,17 @@ function vercelIntegration(config = {}) {
|
|
|
3293
3377
|
tools: [...VERCEL_TOOLS],
|
|
3294
3378
|
oauth,
|
|
3295
3379
|
async onInit(_client) {
|
|
3296
|
-
|
|
3380
|
+
logger13.debug("Vercel integration initialized");
|
|
3297
3381
|
},
|
|
3298
3382
|
async onAfterConnect(_client) {
|
|
3299
|
-
|
|
3383
|
+
logger13.debug("Vercel integration connected");
|
|
3300
3384
|
}
|
|
3301
3385
|
};
|
|
3302
3386
|
}
|
|
3303
|
-
var VERCEL_TOOLS;
|
|
3387
|
+
var logger13, VERCEL_TOOLS;
|
|
3304
3388
|
var init_vercel = __esm(() => {
|
|
3389
|
+
init_logger();
|
|
3390
|
+
logger13 = createLogger("Vercel");
|
|
3305
3391
|
VERCEL_TOOLS = [
|
|
3306
3392
|
"vercel_list_projects",
|
|
3307
3393
|
"vercel_get_project",
|
|
@@ -3333,15 +3419,17 @@ function zendeskIntegration(config = {}) {
|
|
|
3333
3419
|
tools: [...ZENDESK_TOOLS],
|
|
3334
3420
|
oauth,
|
|
3335
3421
|
async onInit(_client) {
|
|
3336
|
-
|
|
3422
|
+
logger14.debug("Zendesk integration initialized");
|
|
3337
3423
|
},
|
|
3338
3424
|
async onAfterConnect(_client) {
|
|
3339
|
-
|
|
3425
|
+
logger14.debug("Zendesk integration connected");
|
|
3340
3426
|
}
|
|
3341
3427
|
};
|
|
3342
3428
|
}
|
|
3343
|
-
var ZENDESK_TOOLS;
|
|
3429
|
+
var logger14, ZENDESK_TOOLS;
|
|
3344
3430
|
var init_zendesk = __esm(() => {
|
|
3431
|
+
init_logger();
|
|
3432
|
+
logger14 = createLogger("Zendesk");
|
|
3345
3433
|
ZENDESK_TOOLS = [
|
|
3346
3434
|
"zendesk_list_tickets",
|
|
3347
3435
|
"zendesk_get_ticket",
|
|
@@ -3372,15 +3460,17 @@ function stripeIntegration(config = {}) {
|
|
|
3372
3460
|
tools: [...STRIPE_TOOLS],
|
|
3373
3461
|
oauth,
|
|
3374
3462
|
async onInit(_client) {
|
|
3375
|
-
|
|
3463
|
+
logger15.debug("Stripe integration initialized");
|
|
3376
3464
|
},
|
|
3377
3465
|
async onAfterConnect(_client) {
|
|
3378
|
-
|
|
3466
|
+
logger15.debug("Stripe integration connected");
|
|
3379
3467
|
}
|
|
3380
3468
|
};
|
|
3381
3469
|
}
|
|
3382
|
-
var STRIPE_TOOLS;
|
|
3470
|
+
var logger15, STRIPE_TOOLS;
|
|
3383
3471
|
var init_stripe = __esm(() => {
|
|
3472
|
+
init_logger();
|
|
3473
|
+
logger15 = createLogger("Stripe");
|
|
3384
3474
|
STRIPE_TOOLS = [
|
|
3385
3475
|
"stripe_list_customers",
|
|
3386
3476
|
"stripe_get_customer",
|
|
@@ -3411,15 +3501,17 @@ function gcalIntegration(config = {}) {
|
|
|
3411
3501
|
tools: [...GCAL_TOOLS],
|
|
3412
3502
|
oauth,
|
|
3413
3503
|
async onInit(_client) {
|
|
3414
|
-
|
|
3504
|
+
logger16.debug("Google Calendar integration initialized");
|
|
3415
3505
|
},
|
|
3416
3506
|
async onAfterConnect(_client) {
|
|
3417
|
-
|
|
3507
|
+
logger16.debug("Google Calendar integration connected");
|
|
3418
3508
|
}
|
|
3419
3509
|
};
|
|
3420
3510
|
}
|
|
3421
|
-
var GCAL_TOOLS;
|
|
3511
|
+
var logger16, GCAL_TOOLS;
|
|
3422
3512
|
var init_gcal = __esm(() => {
|
|
3513
|
+
init_logger();
|
|
3514
|
+
logger16 = createLogger("Google Calendar");
|
|
3423
3515
|
GCAL_TOOLS = [
|
|
3424
3516
|
"gcal_list_calendars",
|
|
3425
3517
|
"gcal_get_calendar",
|
|
@@ -3450,15 +3542,17 @@ function outlookIntegration(config = {}) {
|
|
|
3450
3542
|
tools: [...OUTLOOK_TOOLS],
|
|
3451
3543
|
oauth,
|
|
3452
3544
|
async onInit(_client) {
|
|
3453
|
-
|
|
3545
|
+
logger17.debug("Outlook integration initialized");
|
|
3454
3546
|
},
|
|
3455
3547
|
async onAfterConnect(_client) {
|
|
3456
|
-
|
|
3548
|
+
logger17.debug("Outlook integration connected");
|
|
3457
3549
|
}
|
|
3458
3550
|
};
|
|
3459
3551
|
}
|
|
3460
|
-
var OUTLOOK_TOOLS;
|
|
3552
|
+
var logger17, OUTLOOK_TOOLS;
|
|
3461
3553
|
var init_outlook = __esm(() => {
|
|
3554
|
+
init_logger();
|
|
3555
|
+
logger17 = createLogger("Outlook");
|
|
3462
3556
|
OUTLOOK_TOOLS = [
|
|
3463
3557
|
"outlook_list_messages",
|
|
3464
3558
|
"outlook_get_message",
|
|
@@ -3489,15 +3583,17 @@ function airtableIntegration(config = {}) {
|
|
|
3489
3583
|
tools: [...AIRTABLE_TOOLS],
|
|
3490
3584
|
oauth,
|
|
3491
3585
|
async onInit(_client) {
|
|
3492
|
-
|
|
3586
|
+
logger18.debug("Airtable integration initialized");
|
|
3493
3587
|
},
|
|
3494
3588
|
async onAfterConnect(_client) {
|
|
3495
|
-
|
|
3589
|
+
logger18.debug("Airtable integration connected");
|
|
3496
3590
|
}
|
|
3497
3591
|
};
|
|
3498
3592
|
}
|
|
3499
|
-
var AIRTABLE_TOOLS;
|
|
3593
|
+
var logger18, AIRTABLE_TOOLS;
|
|
3500
3594
|
var init_airtable = __esm(() => {
|
|
3595
|
+
init_logger();
|
|
3596
|
+
logger18 = createLogger("Airtable");
|
|
3501
3597
|
AIRTABLE_TOOLS = [
|
|
3502
3598
|
"airtable_list_bases",
|
|
3503
3599
|
"airtable_get_base",
|
|
@@ -3528,15 +3624,17 @@ function todoistIntegration(config = {}) {
|
|
|
3528
3624
|
tools: [...TODOIST_TOOLS],
|
|
3529
3625
|
oauth,
|
|
3530
3626
|
async onInit(_client) {
|
|
3531
|
-
|
|
3627
|
+
logger19.debug("Todoist integration initialized");
|
|
3532
3628
|
},
|
|
3533
3629
|
async onAfterConnect(_client) {
|
|
3534
|
-
|
|
3630
|
+
logger19.debug("Todoist integration connected");
|
|
3535
3631
|
}
|
|
3536
3632
|
};
|
|
3537
3633
|
}
|
|
3538
|
-
var TODOIST_TOOLS;
|
|
3634
|
+
var logger19, TODOIST_TOOLS;
|
|
3539
3635
|
var init_todoist = __esm(() => {
|
|
3636
|
+
init_logger();
|
|
3637
|
+
logger19 = createLogger("Todoist");
|
|
3540
3638
|
TODOIST_TOOLS = [
|
|
3541
3639
|
"todoist_list_projects",
|
|
3542
3640
|
"todoist_get_project",
|
|
@@ -3568,15 +3666,17 @@ function whatsappIntegration(config = {}) {
|
|
|
3568
3666
|
tools: [...WHATSAPP_TOOLS],
|
|
3569
3667
|
oauth,
|
|
3570
3668
|
async onInit(_client) {
|
|
3571
|
-
|
|
3669
|
+
logger20.debug("WhatsApp Business integration initialized");
|
|
3572
3670
|
},
|
|
3573
3671
|
async onAfterConnect(_client) {
|
|
3574
|
-
|
|
3672
|
+
logger20.debug("WhatsApp Business integration connected");
|
|
3575
3673
|
}
|
|
3576
3674
|
};
|
|
3577
3675
|
}
|
|
3578
|
-
var WHATSAPP_TOOLS;
|
|
3676
|
+
var logger20, WHATSAPP_TOOLS;
|
|
3579
3677
|
var init_whatsapp = __esm(() => {
|
|
3678
|
+
init_logger();
|
|
3679
|
+
logger20 = createLogger("WhatsApp");
|
|
3580
3680
|
WHATSAPP_TOOLS = [
|
|
3581
3681
|
"whatsapp_send_message",
|
|
3582
3682
|
"whatsapp_send_template",
|
|
@@ -3607,15 +3707,17 @@ function calcomIntegration(config = {}) {
|
|
|
3607
3707
|
tools: [...CALCOM_TOOLS],
|
|
3608
3708
|
oauth,
|
|
3609
3709
|
async onInit(_client) {
|
|
3610
|
-
|
|
3710
|
+
logger21.debug("Cal.com integration initialized");
|
|
3611
3711
|
},
|
|
3612
3712
|
async onAfterConnect(_client) {
|
|
3613
|
-
|
|
3713
|
+
logger21.debug("Cal.com integration connected");
|
|
3614
3714
|
}
|
|
3615
3715
|
};
|
|
3616
3716
|
}
|
|
3617
|
-
var CALCOM_TOOLS;
|
|
3717
|
+
var logger21, CALCOM_TOOLS;
|
|
3618
3718
|
var init_calcom = __esm(() => {
|
|
3719
|
+
init_logger();
|
|
3720
|
+
logger21 = createLogger("Cal.com");
|
|
3619
3721
|
CALCOM_TOOLS = [
|
|
3620
3722
|
"calcom_list_bookings",
|
|
3621
3723
|
"calcom_get_booking",
|
|
@@ -3647,15 +3749,17 @@ function rampIntegration(config = {}) {
|
|
|
3647
3749
|
tools: [...RAMP_TOOLS],
|
|
3648
3750
|
oauth,
|
|
3649
3751
|
async onInit(_client) {
|
|
3650
|
-
|
|
3752
|
+
logger22.debug("Ramp integration initialized");
|
|
3651
3753
|
},
|
|
3652
3754
|
async onAfterConnect(_client) {
|
|
3653
|
-
|
|
3755
|
+
logger22.debug("Ramp integration connected");
|
|
3654
3756
|
}
|
|
3655
3757
|
};
|
|
3656
3758
|
}
|
|
3657
|
-
var RAMP_TOOLS;
|
|
3759
|
+
var logger22, RAMP_TOOLS;
|
|
3658
3760
|
var init_ramp = __esm(() => {
|
|
3761
|
+
init_logger();
|
|
3762
|
+
logger22 = createLogger("Ramp");
|
|
3659
3763
|
RAMP_TOOLS = [
|
|
3660
3764
|
"ramp_list_transactions",
|
|
3661
3765
|
"ramp_get_transaction",
|
|
@@ -3686,15 +3790,17 @@ function onedriveIntegration(config = {}) {
|
|
|
3686
3790
|
tools: [...ONEDRIVE_TOOLS],
|
|
3687
3791
|
oauth,
|
|
3688
3792
|
async onInit(_client) {
|
|
3689
|
-
|
|
3793
|
+
logger23.debug("OneDrive integration initialized");
|
|
3690
3794
|
},
|
|
3691
3795
|
async onAfterConnect(_client) {
|
|
3692
|
-
|
|
3796
|
+
logger23.debug("OneDrive integration connected");
|
|
3693
3797
|
}
|
|
3694
3798
|
};
|
|
3695
3799
|
}
|
|
3696
|
-
var ONEDRIVE_TOOLS;
|
|
3800
|
+
var logger23, ONEDRIVE_TOOLS;
|
|
3697
3801
|
var init_onedrive = __esm(() => {
|
|
3802
|
+
init_logger();
|
|
3803
|
+
logger23 = createLogger("OneDrive");
|
|
3698
3804
|
ONEDRIVE_TOOLS = [
|
|
3699
3805
|
"onedrive_list_files",
|
|
3700
3806
|
"onedrive_get_file",
|
|
@@ -3733,15 +3839,17 @@ function gworkspaceIntegration(config = {}) {
|
|
|
3733
3839
|
tools: [...GWORKSPACE_TOOLS],
|
|
3734
3840
|
oauth,
|
|
3735
3841
|
async onInit(_client) {
|
|
3736
|
-
|
|
3842
|
+
logger24.debug("Google Workspace integration initialized");
|
|
3737
3843
|
},
|
|
3738
3844
|
async onAfterConnect(_client) {
|
|
3739
|
-
|
|
3845
|
+
logger24.debug("Google Workspace integration connected");
|
|
3740
3846
|
}
|
|
3741
3847
|
};
|
|
3742
3848
|
}
|
|
3743
|
-
var GWORKSPACE_TOOLS;
|
|
3849
|
+
var logger24, GWORKSPACE_TOOLS;
|
|
3744
3850
|
var init_gworkspace = __esm(() => {
|
|
3851
|
+
init_logger();
|
|
3852
|
+
logger24 = createLogger("Google Workspace");
|
|
3745
3853
|
GWORKSPACE_TOOLS = [
|
|
3746
3854
|
"gworkspace_sheets_list",
|
|
3747
3855
|
"gworkspace_sheets_get",
|
|
@@ -3776,15 +3884,17 @@ function polarIntegration(config = {}) {
|
|
|
3776
3884
|
tools: [...POLAR_TOOLS],
|
|
3777
3885
|
oauth,
|
|
3778
3886
|
async onInit(_client) {
|
|
3779
|
-
|
|
3887
|
+
logger25.debug("Polar integration initialized");
|
|
3780
3888
|
},
|
|
3781
3889
|
async onAfterConnect(_client) {
|
|
3782
|
-
|
|
3890
|
+
logger25.debug("Polar integration connected");
|
|
3783
3891
|
}
|
|
3784
3892
|
};
|
|
3785
3893
|
}
|
|
3786
|
-
var POLAR_TOOLS;
|
|
3894
|
+
var logger25, POLAR_TOOLS;
|
|
3787
3895
|
var init_polar = __esm(() => {
|
|
3896
|
+
init_logger();
|
|
3897
|
+
logger25 = createLogger("Polar");
|
|
3788
3898
|
POLAR_TOOLS = [
|
|
3789
3899
|
"polar_list_products",
|
|
3790
3900
|
"polar_get_product",
|
|
@@ -3815,15 +3925,17 @@ function figmaIntegration(config = {}) {
|
|
|
3815
3925
|
tools: [...FIGMA_TOOLS],
|
|
3816
3926
|
oauth,
|
|
3817
3927
|
async onInit(_client) {
|
|
3818
|
-
|
|
3928
|
+
logger26.debug("Figma integration initialized");
|
|
3819
3929
|
},
|
|
3820
3930
|
async onAfterConnect(_client) {
|
|
3821
|
-
|
|
3931
|
+
logger26.debug("Figma integration connected");
|
|
3822
3932
|
}
|
|
3823
3933
|
};
|
|
3824
3934
|
}
|
|
3825
|
-
var FIGMA_TOOLS;
|
|
3935
|
+
var logger26, FIGMA_TOOLS;
|
|
3826
3936
|
var init_figma = __esm(() => {
|
|
3937
|
+
init_logger();
|
|
3938
|
+
logger26 = createLogger("Figma");
|
|
3827
3939
|
FIGMA_TOOLS = [
|
|
3828
3940
|
"figma_get_file",
|
|
3829
3941
|
"figma_get_file_nodes",
|
|
@@ -3854,15 +3966,17 @@ function intercomIntegration(config = {}) {
|
|
|
3854
3966
|
tools: [...INTERCOM_TOOLS],
|
|
3855
3967
|
oauth,
|
|
3856
3968
|
async onInit(_client) {
|
|
3857
|
-
|
|
3969
|
+
logger27.debug("Intercom integration initialized");
|
|
3858
3970
|
},
|
|
3859
3971
|
async onAfterConnect(_client) {
|
|
3860
|
-
|
|
3972
|
+
logger27.debug("Intercom integration connected");
|
|
3861
3973
|
}
|
|
3862
3974
|
};
|
|
3863
3975
|
}
|
|
3864
|
-
var INTERCOM_TOOLS;
|
|
3976
|
+
var logger27, INTERCOM_TOOLS;
|
|
3865
3977
|
var init_intercom = __esm(() => {
|
|
3978
|
+
init_logger();
|
|
3979
|
+
logger27 = createLogger("Intercom");
|
|
3866
3980
|
INTERCOM_TOOLS = [
|
|
3867
3981
|
"intercom_list_contacts",
|
|
3868
3982
|
"intercom_get_contact",
|
|
@@ -3901,15 +4015,17 @@ function hubspotIntegration(config = {}) {
|
|
|
3901
4015
|
tools: [...HUBSPOT_TOOLS],
|
|
3902
4016
|
oauth,
|
|
3903
4017
|
async onInit(_client) {
|
|
3904
|
-
|
|
4018
|
+
logger28.debug("HubSpot integration initialized");
|
|
3905
4019
|
},
|
|
3906
4020
|
async onAfterConnect(_client) {
|
|
3907
|
-
|
|
4021
|
+
logger28.debug("HubSpot integration connected");
|
|
3908
4022
|
}
|
|
3909
4023
|
};
|
|
3910
4024
|
}
|
|
3911
|
-
var HUBSPOT_TOOLS;
|
|
4025
|
+
var logger28, HUBSPOT_TOOLS;
|
|
3912
4026
|
var init_hubspot = __esm(() => {
|
|
4027
|
+
init_logger();
|
|
4028
|
+
logger28 = createLogger("HubSpot");
|
|
3913
4029
|
HUBSPOT_TOOLS = [
|
|
3914
4030
|
"hubspot_list_contacts",
|
|
3915
4031
|
"hubspot_get_contact",
|
|
@@ -3943,15 +4059,17 @@ function youtubeIntegration(config = {}) {
|
|
|
3943
4059
|
tools: [...YOUTUBE_TOOLS],
|
|
3944
4060
|
oauth,
|
|
3945
4061
|
async onInit(_client) {
|
|
3946
|
-
|
|
4062
|
+
logger29.debug("YouTube integration initialized");
|
|
3947
4063
|
},
|
|
3948
4064
|
async onAfterConnect(_client) {
|
|
3949
|
-
|
|
4065
|
+
logger29.debug("YouTube integration connected");
|
|
3950
4066
|
}
|
|
3951
4067
|
};
|
|
3952
4068
|
}
|
|
3953
|
-
var YOUTUBE_TOOLS;
|
|
4069
|
+
var logger29, YOUTUBE_TOOLS;
|
|
3954
4070
|
var init_youtube = __esm(() => {
|
|
4071
|
+
init_logger();
|
|
4072
|
+
logger29 = createLogger("YouTube");
|
|
3955
4073
|
YOUTUBE_TOOLS = [
|
|
3956
4074
|
"youtube_search",
|
|
3957
4075
|
"youtube_get_video",
|
|
@@ -3971,15 +4089,17 @@ function cursorIntegration(_config = {}) {
|
|
|
3971
4089
|
id: "cursor",
|
|
3972
4090
|
tools: [...CURSOR_TOOLS],
|
|
3973
4091
|
async onInit(_client) {
|
|
3974
|
-
|
|
4092
|
+
logger30.debug("Cursor integration initialized");
|
|
3975
4093
|
},
|
|
3976
4094
|
async onAfterConnect(_client) {
|
|
3977
|
-
|
|
4095
|
+
logger30.debug("Cursor integration connected");
|
|
3978
4096
|
}
|
|
3979
4097
|
};
|
|
3980
4098
|
}
|
|
3981
|
-
var CURSOR_TOOLS;
|
|
4099
|
+
var logger30, CURSOR_TOOLS;
|
|
3982
4100
|
var init_cursor = __esm(() => {
|
|
4101
|
+
init_logger();
|
|
4102
|
+
logger30 = createLogger("Cursor");
|
|
3983
4103
|
CURSOR_TOOLS = [
|
|
3984
4104
|
"cursor_list_agents",
|
|
3985
4105
|
"cursor_get_agent",
|
|
@@ -9827,6 +9947,7 @@ var init_zodToJsonSchema = __esm(() => {
|
|
|
9827
9947
|
|
|
9828
9948
|
// node_modules/zod-to-json-schema/dist/esm/index.js
|
|
9829
9949
|
var init_esm = __esm(() => {
|
|
9950
|
+
init_zodToJsonSchema();
|
|
9830
9951
|
init_Options();
|
|
9831
9952
|
init_Refs();
|
|
9832
9953
|
init_parseDef();
|
|
@@ -9858,7 +9979,6 @@ var init_esm = __esm(() => {
|
|
|
9858
9979
|
init_unknown();
|
|
9859
9980
|
init_selectParser();
|
|
9860
9981
|
init_zodToJsonSchema();
|
|
9861
|
-
init_zodToJsonSchema();
|
|
9862
9982
|
});
|
|
9863
9983
|
|
|
9864
9984
|
// src/ai/openai.ts
|
|
@@ -10343,6 +10463,7 @@ function getDefaultRedirectUri() {
|
|
|
10343
10463
|
return "http://localhost:3000/api/integrate/oauth/callback";
|
|
10344
10464
|
}
|
|
10345
10465
|
function createMCPServer(config) {
|
|
10466
|
+
setLogLevel(config.debug ? "debug" : "error");
|
|
10346
10467
|
if (typeof window !== "undefined") {
|
|
10347
10468
|
throw new Error("createMCPServer() should only be called on the server-side. " + "Use createMCPClient() for client-side code.");
|
|
10348
10469
|
}
|
|
@@ -10351,7 +10472,7 @@ function createMCPServer(config) {
|
|
|
10351
10472
|
if (integration.oauth) {
|
|
10352
10473
|
const { clientId, clientSecret, redirectUri: integrationRedirectUri, config: oauthConfig } = integration.oauth;
|
|
10353
10474
|
if (!clientId || !clientSecret) {
|
|
10354
|
-
|
|
10475
|
+
logger31.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
|
|
10355
10476
|
return integration;
|
|
10356
10477
|
}
|
|
10357
10478
|
const redirectUri = integrationRedirectUri || config.redirectUri || getDefaultRedirectUri();
|
|
@@ -10464,7 +10585,7 @@ function createMCPServer(config) {
|
|
|
10464
10585
|
const body = await webRequest.json();
|
|
10465
10586
|
const authHeader = webRequest.headers.get("authorization");
|
|
10466
10587
|
const integrationsHeader = webRequest.headers.get("x-integrations");
|
|
10467
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10588
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
10468
10589
|
const oauthHandler = new OAuthHandler2({
|
|
10469
10590
|
providers,
|
|
10470
10591
|
serverUrl: config.serverUrl,
|
|
@@ -10480,7 +10601,7 @@ function createMCPServer(config) {
|
|
|
10480
10601
|
}
|
|
10481
10602
|
return response2;
|
|
10482
10603
|
} catch (error) {
|
|
10483
|
-
|
|
10604
|
+
logger31.error("[MCP Tool Call] Error:", error);
|
|
10484
10605
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
10485
10606
|
}
|
|
10486
10607
|
}
|
|
@@ -10544,7 +10665,7 @@ function createMCPServer(config) {
|
|
|
10544
10665
|
})
|
|
10545
10666
|
});
|
|
10546
10667
|
} catch (scheduleError) {
|
|
10547
|
-
|
|
10668
|
+
logger31.error("[Trigger] Failed to register with scheduler:", scheduleError);
|
|
10548
10669
|
}
|
|
10549
10670
|
return Response.json(created, { status: 201 });
|
|
10550
10671
|
}
|
|
@@ -10579,7 +10700,7 @@ function createMCPServer(config) {
|
|
|
10579
10700
|
body: JSON.stringify({ triggerId })
|
|
10580
10701
|
});
|
|
10581
10702
|
} catch (error) {
|
|
10582
|
-
|
|
10703
|
+
logger31.error("[Trigger] Failed to pause in scheduler:", error);
|
|
10583
10704
|
}
|
|
10584
10705
|
return Response.json(updated);
|
|
10585
10706
|
} else if (subAction === "resume" && method === "POST") {
|
|
@@ -10607,7 +10728,7 @@ function createMCPServer(config) {
|
|
|
10607
10728
|
body: JSON.stringify({ triggerId })
|
|
10608
10729
|
});
|
|
10609
10730
|
} catch (error) {
|
|
10610
|
-
|
|
10731
|
+
logger31.error("[Trigger] Failed to resume in scheduler:", error);
|
|
10611
10732
|
}
|
|
10612
10733
|
return Response.json(updated);
|
|
10613
10734
|
} else if (subAction === "run" && method === "POST") {
|
|
@@ -10622,7 +10743,7 @@ function createMCPServer(config) {
|
|
|
10622
10743
|
if (!providerToken) {
|
|
10623
10744
|
return Response.json({ error: "No OAuth token available for this trigger" }, { status: 401 });
|
|
10624
10745
|
}
|
|
10625
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10746
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
10626
10747
|
const oauthHandler = new OAuthHandler2({
|
|
10627
10748
|
providers,
|
|
10628
10749
|
serverUrl: config.serverUrl,
|
|
@@ -10748,7 +10869,7 @@ function createMCPServer(config) {
|
|
|
10748
10869
|
})
|
|
10749
10870
|
});
|
|
10750
10871
|
} catch (error) {
|
|
10751
|
-
|
|
10872
|
+
logger31.error("[Trigger] Failed to update scheduler:", error);
|
|
10752
10873
|
}
|
|
10753
10874
|
}
|
|
10754
10875
|
return Response.json(updated);
|
|
@@ -10765,14 +10886,14 @@ function createMCPServer(config) {
|
|
|
10765
10886
|
body: JSON.stringify({ triggerId })
|
|
10766
10887
|
});
|
|
10767
10888
|
} catch (error) {
|
|
10768
|
-
|
|
10889
|
+
logger31.error("[Trigger] Failed to unregister from scheduler:", error);
|
|
10769
10890
|
}
|
|
10770
10891
|
return new Response(null, { status: 204 });
|
|
10771
10892
|
}
|
|
10772
10893
|
}
|
|
10773
10894
|
return Response.json({ error: "Invalid trigger route or method" }, { status: 404 });
|
|
10774
10895
|
} catch (error) {
|
|
10775
|
-
|
|
10896
|
+
logger31.error("[Trigger] Error:", error);
|
|
10776
10897
|
return Response.json({ error: error.message || "Failed to process trigger request" }, { status: error.statusCode || 500 });
|
|
10777
10898
|
}
|
|
10778
10899
|
}
|
|
@@ -10798,11 +10919,11 @@ function createMCPServer(config) {
|
|
|
10798
10919
|
const errorRedirectUrl = "/auth-error";
|
|
10799
10920
|
if (error) {
|
|
10800
10921
|
const errorMsg = errorDescription || error;
|
|
10801
|
-
|
|
10922
|
+
logger31.error("[OAuth Redirect] Error:", errorMsg);
|
|
10802
10923
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
|
|
10803
10924
|
}
|
|
10804
10925
|
if (!code || !state) {
|
|
10805
|
-
|
|
10926
|
+
logger31.error("[OAuth Redirect] Missing code or state parameter");
|
|
10806
10927
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
|
|
10807
10928
|
}
|
|
10808
10929
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -10834,7 +10955,7 @@ function createMCPServer(config) {
|
|
|
10834
10955
|
if (codeVerifierEntry) {
|
|
10835
10956
|
try {
|
|
10836
10957
|
const { codeVerifier, provider, frontendOrigin: storedFrontendOrigin } = codeVerifierEntry;
|
|
10837
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10958
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
10838
10959
|
const oauthHandler = new OAuthHandler2({
|
|
10839
10960
|
providers,
|
|
10840
10961
|
serverUrl: config.serverUrl,
|
|
@@ -10878,7 +10999,7 @@ function createMCPServer(config) {
|
|
|
10878
10999
|
frontendUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state, tokenData }))}`;
|
|
10879
11000
|
return Response.redirect(frontendUrl);
|
|
10880
11001
|
} catch (error2) {
|
|
10881
|
-
|
|
11002
|
+
logger31.error("[OAuth Backend Callback] Error:", error2);
|
|
10882
11003
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
|
|
10883
11004
|
}
|
|
10884
11005
|
} else {
|
|
@@ -11097,7 +11218,7 @@ function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
|
11097
11218
|
}
|
|
11098
11219
|
};
|
|
11099
11220
|
}
|
|
11100
|
-
var globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
11221
|
+
var logger31, globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
11101
11222
|
if (!globalServerConfig) {
|
|
11102
11223
|
return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
|
|
11103
11224
|
}
|
|
@@ -11115,6 +11236,7 @@ var globalServerConfig = null, codeVerifierStorage, POST = async (req, context)
|
|
|
11115
11236
|
var init_server = __esm(() => {
|
|
11116
11237
|
init_client();
|
|
11117
11238
|
init_nextjs();
|
|
11239
|
+
init_logger();
|
|
11118
11240
|
init_github();
|
|
11119
11241
|
init_gmail();
|
|
11120
11242
|
init_notion();
|
|
@@ -11144,6 +11266,7 @@ var init_server = __esm(() => {
|
|
|
11144
11266
|
init_anthropic();
|
|
11145
11267
|
init_google();
|
|
11146
11268
|
init_ai();
|
|
11269
|
+
logger31 = createLogger("MCPServer");
|
|
11147
11270
|
codeVerifierStorage = new Map;
|
|
11148
11271
|
});
|
|
11149
11272
|
|
|
@@ -11181,6 +11304,10 @@ function toTanStackStartHandler(handler) {
|
|
|
11181
11304
|
};
|
|
11182
11305
|
}
|
|
11183
11306
|
var createTanStackOAuthHandler = toTanStackStartHandler;
|
|
11307
|
+
|
|
11308
|
+
// src/adapters/index.ts
|
|
11309
|
+
init_base_handler();
|
|
11310
|
+
|
|
11184
11311
|
// server.ts
|
|
11185
11312
|
init_ai();
|
|
11186
11313
|
export {
|