integrate-sdk 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/index.d.ts +17 -28
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/{src/index.js → index.js} +174 -147
  4. package/dist/oauth.d.ts +19 -0
  5. package/dist/oauth.d.ts.map +1 -0
  6. package/dist/oauth.js +18 -5
  7. package/dist/server.d.ts +5 -48
  8. package/dist/server.d.ts.map +1 -1
  9. package/dist/{src/server.js → server.js} +179 -185
  10. package/dist/src/adapters/auto-routes.d.ts.map +1 -0
  11. package/dist/src/adapters/base-handler.d.ts.map +1 -0
  12. package/dist/src/adapters/nextjs.d.ts.map +1 -0
  13. package/dist/src/adapters/tanstack-start.d.ts.map +1 -0
  14. package/dist/src/client.d.ts.map +1 -0
  15. package/dist/src/config/types.d.ts.map +1 -0
  16. package/dist/src/errors.d.ts.map +1 -0
  17. package/dist/src/index.d.ts +31 -0
  18. package/dist/src/index.d.ts.map +1 -0
  19. package/dist/src/integrations/vercel-ai.d.ts.map +1 -0
  20. package/dist/src/oauth/manager.d.ts.map +1 -0
  21. package/dist/src/oauth/pkce.d.ts.map +1 -0
  22. package/dist/src/oauth/types.d.ts.map +1 -0
  23. package/dist/src/oauth/window-manager.d.ts.map +1 -0
  24. package/dist/src/plugins/generic.d.ts.map +1 -0
  25. package/dist/src/plugins/github-client.d.ts.map +1 -0
  26. package/dist/src/plugins/github.d.ts.map +1 -0
  27. package/dist/src/plugins/gmail-client.d.ts.map +1 -0
  28. package/dist/src/plugins/gmail.d.ts.map +1 -0
  29. package/dist/src/plugins/server-client.d.ts.map +1 -0
  30. package/dist/src/plugins/types.d.ts.map +1 -0
  31. package/dist/src/protocol/jsonrpc.d.ts.map +1 -0
  32. package/dist/src/protocol/messages.d.ts.map +1 -0
  33. package/dist/src/server.d.ts +54 -0
  34. package/dist/src/server.d.ts.map +1 -0
  35. package/dist/src/transport/http-session.d.ts.map +1 -0
  36. package/dist/src/transport/http-stream.d.ts.map +1 -0
  37. package/dist/src/utils/naming.d.ts.map +1 -0
  38. package/index.ts +21 -0
  39. package/package.json +3 -2
  40. package/dist/adapters/auto-routes.d.ts.map +0 -1
  41. package/dist/adapters/base-handler.d.ts.map +0 -1
  42. package/dist/adapters/nextjs.d.ts.map +0 -1
  43. package/dist/adapters/tanstack-start.d.ts.map +0 -1
  44. package/dist/client.d.ts.map +0 -1
  45. package/dist/config/types.d.ts.map +0 -1
  46. package/dist/errors.d.ts.map +0 -1
  47. package/dist/integrations/vercel-ai.d.ts.map +0 -1
  48. package/dist/oauth/manager.d.ts.map +0 -1
  49. package/dist/oauth/pkce.d.ts.map +0 -1
  50. package/dist/oauth/types.d.ts.map +0 -1
  51. package/dist/oauth/window-manager.d.ts.map +0 -1
  52. package/dist/plugins/generic.d.ts.map +0 -1
  53. package/dist/plugins/github-client.d.ts.map +0 -1
  54. package/dist/plugins/github.d.ts.map +0 -1
  55. package/dist/plugins/gmail-client.d.ts.map +0 -1
  56. package/dist/plugins/gmail.d.ts.map +0 -1
  57. package/dist/plugins/server-client.d.ts.map +0 -1
  58. package/dist/plugins/types.d.ts.map +0 -1
  59. package/dist/protocol/jsonrpc.d.ts.map +0 -1
  60. package/dist/protocol/messages.d.ts.map +0 -1
  61. package/dist/transport/http-session.d.ts.map +0 -1
  62. package/dist/transport/http-stream.d.ts.map +0 -1
  63. package/dist/utils/naming.d.ts.map +0 -1
  64. /package/dist/{adapters → src/adapters}/auto-routes.d.ts +0 -0
  65. /package/dist/{adapters → src/adapters}/base-handler.d.ts +0 -0
  66. /package/dist/{adapters → src/adapters}/nextjs.d.ts +0 -0
  67. /package/dist/{adapters → src/adapters}/tanstack-start.d.ts +0 -0
  68. /package/dist/{client.d.ts → src/client.d.ts} +0 -0
  69. /package/dist/{config → src/config}/types.d.ts +0 -0
  70. /package/dist/{errors.d.ts → src/errors.d.ts} +0 -0
  71. /package/dist/{integrations → src/integrations}/vercel-ai.d.ts +0 -0
  72. /package/dist/{oauth → src/oauth}/manager.d.ts +0 -0
  73. /package/dist/{oauth → src/oauth}/pkce.d.ts +0 -0
  74. /package/dist/{oauth → src/oauth}/types.d.ts +0 -0
  75. /package/dist/{oauth → src/oauth}/window-manager.d.ts +0 -0
  76. /package/dist/{plugins → src/plugins}/generic.d.ts +0 -0
  77. /package/dist/{plugins → src/plugins}/github-client.d.ts +0 -0
  78. /package/dist/{plugins → src/plugins}/github.d.ts +0 -0
  79. /package/dist/{plugins → src/plugins}/gmail-client.d.ts +0 -0
  80. /package/dist/{plugins → src/plugins}/gmail.d.ts +0 -0
  81. /package/dist/{plugins → src/plugins}/server-client.d.ts +0 -0
  82. /package/dist/{plugins → src/plugins}/types.d.ts +0 -0
  83. /package/dist/{protocol → src/protocol}/jsonrpc.d.ts +0 -0
  84. /package/dist/{protocol → src/protocol}/messages.d.ts +0 -0
  85. /package/dist/{transport → src/transport}/http-session.d.ts +0 -0
  86. /package/dist/{transport → src/transport}/http-stream.d.ts +0 -0
  87. /package/dist/{utils → src/utils}/naming.d.ts +0 -0
