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