integrate-sdk 0.8.42-dev.0 → 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 +264 -138
- package/dist/adapters/base-handler.d.ts.map +1 -1
- package/dist/adapters/index.js +260 -136
- 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 +259 -136
- package/dist/adapters/node.js +259 -136
- package/dist/adapters/svelte-kit.js +259 -136
- package/dist/adapters/tanstack-start.js +259 -136
- package/dist/index.js +274 -146
- package/dist/oauth.js +264 -138
- package/dist/react.js +59 -14
- package/dist/server.js +263 -136
- 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 +1 -1
package/dist/oauth.js
CHANGED
|
@@ -10,6 +10,49 @@ var __export = (target, all) => {
|
|
|
10
10
|
};
|
|
11
11
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
12
12
|
|
|
13
|
+
// src/utils/logger.ts
|
|
14
|
+
function shouldLog(level) {
|
|
15
|
+
return logLevelHierarchy[level] <= logLevelHierarchy[globalLogLevel];
|
|
16
|
+
}
|
|
17
|
+
function setLogLevel(level) {
|
|
18
|
+
globalLogLevel = level;
|
|
19
|
+
}
|
|
20
|
+
function createLogger(namespace) {
|
|
21
|
+
const prefix = `[${namespace}]`;
|
|
22
|
+
return {
|
|
23
|
+
debug: (...args) => {
|
|
24
|
+
if (shouldLog("debug")) {
|
|
25
|
+
console.log(prefix, ...args);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
info: (...args) => {
|
|
29
|
+
if (shouldLog("info")) {
|
|
30
|
+
console.log(prefix, ...args);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
warn: (...args) => {
|
|
34
|
+
if (shouldLog("warn")) {
|
|
35
|
+
console.warn(prefix, ...args);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
error: (...args) => {
|
|
39
|
+
if (shouldLog("error")) {
|
|
40
|
+
console.error(prefix, ...args);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
var globalLogLevel = "error", logLevelHierarchy;
|
|
46
|
+
var init_logger = __esm(() => {
|
|
47
|
+
logLevelHierarchy = {
|
|
48
|
+
none: 0,
|
|
49
|
+
error: 1,
|
|
50
|
+
warn: 2,
|
|
51
|
+
info: 3,
|
|
52
|
+
debug: 4
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
|
|
13
56
|
// src/protocol/jsonrpc.ts
|
|
14
57
|
function parseMessage(message) {
|
|
15
58
|
try {
|
|
@@ -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
|
});
|
|
@@ -2264,7 +2329,7 @@ function createNextOAuthHandler(config) {
|
|
|
2264
2329
|
}
|
|
2265
2330
|
return response;
|
|
2266
2331
|
} catch (error) {
|
|
2267
|
-
|
|
2332
|
+
logger6.error("[OAuth Authorize] Error:", error);
|
|
2268
2333
|
return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
|
|
2269
2334
|
}
|
|
2270
2335
|
},
|
|
@@ -2280,7 +2345,7 @@ function createNextOAuthHandler(config) {
|
|
|
2280
2345
|
}
|
|
2281
2346
|
return response;
|
|
2282
2347
|
} catch (error) {
|
|
2283
|
-
|
|
2348
|
+
logger6.error("[OAuth Callback] Error:", error);
|
|
2284
2349
|
return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
|
|
2285
2350
|
}
|
|
2286
2351
|
},
|
|
@@ -2302,7 +2367,7 @@ function createNextOAuthHandler(config) {
|
|
|
2302
2367
|
}
|
|
2303
2368
|
return response;
|
|
2304
2369
|
} catch (error) {
|
|
2305
|
-
|
|
2370
|
+
logger6.error("[OAuth Status] Error:", error);
|
|
2306
2371
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
2307
2372
|
}
|
|
2308
2373
|
},
|
|
@@ -2325,7 +2390,7 @@ function createNextOAuthHandler(config) {
|
|
|
2325
2390
|
}
|
|
2326
2391
|
return response;
|
|
2327
2392
|
} catch (error) {
|
|
2328
|
-
|
|
2393
|
+
logger6.error("[OAuth Disconnect] Error:", error);
|
|
2329
2394
|
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
2330
2395
|
}
|
|
2331
2396
|
},
|
|
@@ -2366,7 +2431,7 @@ function createNextOAuthHandler(config) {
|
|
|
2366
2431
|
const result = await handler.handleToolCall(body, authHeader, integrationsHeader);
|
|
2367
2432
|
return Response.json(result);
|
|
2368
2433
|
} catch (error) {
|
|
2369
|
-
|
|
2434
|
+
logger6.error("[MCP Tool Call] Error:", error);
|
|
2370
2435
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
2371
2436
|
}
|
|
2372
2437
|
},
|
|
@@ -2411,11 +2476,11 @@ function createNextOAuthHandler(config) {
|
|
|
2411
2476
|
const errorDescription = searchParams.get("error_description");
|
|
2412
2477
|
if (error) {
|
|
2413
2478
|
const errorMsg = errorDescription || error;
|
|
2414
|
-
|
|
2479
|
+
logger6.error("[OAuth Redirect] Error:", errorMsg);
|
|
2415
2480
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, req.url));
|
|
2416
2481
|
}
|
|
2417
2482
|
if (!code || !state) {
|
|
2418
|
-
|
|
2483
|
+
logger6.error("[OAuth Redirect] Missing code or state parameter");
|
|
2419
2484
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, req.url));
|
|
2420
2485
|
}
|
|
2421
2486
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -2450,7 +2515,12 @@ function createNextOAuthHandler(config) {
|
|
|
2450
2515
|
};
|
|
2451
2516
|
return handlers;
|
|
2452
2517
|
}
|
|
2453
|
-
var
|
|
2518
|
+
var logger6;
|
|
2519
|
+
var init_nextjs = __esm(() => {
|
|
2520
|
+
init_base_handler();
|
|
2521
|
+
init_logger();
|
|
2522
|
+
logger6 = createLogger("NextJSOAuth");
|
|
2523
|
+
});
|
|
2454
2524
|
|
|
2455
2525
|
// src/utils/env.ts
|
|
2456
2526
|
function getEnv(key) {
|
|
@@ -2534,15 +2604,17 @@ function githubIntegration(config = {}) {
|
|
|
2534
2604
|
tools: [...GITHUB_TOOLS],
|
|
2535
2605
|
oauth,
|
|
2536
2606
|
async onInit(_client) {
|
|
2537
|
-
|
|
2607
|
+
logger7.debug("GitHub integration initialized");
|
|
2538
2608
|
},
|
|
2539
2609
|
async onAfterConnect(_client) {
|
|
2540
|
-
|
|
2610
|
+
logger7.debug("GitHub integration connected");
|
|
2541
2611
|
}
|
|
2542
2612
|
};
|
|
2543
2613
|
}
|
|
2544
|
-
var GITHUB_TOOLS;
|
|
2614
|
+
var logger7, GITHUB_TOOLS;
|
|
2545
2615
|
var init_github = __esm(() => {
|
|
2616
|
+
init_logger();
|
|
2617
|
+
logger7 = createLogger("GitHub");
|
|
2546
2618
|
GITHUB_TOOLS = [
|
|
2547
2619
|
"github_create_issue",
|
|
2548
2620
|
"github_list_issues",
|
|
@@ -2585,15 +2657,17 @@ function gmailIntegration(config = {}) {
|
|
|
2585
2657
|
tools: [...GMAIL_TOOLS],
|
|
2586
2658
|
oauth,
|
|
2587
2659
|
async onInit(_client) {
|
|
2588
|
-
|
|
2660
|
+
logger8.debug("Gmail integration initialized");
|
|
2589
2661
|
},
|
|
2590
2662
|
async onAfterConnect(_client) {
|
|
2591
|
-
|
|
2663
|
+
logger8.debug("Gmail integration connected");
|
|
2592
2664
|
}
|
|
2593
2665
|
};
|
|
2594
2666
|
}
|
|
2595
|
-
var GMAIL_TOOLS;
|
|
2667
|
+
var logger8, GMAIL_TOOLS;
|
|
2596
2668
|
var init_gmail = __esm(() => {
|
|
2669
|
+
init_logger();
|
|
2670
|
+
logger8 = createLogger("Gmail");
|
|
2597
2671
|
GMAIL_TOOLS = [
|
|
2598
2672
|
"gmail_send_message",
|
|
2599
2673
|
"gmail_list_messages",
|
|
@@ -2622,15 +2696,17 @@ function notionIntegration(config = {}) {
|
|
|
2622
2696
|
tools: [...NOTION_TOOLS],
|
|
2623
2697
|
oauth,
|
|
2624
2698
|
async onInit(_client) {
|
|
2625
|
-
|
|
2699
|
+
logger9.debug("Notion integration initialized");
|
|
2626
2700
|
},
|
|
2627
2701
|
async onAfterConnect(_client) {
|
|
2628
|
-
|
|
2702
|
+
logger9.debug("Notion integration connected");
|
|
2629
2703
|
}
|
|
2630
2704
|
};
|
|
2631
2705
|
}
|
|
2632
|
-
var NOTION_TOOLS;
|
|
2706
|
+
var logger9, NOTION_TOOLS;
|
|
2633
2707
|
var init_notion = __esm(() => {
|
|
2708
|
+
init_logger();
|
|
2709
|
+
logger9 = createLogger("Notion");
|
|
2634
2710
|
NOTION_TOOLS = [
|
|
2635
2711
|
"notion_search",
|
|
2636
2712
|
"notion_get_page"
|
|
@@ -2654,15 +2730,17 @@ function slackIntegration(config = {}) {
|
|
|
2654
2730
|
tools: [...SLACK_TOOLS],
|
|
2655
2731
|
oauth,
|
|
2656
2732
|
async onInit(_client) {
|
|
2657
|
-
|
|
2733
|
+
logger10.debug("Slack integration initialized");
|
|
2658
2734
|
},
|
|
2659
2735
|
async onAfterConnect(_client) {
|
|
2660
|
-
|
|
2736
|
+
logger10.debug("Slack integration connected");
|
|
2661
2737
|
}
|
|
2662
2738
|
};
|
|
2663
2739
|
}
|
|
2664
|
-
var SLACK_TOOLS;
|
|
2740
|
+
var logger10, SLACK_TOOLS;
|
|
2665
2741
|
var init_slack = __esm(() => {
|
|
2742
|
+
init_logger();
|
|
2743
|
+
logger10 = createLogger("Slack");
|
|
2666
2744
|
SLACK_TOOLS = [
|
|
2667
2745
|
"slack_send_message",
|
|
2668
2746
|
"slack_list_channels",
|
|
@@ -2693,15 +2771,17 @@ function linearIntegration(config = {}) {
|
|
|
2693
2771
|
tools: [...LINEAR_TOOLS],
|
|
2694
2772
|
oauth,
|
|
2695
2773
|
async onInit(_client) {
|
|
2696
|
-
|
|
2774
|
+
logger11.debug("Linear integration initialized");
|
|
2697
2775
|
},
|
|
2698
2776
|
async onAfterConnect(_client) {
|
|
2699
|
-
|
|
2777
|
+
logger11.debug("Linear integration connected");
|
|
2700
2778
|
}
|
|
2701
2779
|
};
|
|
2702
2780
|
}
|
|
2703
|
-
var LINEAR_TOOLS;
|
|
2781
|
+
var logger11, LINEAR_TOOLS;
|
|
2704
2782
|
var init_linear = __esm(() => {
|
|
2783
|
+
init_logger();
|
|
2784
|
+
logger11 = createLogger("Linear");
|
|
2705
2785
|
LINEAR_TOOLS = [
|
|
2706
2786
|
"linear_create_issue",
|
|
2707
2787
|
"linear_list_issues",
|
|
@@ -2732,15 +2812,17 @@ function vercelIntegration(config = {}) {
|
|
|
2732
2812
|
tools: [...VERCEL_TOOLS],
|
|
2733
2813
|
oauth,
|
|
2734
2814
|
async onInit(_client) {
|
|
2735
|
-
|
|
2815
|
+
logger12.debug("Vercel integration initialized");
|
|
2736
2816
|
},
|
|
2737
2817
|
async onAfterConnect(_client) {
|
|
2738
|
-
|
|
2818
|
+
logger12.debug("Vercel integration connected");
|
|
2739
2819
|
}
|
|
2740
2820
|
};
|
|
2741
2821
|
}
|
|
2742
|
-
var VERCEL_TOOLS;
|
|
2822
|
+
var logger12, VERCEL_TOOLS;
|
|
2743
2823
|
var init_vercel = __esm(() => {
|
|
2824
|
+
init_logger();
|
|
2825
|
+
logger12 = createLogger("Vercel");
|
|
2744
2826
|
VERCEL_TOOLS = [
|
|
2745
2827
|
"vercel_list_projects",
|
|
2746
2828
|
"vercel_get_project",
|
|
@@ -2772,15 +2854,17 @@ function zendeskIntegration(config = {}) {
|
|
|
2772
2854
|
tools: [...ZENDESK_TOOLS],
|
|
2773
2855
|
oauth,
|
|
2774
2856
|
async onInit(_client) {
|
|
2775
|
-
|
|
2857
|
+
logger13.debug("Zendesk integration initialized");
|
|
2776
2858
|
},
|
|
2777
2859
|
async onAfterConnect(_client) {
|
|
2778
|
-
|
|
2860
|
+
logger13.debug("Zendesk integration connected");
|
|
2779
2861
|
}
|
|
2780
2862
|
};
|
|
2781
2863
|
}
|
|
2782
|
-
var ZENDESK_TOOLS;
|
|
2864
|
+
var logger13, ZENDESK_TOOLS;
|
|
2783
2865
|
var init_zendesk = __esm(() => {
|
|
2866
|
+
init_logger();
|
|
2867
|
+
logger13 = createLogger("Zendesk");
|
|
2784
2868
|
ZENDESK_TOOLS = [
|
|
2785
2869
|
"zendesk_list_tickets",
|
|
2786
2870
|
"zendesk_get_ticket",
|
|
@@ -2811,15 +2895,17 @@ function stripeIntegration(config = {}) {
|
|
|
2811
2895
|
tools: [...STRIPE_TOOLS],
|
|
2812
2896
|
oauth,
|
|
2813
2897
|
async onInit(_client) {
|
|
2814
|
-
|
|
2898
|
+
logger14.debug("Stripe integration initialized");
|
|
2815
2899
|
},
|
|
2816
2900
|
async onAfterConnect(_client) {
|
|
2817
|
-
|
|
2901
|
+
logger14.debug("Stripe integration connected");
|
|
2818
2902
|
}
|
|
2819
2903
|
};
|
|
2820
2904
|
}
|
|
2821
|
-
var STRIPE_TOOLS;
|
|
2905
|
+
var logger14, STRIPE_TOOLS;
|
|
2822
2906
|
var init_stripe = __esm(() => {
|
|
2907
|
+
init_logger();
|
|
2908
|
+
logger14 = createLogger("Stripe");
|
|
2823
2909
|
STRIPE_TOOLS = [
|
|
2824
2910
|
"stripe_list_customers",
|
|
2825
2911
|
"stripe_get_customer",
|
|
@@ -2850,15 +2936,17 @@ function gcalIntegration(config = {}) {
|
|
|
2850
2936
|
tools: [...GCAL_TOOLS],
|
|
2851
2937
|
oauth,
|
|
2852
2938
|
async onInit(_client) {
|
|
2853
|
-
|
|
2939
|
+
logger15.debug("Google Calendar integration initialized");
|
|
2854
2940
|
},
|
|
2855
2941
|
async onAfterConnect(_client) {
|
|
2856
|
-
|
|
2942
|
+
logger15.debug("Google Calendar integration connected");
|
|
2857
2943
|
}
|
|
2858
2944
|
};
|
|
2859
2945
|
}
|
|
2860
|
-
var GCAL_TOOLS;
|
|
2946
|
+
var logger15, GCAL_TOOLS;
|
|
2861
2947
|
var init_gcal = __esm(() => {
|
|
2948
|
+
init_logger();
|
|
2949
|
+
logger15 = createLogger("Google Calendar");
|
|
2862
2950
|
GCAL_TOOLS = [
|
|
2863
2951
|
"gcal_list_calendars",
|
|
2864
2952
|
"gcal_get_calendar",
|
|
@@ -2889,15 +2977,17 @@ function outlookIntegration(config = {}) {
|
|
|
2889
2977
|
tools: [...OUTLOOK_TOOLS],
|
|
2890
2978
|
oauth,
|
|
2891
2979
|
async onInit(_client) {
|
|
2892
|
-
|
|
2980
|
+
logger16.debug("Outlook integration initialized");
|
|
2893
2981
|
},
|
|
2894
2982
|
async onAfterConnect(_client) {
|
|
2895
|
-
|
|
2983
|
+
logger16.debug("Outlook integration connected");
|
|
2896
2984
|
}
|
|
2897
2985
|
};
|
|
2898
2986
|
}
|
|
2899
|
-
var OUTLOOK_TOOLS;
|
|
2987
|
+
var logger16, OUTLOOK_TOOLS;
|
|
2900
2988
|
var init_outlook = __esm(() => {
|
|
2989
|
+
init_logger();
|
|
2990
|
+
logger16 = createLogger("Outlook");
|
|
2901
2991
|
OUTLOOK_TOOLS = [
|
|
2902
2992
|
"outlook_list_messages",
|
|
2903
2993
|
"outlook_get_message",
|
|
@@ -2928,15 +3018,17 @@ function airtableIntegration(config = {}) {
|
|
|
2928
3018
|
tools: [...AIRTABLE_TOOLS],
|
|
2929
3019
|
oauth,
|
|
2930
3020
|
async onInit(_client) {
|
|
2931
|
-
|
|
3021
|
+
logger17.debug("Airtable integration initialized");
|
|
2932
3022
|
},
|
|
2933
3023
|
async onAfterConnect(_client) {
|
|
2934
|
-
|
|
3024
|
+
logger17.debug("Airtable integration connected");
|
|
2935
3025
|
}
|
|
2936
3026
|
};
|
|
2937
3027
|
}
|
|
2938
|
-
var AIRTABLE_TOOLS;
|
|
3028
|
+
var logger17, AIRTABLE_TOOLS;
|
|
2939
3029
|
var init_airtable = __esm(() => {
|
|
3030
|
+
init_logger();
|
|
3031
|
+
logger17 = createLogger("Airtable");
|
|
2940
3032
|
AIRTABLE_TOOLS = [
|
|
2941
3033
|
"airtable_list_bases",
|
|
2942
3034
|
"airtable_get_base",
|
|
@@ -2967,15 +3059,17 @@ function todoistIntegration(config = {}) {
|
|
|
2967
3059
|
tools: [...TODOIST_TOOLS],
|
|
2968
3060
|
oauth,
|
|
2969
3061
|
async onInit(_client) {
|
|
2970
|
-
|
|
3062
|
+
logger18.debug("Todoist integration initialized");
|
|
2971
3063
|
},
|
|
2972
3064
|
async onAfterConnect(_client) {
|
|
2973
|
-
|
|
3065
|
+
logger18.debug("Todoist integration connected");
|
|
2974
3066
|
}
|
|
2975
3067
|
};
|
|
2976
3068
|
}
|
|
2977
|
-
var TODOIST_TOOLS;
|
|
3069
|
+
var logger18, TODOIST_TOOLS;
|
|
2978
3070
|
var init_todoist = __esm(() => {
|
|
3071
|
+
init_logger();
|
|
3072
|
+
logger18 = createLogger("Todoist");
|
|
2979
3073
|
TODOIST_TOOLS = [
|
|
2980
3074
|
"todoist_list_projects",
|
|
2981
3075
|
"todoist_get_project",
|
|
@@ -3007,15 +3101,17 @@ function whatsappIntegration(config = {}) {
|
|
|
3007
3101
|
tools: [...WHATSAPP_TOOLS],
|
|
3008
3102
|
oauth,
|
|
3009
3103
|
async onInit(_client) {
|
|
3010
|
-
|
|
3104
|
+
logger19.debug("WhatsApp Business integration initialized");
|
|
3011
3105
|
},
|
|
3012
3106
|
async onAfterConnect(_client) {
|
|
3013
|
-
|
|
3107
|
+
logger19.debug("WhatsApp Business integration connected");
|
|
3014
3108
|
}
|
|
3015
3109
|
};
|
|
3016
3110
|
}
|
|
3017
|
-
var WHATSAPP_TOOLS;
|
|
3111
|
+
var logger19, WHATSAPP_TOOLS;
|
|
3018
3112
|
var init_whatsapp = __esm(() => {
|
|
3113
|
+
init_logger();
|
|
3114
|
+
logger19 = createLogger("WhatsApp");
|
|
3019
3115
|
WHATSAPP_TOOLS = [
|
|
3020
3116
|
"whatsapp_send_message",
|
|
3021
3117
|
"whatsapp_send_template",
|
|
@@ -3046,15 +3142,17 @@ function calcomIntegration(config = {}) {
|
|
|
3046
3142
|
tools: [...CALCOM_TOOLS],
|
|
3047
3143
|
oauth,
|
|
3048
3144
|
async onInit(_client) {
|
|
3049
|
-
|
|
3145
|
+
logger20.debug("Cal.com integration initialized");
|
|
3050
3146
|
},
|
|
3051
3147
|
async onAfterConnect(_client) {
|
|
3052
|
-
|
|
3148
|
+
logger20.debug("Cal.com integration connected");
|
|
3053
3149
|
}
|
|
3054
3150
|
};
|
|
3055
3151
|
}
|
|
3056
|
-
var CALCOM_TOOLS;
|
|
3152
|
+
var logger20, CALCOM_TOOLS;
|
|
3057
3153
|
var init_calcom = __esm(() => {
|
|
3154
|
+
init_logger();
|
|
3155
|
+
logger20 = createLogger("Cal.com");
|
|
3058
3156
|
CALCOM_TOOLS = [
|
|
3059
3157
|
"calcom_list_bookings",
|
|
3060
3158
|
"calcom_get_booking",
|
|
@@ -3086,15 +3184,17 @@ function rampIntegration(config = {}) {
|
|
|
3086
3184
|
tools: [...RAMP_TOOLS],
|
|
3087
3185
|
oauth,
|
|
3088
3186
|
async onInit(_client) {
|
|
3089
|
-
|
|
3187
|
+
logger21.debug("Ramp integration initialized");
|
|
3090
3188
|
},
|
|
3091
3189
|
async onAfterConnect(_client) {
|
|
3092
|
-
|
|
3190
|
+
logger21.debug("Ramp integration connected");
|
|
3093
3191
|
}
|
|
3094
3192
|
};
|
|
3095
3193
|
}
|
|
3096
|
-
var RAMP_TOOLS;
|
|
3194
|
+
var logger21, RAMP_TOOLS;
|
|
3097
3195
|
var init_ramp = __esm(() => {
|
|
3196
|
+
init_logger();
|
|
3197
|
+
logger21 = createLogger("Ramp");
|
|
3098
3198
|
RAMP_TOOLS = [
|
|
3099
3199
|
"ramp_list_transactions",
|
|
3100
3200
|
"ramp_get_transaction",
|
|
@@ -3125,15 +3225,17 @@ function onedriveIntegration(config = {}) {
|
|
|
3125
3225
|
tools: [...ONEDRIVE_TOOLS],
|
|
3126
3226
|
oauth,
|
|
3127
3227
|
async onInit(_client) {
|
|
3128
|
-
|
|
3228
|
+
logger22.debug("OneDrive integration initialized");
|
|
3129
3229
|
},
|
|
3130
3230
|
async onAfterConnect(_client) {
|
|
3131
|
-
|
|
3231
|
+
logger22.debug("OneDrive integration connected");
|
|
3132
3232
|
}
|
|
3133
3233
|
};
|
|
3134
3234
|
}
|
|
3135
|
-
var ONEDRIVE_TOOLS;
|
|
3235
|
+
var logger22, ONEDRIVE_TOOLS;
|
|
3136
3236
|
var init_onedrive = __esm(() => {
|
|
3237
|
+
init_logger();
|
|
3238
|
+
logger22 = createLogger("OneDrive");
|
|
3137
3239
|
ONEDRIVE_TOOLS = [
|
|
3138
3240
|
"onedrive_list_files",
|
|
3139
3241
|
"onedrive_get_file",
|
|
@@ -3172,15 +3274,17 @@ function gworkspaceIntegration(config = {}) {
|
|
|
3172
3274
|
tools: [...GWORKSPACE_TOOLS],
|
|
3173
3275
|
oauth,
|
|
3174
3276
|
async onInit(_client) {
|
|
3175
|
-
|
|
3277
|
+
logger23.debug("Google Workspace integration initialized");
|
|
3176
3278
|
},
|
|
3177
3279
|
async onAfterConnect(_client) {
|
|
3178
|
-
|
|
3280
|
+
logger23.debug("Google Workspace integration connected");
|
|
3179
3281
|
}
|
|
3180
3282
|
};
|
|
3181
3283
|
}
|
|
3182
|
-
var GWORKSPACE_TOOLS;
|
|
3284
|
+
var logger23, GWORKSPACE_TOOLS;
|
|
3183
3285
|
var init_gworkspace = __esm(() => {
|
|
3286
|
+
init_logger();
|
|
3287
|
+
logger23 = createLogger("Google Workspace");
|
|
3184
3288
|
GWORKSPACE_TOOLS = [
|
|
3185
3289
|
"gworkspace_sheets_list",
|
|
3186
3290
|
"gworkspace_sheets_get",
|
|
@@ -3215,15 +3319,17 @@ function polarIntegration(config = {}) {
|
|
|
3215
3319
|
tools: [...POLAR_TOOLS],
|
|
3216
3320
|
oauth,
|
|
3217
3321
|
async onInit(_client) {
|
|
3218
|
-
|
|
3322
|
+
logger24.debug("Polar integration initialized");
|
|
3219
3323
|
},
|
|
3220
3324
|
async onAfterConnect(_client) {
|
|
3221
|
-
|
|
3325
|
+
logger24.debug("Polar integration connected");
|
|
3222
3326
|
}
|
|
3223
3327
|
};
|
|
3224
3328
|
}
|
|
3225
|
-
var POLAR_TOOLS;
|
|
3329
|
+
var logger24, POLAR_TOOLS;
|
|
3226
3330
|
var init_polar = __esm(() => {
|
|
3331
|
+
init_logger();
|
|
3332
|
+
logger24 = createLogger("Polar");
|
|
3227
3333
|
POLAR_TOOLS = [
|
|
3228
3334
|
"polar_list_products",
|
|
3229
3335
|
"polar_get_product",
|
|
@@ -3254,15 +3360,17 @@ function figmaIntegration(config = {}) {
|
|
|
3254
3360
|
tools: [...FIGMA_TOOLS],
|
|
3255
3361
|
oauth,
|
|
3256
3362
|
async onInit(_client) {
|
|
3257
|
-
|
|
3363
|
+
logger25.debug("Figma integration initialized");
|
|
3258
3364
|
},
|
|
3259
3365
|
async onAfterConnect(_client) {
|
|
3260
|
-
|
|
3366
|
+
logger25.debug("Figma integration connected");
|
|
3261
3367
|
}
|
|
3262
3368
|
};
|
|
3263
3369
|
}
|
|
3264
|
-
var FIGMA_TOOLS;
|
|
3370
|
+
var logger25, FIGMA_TOOLS;
|
|
3265
3371
|
var init_figma = __esm(() => {
|
|
3372
|
+
init_logger();
|
|
3373
|
+
logger25 = createLogger("Figma");
|
|
3266
3374
|
FIGMA_TOOLS = [
|
|
3267
3375
|
"figma_get_file",
|
|
3268
3376
|
"figma_get_file_nodes",
|
|
@@ -3293,15 +3401,17 @@ function intercomIntegration(config = {}) {
|
|
|
3293
3401
|
tools: [...INTERCOM_TOOLS],
|
|
3294
3402
|
oauth,
|
|
3295
3403
|
async onInit(_client) {
|
|
3296
|
-
|
|
3404
|
+
logger26.debug("Intercom integration initialized");
|
|
3297
3405
|
},
|
|
3298
3406
|
async onAfterConnect(_client) {
|
|
3299
|
-
|
|
3407
|
+
logger26.debug("Intercom integration connected");
|
|
3300
3408
|
}
|
|
3301
3409
|
};
|
|
3302
3410
|
}
|
|
3303
|
-
var INTERCOM_TOOLS;
|
|
3411
|
+
var logger26, INTERCOM_TOOLS;
|
|
3304
3412
|
var init_intercom = __esm(() => {
|
|
3413
|
+
init_logger();
|
|
3414
|
+
logger26 = createLogger("Intercom");
|
|
3305
3415
|
INTERCOM_TOOLS = [
|
|
3306
3416
|
"intercom_list_contacts",
|
|
3307
3417
|
"intercom_get_contact",
|
|
@@ -3340,15 +3450,17 @@ function hubspotIntegration(config = {}) {
|
|
|
3340
3450
|
tools: [...HUBSPOT_TOOLS],
|
|
3341
3451
|
oauth,
|
|
3342
3452
|
async onInit(_client) {
|
|
3343
|
-
|
|
3453
|
+
logger27.debug("HubSpot integration initialized");
|
|
3344
3454
|
},
|
|
3345
3455
|
async onAfterConnect(_client) {
|
|
3346
|
-
|
|
3456
|
+
logger27.debug("HubSpot integration connected");
|
|
3347
3457
|
}
|
|
3348
3458
|
};
|
|
3349
3459
|
}
|
|
3350
|
-
var HUBSPOT_TOOLS;
|
|
3460
|
+
var logger27, HUBSPOT_TOOLS;
|
|
3351
3461
|
var init_hubspot = __esm(() => {
|
|
3462
|
+
init_logger();
|
|
3463
|
+
logger27 = createLogger("HubSpot");
|
|
3352
3464
|
HUBSPOT_TOOLS = [
|
|
3353
3465
|
"hubspot_list_contacts",
|
|
3354
3466
|
"hubspot_get_contact",
|
|
@@ -3382,15 +3494,17 @@ function youtubeIntegration(config = {}) {
|
|
|
3382
3494
|
tools: [...YOUTUBE_TOOLS],
|
|
3383
3495
|
oauth,
|
|
3384
3496
|
async onInit(_client) {
|
|
3385
|
-
|
|
3497
|
+
logger28.debug("YouTube integration initialized");
|
|
3386
3498
|
},
|
|
3387
3499
|
async onAfterConnect(_client) {
|
|
3388
|
-
|
|
3500
|
+
logger28.debug("YouTube integration connected");
|
|
3389
3501
|
}
|
|
3390
3502
|
};
|
|
3391
3503
|
}
|
|
3392
|
-
var YOUTUBE_TOOLS;
|
|
3504
|
+
var logger28, YOUTUBE_TOOLS;
|
|
3393
3505
|
var init_youtube = __esm(() => {
|
|
3506
|
+
init_logger();
|
|
3507
|
+
logger28 = createLogger("YouTube");
|
|
3394
3508
|
YOUTUBE_TOOLS = [
|
|
3395
3509
|
"youtube_search",
|
|
3396
3510
|
"youtube_get_video",
|
|
@@ -3410,15 +3524,17 @@ function cursorIntegration(_config = {}) {
|
|
|
3410
3524
|
id: "cursor",
|
|
3411
3525
|
tools: [...CURSOR_TOOLS],
|
|
3412
3526
|
async onInit(_client) {
|
|
3413
|
-
|
|
3527
|
+
logger29.debug("Cursor integration initialized");
|
|
3414
3528
|
},
|
|
3415
3529
|
async onAfterConnect(_client) {
|
|
3416
|
-
|
|
3530
|
+
logger29.debug("Cursor integration connected");
|
|
3417
3531
|
}
|
|
3418
3532
|
};
|
|
3419
3533
|
}
|
|
3420
|
-
var CURSOR_TOOLS;
|
|
3534
|
+
var logger29, CURSOR_TOOLS;
|
|
3421
3535
|
var init_cursor = __esm(() => {
|
|
3536
|
+
init_logger();
|
|
3537
|
+
logger29 = createLogger("Cursor");
|
|
3422
3538
|
CURSOR_TOOLS = [
|
|
3423
3539
|
"cursor_list_agents",
|
|
3424
3540
|
"cursor_get_agent",
|
|
@@ -9782,6 +9898,7 @@ function getDefaultRedirectUri() {
|
|
|
9782
9898
|
return "http://localhost:3000/api/integrate/oauth/callback";
|
|
9783
9899
|
}
|
|
9784
9900
|
function createMCPServer(config) {
|
|
9901
|
+
setLogLevel(config.debug ? "debug" : "error");
|
|
9785
9902
|
if (typeof window !== "undefined") {
|
|
9786
9903
|
throw new Error("createMCPServer() should only be called on the server-side. " + "Use createMCPClient() for client-side code.");
|
|
9787
9904
|
}
|
|
@@ -9790,7 +9907,7 @@ function createMCPServer(config) {
|
|
|
9790
9907
|
if (integration.oauth) {
|
|
9791
9908
|
const { clientId, clientSecret, redirectUri: integrationRedirectUri, config: oauthConfig } = integration.oauth;
|
|
9792
9909
|
if (!clientId || !clientSecret) {
|
|
9793
|
-
|
|
9910
|
+
logger30.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
|
|
9794
9911
|
return integration;
|
|
9795
9912
|
}
|
|
9796
9913
|
const redirectUri = integrationRedirectUri || config.redirectUri || getDefaultRedirectUri();
|
|
@@ -9903,7 +10020,7 @@ function createMCPServer(config) {
|
|
|
9903
10020
|
const body = await webRequest.json();
|
|
9904
10021
|
const authHeader = webRequest.headers.get("authorization");
|
|
9905
10022
|
const integrationsHeader = webRequest.headers.get("x-integrations");
|
|
9906
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10023
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
9907
10024
|
const oauthHandler = new OAuthHandler2({
|
|
9908
10025
|
providers,
|
|
9909
10026
|
serverUrl: config.serverUrl,
|
|
@@ -9919,7 +10036,7 @@ function createMCPServer(config) {
|
|
|
9919
10036
|
}
|
|
9920
10037
|
return response2;
|
|
9921
10038
|
} catch (error) {
|
|
9922
|
-
|
|
10039
|
+
logger30.error("[MCP Tool Call] Error:", error);
|
|
9923
10040
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
9924
10041
|
}
|
|
9925
10042
|
}
|
|
@@ -9983,7 +10100,7 @@ function createMCPServer(config) {
|
|
|
9983
10100
|
})
|
|
9984
10101
|
});
|
|
9985
10102
|
} catch (scheduleError) {
|
|
9986
|
-
|
|
10103
|
+
logger30.error("[Trigger] Failed to register with scheduler:", scheduleError);
|
|
9987
10104
|
}
|
|
9988
10105
|
return Response.json(created, { status: 201 });
|
|
9989
10106
|
}
|
|
@@ -10018,7 +10135,7 @@ function createMCPServer(config) {
|
|
|
10018
10135
|
body: JSON.stringify({ triggerId })
|
|
10019
10136
|
});
|
|
10020
10137
|
} catch (error) {
|
|
10021
|
-
|
|
10138
|
+
logger30.error("[Trigger] Failed to pause in scheduler:", error);
|
|
10022
10139
|
}
|
|
10023
10140
|
return Response.json(updated);
|
|
10024
10141
|
} else if (subAction === "resume" && method === "POST") {
|
|
@@ -10046,7 +10163,7 @@ function createMCPServer(config) {
|
|
|
10046
10163
|
body: JSON.stringify({ triggerId })
|
|
10047
10164
|
});
|
|
10048
10165
|
} catch (error) {
|
|
10049
|
-
|
|
10166
|
+
logger30.error("[Trigger] Failed to resume in scheduler:", error);
|
|
10050
10167
|
}
|
|
10051
10168
|
return Response.json(updated);
|
|
10052
10169
|
} else if (subAction === "run" && method === "POST") {
|
|
@@ -10061,7 +10178,7 @@ function createMCPServer(config) {
|
|
|
10061
10178
|
if (!providerToken) {
|
|
10062
10179
|
return Response.json({ error: "No OAuth token available for this trigger" }, { status: 401 });
|
|
10063
10180
|
}
|
|
10064
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10181
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
10065
10182
|
const oauthHandler = new OAuthHandler2({
|
|
10066
10183
|
providers,
|
|
10067
10184
|
serverUrl: config.serverUrl,
|
|
@@ -10187,7 +10304,7 @@ function createMCPServer(config) {
|
|
|
10187
10304
|
})
|
|
10188
10305
|
});
|
|
10189
10306
|
} catch (error) {
|
|
10190
|
-
|
|
10307
|
+
logger30.error("[Trigger] Failed to update scheduler:", error);
|
|
10191
10308
|
}
|
|
10192
10309
|
}
|
|
10193
10310
|
return Response.json(updated);
|
|
@@ -10204,14 +10321,14 @@ function createMCPServer(config) {
|
|
|
10204
10321
|
body: JSON.stringify({ triggerId })
|
|
10205
10322
|
});
|
|
10206
10323
|
} catch (error) {
|
|
10207
|
-
|
|
10324
|
+
logger30.error("[Trigger] Failed to unregister from scheduler:", error);
|
|
10208
10325
|
}
|
|
10209
10326
|
return new Response(null, { status: 204 });
|
|
10210
10327
|
}
|
|
10211
10328
|
}
|
|
10212
10329
|
return Response.json({ error: "Invalid trigger route or method" }, { status: 404 });
|
|
10213
10330
|
} catch (error) {
|
|
10214
|
-
|
|
10331
|
+
logger30.error("[Trigger] Error:", error);
|
|
10215
10332
|
return Response.json({ error: error.message || "Failed to process trigger request" }, { status: error.statusCode || 500 });
|
|
10216
10333
|
}
|
|
10217
10334
|
}
|
|
@@ -10237,11 +10354,11 @@ function createMCPServer(config) {
|
|
|
10237
10354
|
const errorRedirectUrl = "/auth-error";
|
|
10238
10355
|
if (error) {
|
|
10239
10356
|
const errorMsg = errorDescription || error;
|
|
10240
|
-
|
|
10357
|
+
logger30.error("[OAuth Redirect] Error:", errorMsg);
|
|
10241
10358
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
|
|
10242
10359
|
}
|
|
10243
10360
|
if (!code || !state) {
|
|
10244
|
-
|
|
10361
|
+
logger30.error("[OAuth Redirect] Missing code or state parameter");
|
|
10245
10362
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
|
|
10246
10363
|
}
|
|
10247
10364
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -10273,7 +10390,7 @@ function createMCPServer(config) {
|
|
|
10273
10390
|
if (codeVerifierEntry) {
|
|
10274
10391
|
try {
|
|
10275
10392
|
const { codeVerifier, provider, frontendOrigin: storedFrontendOrigin } = codeVerifierEntry;
|
|
10276
|
-
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => exports_base_handler);
|
|
10393
|
+
const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
10277
10394
|
const oauthHandler = new OAuthHandler2({
|
|
10278
10395
|
providers,
|
|
10279
10396
|
serverUrl: config.serverUrl,
|
|
@@ -10317,7 +10434,7 @@ function createMCPServer(config) {
|
|
|
10317
10434
|
frontendUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state, tokenData }))}`;
|
|
10318
10435
|
return Response.redirect(frontendUrl);
|
|
10319
10436
|
} catch (error2) {
|
|
10320
|
-
|
|
10437
|
+
logger30.error("[OAuth Backend Callback] Error:", error2);
|
|
10321
10438
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
|
|
10322
10439
|
}
|
|
10323
10440
|
} else {
|
|
@@ -10536,7 +10653,7 @@ function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
|
10536
10653
|
}
|
|
10537
10654
|
};
|
|
10538
10655
|
}
|
|
10539
|
-
var globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
10656
|
+
var logger30, globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
10540
10657
|
if (!globalServerConfig) {
|
|
10541
10658
|
return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
|
|
10542
10659
|
}
|
|
@@ -10554,6 +10671,7 @@ var globalServerConfig = null, codeVerifierStorage, POST = async (req, context)
|
|
|
10554
10671
|
var init_server = __esm(() => {
|
|
10555
10672
|
init_client();
|
|
10556
10673
|
init_nextjs();
|
|
10674
|
+
init_logger();
|
|
10557
10675
|
init_github();
|
|
10558
10676
|
init_gmail();
|
|
10559
10677
|
init_notion();
|
|
@@ -10583,6 +10701,7 @@ var init_server = __esm(() => {
|
|
|
10583
10701
|
init_anthropic();
|
|
10584
10702
|
init_google();
|
|
10585
10703
|
init_ai();
|
|
10704
|
+
logger30 = createLogger("MCPServer");
|
|
10586
10705
|
codeVerifierStorage = new Map;
|
|
10587
10706
|
});
|
|
10588
10707
|
|
|
@@ -11081,11 +11200,11 @@ class OAuthHandler {
|
|
|
11081
11200
|
try {
|
|
11082
11201
|
await this.config.removeProviderToken(request.provider, undefined, context);
|
|
11083
11202
|
} catch (error) {
|
|
11084
|
-
|
|
11203
|
+
logger31.error(`Failed to delete token for ${request.provider} from database via removeProviderToken:`, error);
|
|
11085
11204
|
}
|
|
11086
11205
|
}
|
|
11087
11206
|
} catch (error) {
|
|
11088
|
-
|
|
11207
|
+
logger31.error(`Failed to extract context for disconnect:`, error);
|
|
11089
11208
|
}
|
|
11090
11209
|
}
|
|
11091
11210
|
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
@@ -11145,9 +11264,16 @@ class OAuthHandler {
|
|
|
11145
11264
|
return jsonRpcResponse.result;
|
|
11146
11265
|
}
|
|
11147
11266
|
}
|
|
11148
|
-
var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
11267
|
+
var logger31, MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
11268
|
+
var init_base_handler = __esm(() => {
|
|
11269
|
+
init_logger();
|
|
11270
|
+
logger31 = createLogger("OAuthHandler");
|
|
11271
|
+
});
|
|
11149
11272
|
|
|
11150
11273
|
// src/adapters/auto-routes.ts
|
|
11274
|
+
init_base_handler();
|
|
11275
|
+
init_logger();
|
|
11276
|
+
var logger32 = createLogger("AutoRoutes");
|
|
11151
11277
|
var globalOAuthConfig = null;
|
|
11152
11278
|
async function POST2(req, context) {
|
|
11153
11279
|
if (!globalOAuthConfig) {
|
|
@@ -11189,7 +11315,7 @@ async function POST2(req, context) {
|
|
|
11189
11315
|
}
|
|
11190
11316
|
return createErrorResponse(`Unknown action: ${action}`, 404);
|
|
11191
11317
|
} catch (error) {
|
|
11192
|
-
|
|
11318
|
+
logger32.error(`[OAuth ${action}] Error:`, error);
|
|
11193
11319
|
return createErrorResponse(error.message, 500);
|
|
11194
11320
|
}
|
|
11195
11321
|
}
|
|
@@ -11217,7 +11343,7 @@ async function GET2(req, context) {
|
|
|
11217
11343
|
}
|
|
11218
11344
|
return createErrorResponse(`Unknown action: ${action}`, 404);
|
|
11219
11345
|
} catch (error) {
|
|
11220
|
-
|
|
11346
|
+
logger32.error(`[OAuth ${action}] Error:`, error);
|
|
11221
11347
|
return createErrorResponse(error.message, 500);
|
|
11222
11348
|
}
|
|
11223
11349
|
}
|