package/dist/index.d.ts CHANGED
@@ -1,31 +1,20 @@
1
1
  /**
2
- * Integrate SDK
3
- * Type-safe TypeScript SDK for MCP Client
2
+ * Integrate SDK - Main Entry Point
3
+ *
4
+ * Client-side SDK for MCP with plugin-based configuration
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { createMCPClient, githubPlugin } from 'integrate-sdk';
9
+ *
10
+ * const client = createMCPClient({
11
+ * plugins: [
12
+ * githubPlugin({
13
+ * scopes: ['repo', 'user'],
14
+ * }),
15
+ * ],
16
+ * });
17
+ * ```
4
18
  */
5
- export { MCPClient, createMCPClient, clearClientCache } from "./client.js";
6
- export type { ToolInvocationOptions } from "./client.js";
7
- export { OAuthManager } from "./oauth/manager.js";
8
- export { OAuthWindowManager, sendCallbackToOpener } from "./oauth/window-manager.js";
9
- export { generateCodeVerifier, generateCodeChallenge, generateState } from "./oauth/pkce.js";
10
- export type { OAuthFlowConfig, PopupOptions, AuthStatus, PendingAuth, AuthorizationUrlResponse, OAuthCallbackResponse, OAuthCallbackParams, } from "./oauth/types.js";
11
- export { OAuthHandler } from "./adapters/base-handler.js";
12
- export type { OAuthHandlerConfig, AuthorizeRequest, AuthorizeResponse, CallbackRequest, CallbackResponse, StatusResponse, } from "./adapters/base-handler.js";
13
- export { createNextOAuthHandler } from "./adapters/nextjs.js";
14
- export { createTanStackOAuthHandler } from "./adapters/tanstack-start.js";
15
- export type { MCPClientConfig, ReauthContext, ReauthHandler } from "./config/types.js";
16
- export { IntegrateSDKError, AuthenticationError, AuthorizationError, TokenExpiredError, ConnectionError, ToolCallError, isAuthError, isTokenExpiredError, isAuthorizationError, parseServerError, } from "./errors.js";
17
- export type { MCPPlugin, OAuthConfig, ExtractPluginIds, ExtractPluginTools, } from "./plugins/types.js";
18
- export { githubPlugin } from "./plugins/github.js";
19
- export type { GitHubPluginConfig, GitHubTools, GitHubPluginClient } from "./plugins/github.js";
20
- export { gmailPlugin } from "./plugins/gmail.js";
21
- export type { GmailPluginConfig, GmailTools, GmailPluginClient } from "./plugins/gmail.js";
22
- export type { ServerPluginClient } from "./plugins/server-client.js";
23
- export { genericOAuthPlugin, createSimplePlugin, } from "./plugins/generic.js";
24
- export type { GenericOAuthPluginConfig } from "./plugins/generic.js";
25
- export { convertMCPToolToVercelAI, convertMCPToolsToVercelAI, getVercelAITools, } from "./integrations/vercel-ai.js";
26
- export type { VercelAITool } from "./integrations/vercel-ai.js";
27
- export type { JSONRPCRequest, JSONRPCResponse, JSONRPCSuccessResponse, JSONRPCErrorResponse, JSONRPCNotification, MCPTool, MCPToolsListResponse, MCPToolCallParams, MCPToolCallResponse, MCPInitializeParams, MCPInitializeResponse, } from "./protocol/messages.js";
28
- export { MCPMethod } from "./protocol/messages.js";
29
- export { HttpSessionTransport } from "./transport/http-session.js";
30
- export type { MessageHandler, HttpSessionTransportOptions, } from "./transport/http-session.js";
19
+ export * from './src/index.js';
31
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,cAAc,EACd,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAc,gBAAgB,CAAC"}
@@ -1,4 +1,21 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
2
19
  var __export = (target, all) => {
3
20
  for (var name in all)
4
21
  __defProp(target, name, {
@@ -148,6 +165,160 @@ var init_errors = __esm(() => {
148
165
  };
149
166
  });
150
167
 
168
+ // src/adapters/base-handler.ts
169
+ class OAuthHandler {
170
+ config;
171
+ serverUrl = MCP_SERVER_URL2;
172
+ constructor(config) {
173
+ this.config = config;
174
+ }
175
+ async handleAuthorize(request) {
176
+ const providerConfig = this.config.providers[request.provider];
177
+ if (!providerConfig) {
178
+ throw new Error(`Provider ${request.provider} not configured. Add OAuth credentials to your API route configuration.`);
179
+ }
180
+ if (!providerConfig.clientId || !providerConfig.clientSecret) {
181
+ throw new Error(`Missing OAuth credentials for ${request.provider}. Check your environment variables.`);
182
+ }
183
+ const url = new URL("/oauth/authorize", this.serverUrl);
184
+ url.searchParams.set("provider", request.provider);
185
+ url.searchParams.set("client_id", providerConfig.clientId);
186
+ url.searchParams.set("client_secret", providerConfig.clientSecret);
187
+ url.searchParams.set("scope", request.scopes.join(","));
188
+ url.searchParams.set("state", request.state);
189
+ url.searchParams.set("code_challenge", request.codeChallenge);
190
+ url.searchParams.set("code_challenge_method", request.codeChallengeMethod);
191
+ const redirectUri = request.redirectUri || providerConfig.redirectUri;
192
+ if (redirectUri) {
193
+ url.searchParams.set("redirect_uri", redirectUri);
194
+ }
195
+ const response = await fetch(url.toString(), {
196
+ method: "GET"
197
+ });
198
+ if (!response.ok) {
199
+ const error = await response.text();
200
+ throw new Error(`MCP server failed to generate authorization URL: ${error}`);
201
+ }
202
+ const data = await response.json();
203
+ return data;
204
+ }
205
+ async handleCallback(request) {
206
+ const url = new URL("/oauth/callback", this.serverUrl);
207
+ const response = await fetch(url.toString(), {
208
+ method: "POST",
209
+ headers: {
210
+ "Content-Type": "application/json"
211
+ },
212
+ body: JSON.stringify({
213
+ provider: request.provider,
214
+ code: request.code,
215
+ code_verifier: request.codeVerifier,
216
+ state: request.state
217
+ })
218
+ });
219
+ if (!response.ok) {
220
+ const error = await response.text();
221
+ throw new Error(`MCP server failed to exchange authorization code: ${error}`);
222
+ }
223
+ const data = await response.json();
224
+ return data;
225
+ }
226
+ async handleStatus(provider, sessionToken) {
227
+ const url = new URL("/oauth/status", this.serverUrl);
228
+ url.searchParams.set("provider", provider);
229
+ const response = await fetch(url.toString(), {
230
+ method: "GET",
231
+ headers: {
232
+ "X-Session-Token": sessionToken
233
+ }
234
+ });
235
+ if (!response.ok) {
236
+ if (response.status === 401) {
237
+ return {
238
+ authorized: false,
239
+ provider
240
+ };
241
+ }
242
+ const error = await response.text();
243
+ throw new Error(`MCP server failed to check authorization status: ${error}`);
244
+ }
245
+ const data = await response.json();
246
+ return data;
247
+ }
248
+ }
249
+ var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
250
+
251
+ // src/adapters/nextjs.ts
252
+ var exports_nextjs = {};
253
+ __export(exports_nextjs, {
254
+ createNextOAuthHandler: () => createNextOAuthHandler
255
+ });
256
+ function createNextOAuthHandler(config) {
257
+ const handler = new OAuthHandler(config);
258
+ const handlers = {
259
+ async authorize(req) {
260
+ try {
261
+ const body = await req.json();
262
+ const result = await handler.handleAuthorize(body);
263
+ return Response.json(result);
264
+ } catch (error) {
265
+ console.error("[OAuth Authorize] Error:", error);
266
+ return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
267
+ }
268
+ },
269
+ async callback(req) {
270
+ try {
271
+ const body = await req.json();
272
+ const result = await handler.handleCallback(body);
273
+ return Response.json(result);
274
+ } catch (error) {
275
+ console.error("[OAuth Callback] Error:", error);
276
+ return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
277
+ }
278
+ },
279
+ async status(req) {
280
+ try {
281
+ const provider = req.nextUrl.searchParams.get("provider");
282
+ const sessionToken = req.headers.get("x-session-token");
283
+ if (!provider) {
284
+ return Response.json({ error: "Missing provider query parameter" }, { status: 400 });
285
+ }
286
+ if (!sessionToken) {
287
+ return Response.json({ error: "Missing X-Session-Token header" }, { status: 400 });
288
+ }
289
+ const result = await handler.handleStatus(provider, sessionToken);
290
+ return Response.json(result);
291
+ } catch (error) {
292
+ console.error("[OAuth Status] Error:", error);
293
+ return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
294
+ }
295
+ },
296
+ createRoutes() {
297
+ return {
298
+ async POST(req, context) {
299
+ const action = context.params.action;
300
+ if (action === "authorize") {
301
+ return handlers.authorize(req);
302
+ }
303
+ if (action === "callback") {
304
+ return handlers.callback(req);
305
+ }
306
+ return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
307
+ },
308
+ async GET(req, context) {
309
+ const action = context.params.action;
310
+ if (action === "status") {
311
+ return handlers.status(req);
312
+ }
313
+ return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
314
+ }
315
+ };
316
+ }
317
+ };
318
+ return handlers;
319
+ }
320
+ var init_nextjs = () => {};
321
+
151
322
  // src/protocol/jsonrpc.ts
152
323
  function parseMessage(message) {
153
324
  try {
@@ -1154,154 +1325,10 @@ async function clearClientCache() {
1154
1325
  }
1155
1326
  }));
1156
1327
  }
1157
- // src/adapters/base-handler.ts
1158
- var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
1159
1328
 
1160
- class OAuthHandler {
1161
- config;
1162
- serverUrl = MCP_SERVER_URL2;
1163
- constructor(config) {
1164
- this.config = config;
1165
- }
1166
- async handleAuthorize(request) {
1167
- const providerConfig = this.config.providers[request.provider];
1168
- if (!providerConfig) {
1169
- throw new Error(`Provider ${request.provider} not configured. Add OAuth credentials to your API route configuration.`);
1170
- }
1171
- if (!providerConfig.clientId || !providerConfig.clientSecret) {
1172
- throw new Error(`Missing OAuth credentials for ${request.provider}. Check your environment variables.`);
1173
- }
1174
- const url = new URL("/oauth/authorize", this.serverUrl);
1175
- url.searchParams.set("provider", request.provider);
1176
- url.searchParams.set("client_id", providerConfig.clientId);
1177
- url.searchParams.set("client_secret", providerConfig.clientSecret);
1178
- url.searchParams.set("scope", request.scopes.join(","));
1179
- url.searchParams.set("state", request.state);
1180
- url.searchParams.set("code_challenge", request.codeChallenge);
1181
- url.searchParams.set("code_challenge_method", request.codeChallengeMethod);
1182
- const redirectUri = request.redirectUri || providerConfig.redirectUri;
1183
- if (redirectUri) {
1184
- url.searchParams.set("redirect_uri", redirectUri);
1185
- }
1186
- const response = await fetch(url.toString(), {
1187
- method: "GET"
1188
- });
1189
- if (!response.ok) {
1190
- const error = await response.text();
1191
- throw new Error(`MCP server failed to generate authorization URL: ${error}`);
1192
- }
1193
- const data = await response.json();
1194
- return data;
1195
- }
1196
- async handleCallback(request) {
1197
- const url = new URL("/oauth/callback", this.serverUrl);
1198
- const response = await fetch(url.toString(), {
1199
- method: "POST",
1200
- headers: {
1201
- "Content-Type": "application/json"
1202
- },
1203
- body: JSON.stringify({
1204
- provider: request.provider,
1205
- code: request.code,
1206
- code_verifier: request.codeVerifier,
1207
- state: request.state
1208
- })
1209
- });
1210
- if (!response.ok) {
1211
- const error = await response.text();
1212
- throw new Error(`MCP server failed to exchange authorization code: ${error}`);
1213
- }
1214
- const data = await response.json();
1215
- return data;
1216
- }
1217
- async handleStatus(provider, sessionToken) {
1218
- const url = new URL("/oauth/status", this.serverUrl);
1219
- url.searchParams.set("provider", provider);
1220
- const response = await fetch(url.toString(), {
1221
- method: "GET",
1222
- headers: {
1223
- "X-Session-Token": sessionToken
1224
- }
1225
- });
1226
- if (!response.ok) {
1227
- if (response.status === 401) {
1228
- return {
1229
- authorized: false,
1230
- provider
1231
- };
1232
- }
1233
- const error = await response.text();
1234
- throw new Error(`MCP server failed to check authorization status: ${error}`);
1235
- }
1236
- const data = await response.json();
1237
- return data;
1238
- }
1239
- }
1240
- // src/adapters/nextjs.ts
1241
- function createNextOAuthHandler(config) {
1242
- const handler = new OAuthHandler(config);
1243
- const handlers = {
1244
- async authorize(req) {
1245
- try {
1246
- const body = await req.json();
1247
- const result = await handler.handleAuthorize(body);
1248
- return Response.json(result);
1249
- } catch (error) {
1250
- console.error("[OAuth Authorize] Error:", error);
1251
- return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
1252
- }
1253
- },
1254
- async callback(req) {
1255
- try {
1256
- const body = await req.json();
1257
- const result = await handler.handleCallback(body);
1258
- return Response.json(result);
1259
- } catch (error) {
1260
- console.error("[OAuth Callback] Error:", error);
1261
- return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
1262
- }
1263
- },
1264
- async status(req) {
1265
- try {
1266
- const provider = req.nextUrl.searchParams.get("provider");
1267
- const sessionToken = req.headers.get("x-session-token");
1268
- if (!provider) {
1269
- return Response.json({ error: "Missing provider query parameter" }, { status: 400 });
1270
- }
1271
- if (!sessionToken) {
1272
- return Response.json({ error: "Missing X-Session-Token header" }, { status: 400 });
1273
- }
1274
- const result = await handler.handleStatus(provider, sessionToken);
1275
- return Response.json(result);
1276
- } catch (error) {
1277
- console.error("[OAuth Status] Error:", error);
1278
- return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
1279
- }
1280
- },
1281
- createRoutes() {
1282
- return {
1283
- async POST(req, context) {
1284
- const action = context.params.action;
1285
- if (action === "authorize") {
1286
- return handlers.authorize(req);
1287
- }
1288
- if (action === "callback") {
1289
- return handlers.callback(req);
1290
- }
1291
- return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
1292
- },
1293
- async GET(req, context) {
1294
- const action = context.params.action;
1295
- if (action === "status") {
1296
- return handlers.status(req);
1297
- }
1298
- return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
1299
- }
1300
- };
1301
- }
1302
- };
1303
- return handlers;
1304
- }
1329
+ // src/index.ts
1330
+ init_nextjs();
1331
+
1305
1332
  // src/adapters/tanstack-start.ts
1306
1333
  function createTanStackOAuthHandler(config) {
1307
1334
  const handler = new OAuthHandler(config);
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OAuth Routes Entry Point
3
+ *
4
+ * Import this in your framework's route file to automatically handle OAuth
5
+ *
6
+ * @example Next.js
7
+ * ```typescript
8
+ * // app/api/integrate/oauth/[action]/route.ts
9
+ * export * from 'integrate-sdk/oauth';
10
+ * ```
11
+ *
12
+ * @example TanStack Start
13
+ * ```typescript
14
+ * // app/routes/api/integrate/oauth/[action].ts
15
+ * export * from 'integrate-sdk/oauth';
16
+ * ```
17
+ */
18
+ export { POST, GET } from './src/adapters/auto-routes.js';
19
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/oauth.js CHANGED
@@ -1,4 +1,21 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
2
19
  var __export = (target, all) => {
3
20
  for (var name in all)
4
21
  __defProp(target, name, {
@@ -11,8 +28,6 @@ var __export = (target, all) => {
11
28
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
29
 
13
30
  // src/adapters/base-handler.ts
14
- var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
15
-
16
31
  class OAuthHandler {
17
32
  config;
18
33
  serverUrl = MCP_SERVER_URL;
@@ -93,12 +108,10 @@ class OAuthHandler {
93
108
  return data;
94
109
  }
95
110
  }
111
+ var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
96
112
 
97
113
  // src/adapters/auto-routes.ts
98
114
  var globalOAuthConfig = null;
99
- function setGlobalOAuthConfig(config) {
100
- globalOAuthConfig = config;
101
- }
102
115
  async function POST(req, context) {
103
116
  if (!globalOAuthConfig) {
104
117
  throw new Error("OAuth configuration not found. Did you configure oauthProviders in createMCPClient?");
package/dist/server.d.ts CHANGED
@@ -1,54 +1,11 @@
1
1
  /**
2
- * Server-Side SDK
3
- * Use this for server-side configuration with OAuth secrets
4
- */
5
- import { MCPClient } from './client.js';
6
- import type { MCPClientConfig } from './config/types.js';
7
- import type { MCPPlugin } from './plugins/types.js';
8
- /**
9
- * Create MCP Server instance with OAuth secrets
10
- *
11
- * This is for SERVER-SIDE ONLY - includes OAuth secrets from environment variables.
12
- * Use this in your server configuration file (e.g., lib/integrate-server.ts)
13
- *
14
- * @example
15
- * ```typescript
16
- * // lib/integrate-server.ts (server-side only!)
17
- * import { createMCPServer, githubPlugin, gmailPlugin } from 'integrate-sdk/server';
18
- *
19
- * export const { client: serverClient, handlers } = createMCPServer({
20
- * plugins: [
21
- * githubPlugin({
22
- * clientId: process.env.GITHUB_CLIENT_ID!,
23
- * clientSecret: process.env.GITHUB_CLIENT_SECRET!,
24
- * scopes: ['repo', 'user'],
25
- * }),
26
- * gmailPlugin({
27
- * clientId: process.env.GMAIL_CLIENT_ID!,
28
- * clientSecret: process.env.GMAIL_CLIENT_SECRET!,
29
- * scopes: ['gmail.readonly'],
30
- * }),
31
- * ],
32
- * });
33
- * ```
2
+ * Server-Side SDK Entry Point
3
+ * Re-exports from src/server.ts for convenience
34
4
  *
35
- * Then in your route file:
5
+ * Use this import for server-side configuration with OAuth secrets:
36
6
  * ```typescript
37
- * // app/api/integrate/oauth/[action]/route.ts
38
- * export * from 'integrate-sdk/oauth';
7
+ * import { createMCPServer, githubPlugin } from 'integrate-sdk/server';
39
8
  * ```
40
9
  */
41
- export declare function createMCPServer<TPlugins extends readonly MCPPlugin[]>(config: MCPClientConfig<TPlugins>): {
42
- /** Server-side MCP client instance */
43
- client: MCPClient<TPlugins>;
44
- /** OAuth route handlers (use by importing 'integrate-sdk/oauth' in your route file) */
45
- handlers: {
46
- info: string;
47
- };
48
- };
49
- export type { MCPPlugin } from './plugins/types.js';
50
- export type { MCPClientConfig } from './config/types.js';
51
- export { githubPlugin } from './plugins/github.js';
52
- export { gmailPlugin } from './plugins/gmail.js';
53
- export { genericOAuthPlugin, createSimplePlugin } from './plugins/generic.js';
10
+ export * from './src/server.js';
54
11
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,EACnE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;IA8C/B,sCAAsC;;IAGtC,uFAAuF;;;;EAK1F;AAGD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,iBAAiB,CAAC"}