integrate-sdk 0.8.59-dev.0 → 0.8.61-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.js +226 -32
- package/dist/adapters/index.js +223 -29
- package/dist/adapters/nextjs.js +223 -29
- package/dist/adapters/node.js +223 -29
- package/dist/adapters/svelte-kit.js +223 -29
- package/dist/adapters/tanstack-start.js +223 -29
- package/dist/index.js +223 -23
- package/dist/oauth.js +217 -23
- package/dist/server.js +210 -16
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/integrations/airtable-client.d.ts +210 -0
- package/dist/src/integrations/airtable-client.d.ts.map +1 -1
- package/dist/src/integrations/airtable.d.ts +2 -2
- package/dist/src/integrations/airtable.d.ts.map +1 -1
- package/dist/src/integrations/calcom-client.d.ts +334 -0
- package/dist/src/integrations/calcom-client.d.ts.map +1 -1
- package/dist/src/integrations/calcom.d.ts +2 -2
- package/dist/src/integrations/calcom.d.ts.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/triggers/index.d.ts +4 -2
- package/dist/src/triggers/index.d.ts.map +1 -1
- package/dist/src/triggers/types.d.ts +109 -0
- package/dist/src/triggers/types.d.ts.map +1 -1
- package/dist/src/triggers/utils.d.ts +20 -0
- package/dist/src/triggers/utils.d.ts.map +1 -1
- package/dist/src/triggers/webhooks.d.ts +28 -0
- package/dist/src/triggers/webhooks.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -3055,7 +3055,15 @@ function airtableIntegration(config = {}) {
|
|
|
3055
3055
|
provider: "airtable",
|
|
3056
3056
|
clientId: config.clientId ?? getEnv("AIRTABLE_CLIENT_ID"),
|
|
3057
3057
|
clientSecret: config.clientSecret ?? getEnv("AIRTABLE_CLIENT_SECRET"),
|
|
3058
|
-
scopes: config.scopes || [
|
|
3058
|
+
scopes: config.scopes || [
|
|
3059
|
+
"data.records:read",
|
|
3060
|
+
"data.records:write",
|
|
3061
|
+
"data.recordComments:read",
|
|
3062
|
+
"data.recordComments:write",
|
|
3063
|
+
"schema.bases:read",
|
|
3064
|
+
"schema.bases:write",
|
|
3065
|
+
"webhook:manage"
|
|
3066
|
+
],
|
|
3059
3067
|
redirectUri: config.redirectUri,
|
|
3060
3068
|
config: {
|
|
3061
3069
|
...config
|
|
@@ -3088,7 +3096,22 @@ var init_airtable = __esm(() => {
|
|
|
3088
3096
|
"airtable_get_record",
|
|
3089
3097
|
"airtable_create_record",
|
|
3090
3098
|
"airtable_update_record",
|
|
3091
|
-
"airtable_search_records"
|
|
3099
|
+
"airtable_search_records",
|
|
3100
|
+
"airtable_delete_record",
|
|
3101
|
+
"airtable_create_base",
|
|
3102
|
+
"airtable_create_table",
|
|
3103
|
+
"airtable_update_table",
|
|
3104
|
+
"airtable_create_field",
|
|
3105
|
+
"airtable_update_field",
|
|
3106
|
+
"airtable_list_comments",
|
|
3107
|
+
"airtable_create_comment",
|
|
3108
|
+
"airtable_update_comment",
|
|
3109
|
+
"airtable_delete_comment",
|
|
3110
|
+
"airtable_list_webhooks",
|
|
3111
|
+
"airtable_create_webhook",
|
|
3112
|
+
"airtable_delete_webhook",
|
|
3113
|
+
"airtable_list_webhook_payloads",
|
|
3114
|
+
"airtable_refresh_webhook"
|
|
3092
3115
|
];
|
|
3093
3116
|
});
|
|
3094
3117
|
|
|
@@ -3184,7 +3207,7 @@ function calcomIntegration(config = {}) {
|
|
|
3184
3207
|
provider: "calcom",
|
|
3185
3208
|
clientId: config.clientId ?? getEnv("CALCOM_CLIENT_ID"),
|
|
3186
3209
|
clientSecret: config.clientSecret ?? getEnv("CALCOM_CLIENT_SECRET"),
|
|
3187
|
-
scopes: config.scopes || ["
|
|
3210
|
+
scopes: config.scopes || ["READ_BOOKING", "WRITE_BOOKING", "READ_PROFILE", "WRITE_PROFILE"],
|
|
3188
3211
|
redirectUri: config.redirectUri,
|
|
3189
3212
|
config: {
|
|
3190
3213
|
apiBaseUrl: config.apiBaseUrl || "https://api.cal.com/v1",
|
|
@@ -3215,9 +3238,53 @@ var init_calcom = __esm(() => {
|
|
|
3215
3238
|
"calcom_create_booking",
|
|
3216
3239
|
"calcom_cancel_booking",
|
|
3217
3240
|
"calcom_reschedule_booking",
|
|
3241
|
+
"calcom_update_booking",
|
|
3242
|
+
"calcom_get_booking_recordings",
|
|
3243
|
+
"calcom_get_booking_transcripts",
|
|
3218
3244
|
"calcom_list_event_types",
|
|
3245
|
+
"calcom_get_event_type",
|
|
3246
|
+
"calcom_create_event_type",
|
|
3247
|
+
"calcom_update_event_type",
|
|
3248
|
+
"calcom_delete_event_type",
|
|
3249
|
+
"calcom_list_team_event_types",
|
|
3219
3250
|
"calcom_get_availability",
|
|
3251
|
+
"calcom_get_availability_rule",
|
|
3252
|
+
"calcom_create_availability_rule",
|
|
3253
|
+
"calcom_update_availability_rule",
|
|
3254
|
+
"calcom_delete_availability_rule",
|
|
3220
3255
|
"calcom_list_schedules",
|
|
3256
|
+
"calcom_get_schedule",
|
|
3257
|
+
"calcom_create_schedule",
|
|
3258
|
+
"calcom_update_schedule",
|
|
3259
|
+
"calcom_delete_schedule",
|
|
3260
|
+
"calcom_get_slots",
|
|
3261
|
+
"calcom_list_attendees",
|
|
3262
|
+
"calcom_get_attendee",
|
|
3263
|
+
"calcom_create_attendee",
|
|
3264
|
+
"calcom_update_attendee",
|
|
3265
|
+
"calcom_delete_attendee",
|
|
3266
|
+
"calcom_list_teams",
|
|
3267
|
+
"calcom_get_team",
|
|
3268
|
+
"calcom_create_team",
|
|
3269
|
+
"calcom_update_team",
|
|
3270
|
+
"calcom_delete_team",
|
|
3271
|
+
"calcom_list_memberships",
|
|
3272
|
+
"calcom_get_membership",
|
|
3273
|
+
"calcom_create_membership",
|
|
3274
|
+
"calcom_update_membership",
|
|
3275
|
+
"calcom_delete_membership",
|
|
3276
|
+
"calcom_list_webhooks",
|
|
3277
|
+
"calcom_get_webhook",
|
|
3278
|
+
"calcom_create_webhook",
|
|
3279
|
+
"calcom_update_webhook",
|
|
3280
|
+
"calcom_delete_webhook",
|
|
3281
|
+
"calcom_list_payments",
|
|
3282
|
+
"calcom_get_payment",
|
|
3283
|
+
"calcom_list_users",
|
|
3284
|
+
"calcom_get_user",
|
|
3285
|
+
"calcom_create_user",
|
|
3286
|
+
"calcom_update_user",
|
|
3287
|
+
"calcom_delete_user",
|
|
3221
3288
|
"calcom_get_me"
|
|
3222
3289
|
];
|
|
3223
3290
|
});
|
|
@@ -7857,6 +7924,7 @@ var init_nanoid = __esm(() => {
|
|
|
7857
7924
|
// ../triggers/utils.ts
|
|
7858
7925
|
var exports_utils = {};
|
|
7859
7926
|
__export(exports_utils, {
|
|
7927
|
+
validateStepLimit: () => validateStepLimit,
|
|
7860
7928
|
validateStatusTransition: () => validateStatusTransition,
|
|
7861
7929
|
generateTriggerId: () => generateTriggerId,
|
|
7862
7930
|
extractProviderFromToolName: () => extractProviderFromToolName,
|
|
@@ -7884,6 +7952,15 @@ function validateStatusTransition(currentStatus, targetStatus) {
|
|
|
7884
7952
|
}
|
|
7885
7953
|
return { valid: true };
|
|
7886
7954
|
}
|
|
7955
|
+
function validateStepLimit(stepIndex, maxSteps) {
|
|
7956
|
+
if (stepIndex >= maxSteps) {
|
|
7957
|
+
return {
|
|
7958
|
+
valid: false,
|
|
7959
|
+
error: `Step index ${stepIndex} exceeds maximum of ${maxSteps} steps`
|
|
7960
|
+
};
|
|
7961
|
+
}
|
|
7962
|
+
return { valid: true };
|
|
7963
|
+
}
|
|
7887
7964
|
function calculateHasMore(offset, returnedCount, total) {
|
|
7888
7965
|
return offset + returnedCount < total;
|
|
7889
7966
|
}
|
|
@@ -9891,6 +9968,69 @@ var init_ai = __esm(() => {
|
|
|
9891
9968
|
init_trigger_tools();
|
|
9892
9969
|
});
|
|
9893
9970
|
|
|
9971
|
+
// ../triggers/types.ts
|
|
9972
|
+
var exports_types = {};
|
|
9973
|
+
__export(exports_types, {
|
|
9974
|
+
WEBHOOK_DELIVERY_TIMEOUT_MS: () => WEBHOOK_DELIVERY_TIMEOUT_MS,
|
|
9975
|
+
MAX_TRIGGER_STEPS: () => MAX_TRIGGER_STEPS
|
|
9976
|
+
});
|
|
9977
|
+
var MAX_TRIGGER_STEPS = 20, WEBHOOK_DELIVERY_TIMEOUT_MS = 1e4;
|
|
9978
|
+
|
|
9979
|
+
// ../triggers/webhooks.ts
|
|
9980
|
+
var exports_webhooks = {};
|
|
9981
|
+
__export(exports_webhooks, {
|
|
9982
|
+
signPayload: () => signPayload,
|
|
9983
|
+
deliverWebhooks: () => deliverWebhooks,
|
|
9984
|
+
deliverWebhook: () => deliverWebhook
|
|
9985
|
+
});
|
|
9986
|
+
async function signPayload(payload, secret) {
|
|
9987
|
+
const encoder = new TextEncoder;
|
|
9988
|
+
const data = encoder.encode(JSON.stringify(payload));
|
|
9989
|
+
const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
9990
|
+
const signature = await crypto.subtle.sign("HMAC", key, data);
|
|
9991
|
+
return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
9992
|
+
}
|
|
9993
|
+
async function deliverWebhook(webhook, payload, timeoutMs) {
|
|
9994
|
+
const headers = {
|
|
9995
|
+
"Content-Type": "application/json",
|
|
9996
|
+
...webhook.headers
|
|
9997
|
+
};
|
|
9998
|
+
if (webhook.secret) {
|
|
9999
|
+
headers["X-Webhook-Signature"] = await signPayload(payload, webhook.secret);
|
|
10000
|
+
}
|
|
10001
|
+
const controller = new AbortController;
|
|
10002
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
10003
|
+
try {
|
|
10004
|
+
const response = await fetch(webhook.url, {
|
|
10005
|
+
method: "POST",
|
|
10006
|
+
headers,
|
|
10007
|
+
body: JSON.stringify(payload),
|
|
10008
|
+
signal: controller.signal
|
|
10009
|
+
});
|
|
10010
|
+
if (!response.ok) {
|
|
10011
|
+
logger29.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
|
|
10012
|
+
}
|
|
10013
|
+
} finally {
|
|
10014
|
+
clearTimeout(timeout);
|
|
10015
|
+
}
|
|
10016
|
+
}
|
|
10017
|
+
async function deliverWebhooks(webhooks, payload, timeoutMs) {
|
|
10018
|
+
if (webhooks.length === 0)
|
|
10019
|
+
return;
|
|
10020
|
+
const results = await Promise.allSettled(webhooks.map((webhook) => deliverWebhook(webhook, payload, timeoutMs)));
|
|
10021
|
+
for (let i = 0;i < results.length; i++) {
|
|
10022
|
+
const result = results[i];
|
|
10023
|
+
if (result.status === "rejected") {
|
|
10024
|
+
logger29.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
|
|
10025
|
+
}
|
|
10026
|
+
}
|
|
10027
|
+
}
|
|
10028
|
+
var logger29;
|
|
10029
|
+
var init_webhooks = __esm(() => {
|
|
10030
|
+
init_logger();
|
|
10031
|
+
logger29 = createLogger("Webhooks", "server");
|
|
10032
|
+
});
|
|
10033
|
+
|
|
9894
10034
|
// ../server.ts
|
|
9895
10035
|
var exports_server = {};
|
|
9896
10036
|
__export(exports_server, {
|
|
@@ -9984,7 +10124,7 @@ function createMCPServer(config) {
|
|
|
9984
10124
|
if (integration.oauth) {
|
|
9985
10125
|
const { clientId, clientSecret, redirectUri: integrationRedirectUri, config: oauthConfig } = integration.oauth;
|
|
9986
10126
|
if (!clientId || !clientSecret) {
|
|
9987
|
-
|
|
10127
|
+
logger30.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
|
|
9988
10128
|
return integration;
|
|
9989
10129
|
}
|
|
9990
10130
|
const redirectUri = integrationRedirectUri || config.redirectUri || getDefaultRedirectUri();
|
|
@@ -10115,7 +10255,7 @@ function createMCPServer(config) {
|
|
|
10115
10255
|
}
|
|
10116
10256
|
return response2;
|
|
10117
10257
|
} catch (error) {
|
|
10118
|
-
|
|
10258
|
+
logger30.error("[MCP Tool Call] Error:", error);
|
|
10119
10259
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
10120
10260
|
}
|
|
10121
10261
|
}
|
|
@@ -10191,7 +10331,7 @@ function createMCPServer(config) {
|
|
|
10191
10331
|
})
|
|
10192
10332
|
});
|
|
10193
10333
|
} catch (scheduleError) {
|
|
10194
|
-
|
|
10334
|
+
logger30.error("[Trigger] Failed to register with scheduler:", scheduleError);
|
|
10195
10335
|
}
|
|
10196
10336
|
return Response.json(created, { status: 201 });
|
|
10197
10337
|
}
|
|
@@ -10226,7 +10366,7 @@ function createMCPServer(config) {
|
|
|
10226
10366
|
body: JSON.stringify({ triggerId })
|
|
10227
10367
|
});
|
|
10228
10368
|
} catch (error) {
|
|
10229
|
-
|
|
10369
|
+
logger30.error("[Trigger] Failed to pause in scheduler:", error);
|
|
10230
10370
|
}
|
|
10231
10371
|
return Response.json(updated);
|
|
10232
10372
|
} else if (subAction === "resume" && method === "POST") {
|
|
@@ -10254,7 +10394,7 @@ function createMCPServer(config) {
|
|
|
10254
10394
|
body: JSON.stringify({ triggerId })
|
|
10255
10395
|
});
|
|
10256
10396
|
} catch (error) {
|
|
10257
|
-
|
|
10397
|
+
logger30.error("[Trigger] Failed to resume in scheduler:", error);
|
|
10258
10398
|
}
|
|
10259
10399
|
return Response.json(updated);
|
|
10260
10400
|
} else if (subAction === "run" && method === "POST") {
|
|
@@ -10347,6 +10487,60 @@ function createMCPServer(config) {
|
|
|
10347
10487
|
if (!trigger) {
|
|
10348
10488
|
return Response.json({ error: "Trigger not found" }, { status: 404 });
|
|
10349
10489
|
}
|
|
10490
|
+
if (body.stepIndex != null) {
|
|
10491
|
+
const { validateStepLimit: validateStepLimit2 } = await Promise.resolve().then(() => (init_utils2(), exports_utils));
|
|
10492
|
+
const { MAX_TRIGGER_STEPS: MAX_TRIGGER_STEPS2 } = await Promise.resolve().then(() => exports_types);
|
|
10493
|
+
const stepValidation = validateStepLimit2(body.stepIndex, MAX_TRIGGER_STEPS2);
|
|
10494
|
+
if (!stepValidation.valid) {
|
|
10495
|
+
return Response.json({ error: stepValidation.error }, { status: 400 });
|
|
10496
|
+
}
|
|
10497
|
+
}
|
|
10498
|
+
if (config.triggers.onComplete) {
|
|
10499
|
+
try {
|
|
10500
|
+
const completeResponse = await config.triggers.onComplete({
|
|
10501
|
+
trigger,
|
|
10502
|
+
request: body,
|
|
10503
|
+
context: context2
|
|
10504
|
+
});
|
|
10505
|
+
if (completeResponse.hasMore) {
|
|
10506
|
+
return Response.json(completeResponse);
|
|
10507
|
+
}
|
|
10508
|
+
const updates2 = {
|
|
10509
|
+
lastRunAt: body.executedAt,
|
|
10510
|
+
runCount: (trigger.runCount || 0) + 1
|
|
10511
|
+
};
|
|
10512
|
+
if (body.success) {
|
|
10513
|
+
updates2.lastResult = body.result;
|
|
10514
|
+
updates2.lastError = undefined;
|
|
10515
|
+
if (trigger.schedule.type === "once") {
|
|
10516
|
+
updates2.status = "completed";
|
|
10517
|
+
}
|
|
10518
|
+
} else {
|
|
10519
|
+
updates2.lastError = body.error;
|
|
10520
|
+
updates2.status = "failed";
|
|
10521
|
+
}
|
|
10522
|
+
await config.triggers.update(triggerId, updates2, context2);
|
|
10523
|
+
if (completeResponse.webhooks && completeResponse.webhooks.length > 0) {
|
|
10524
|
+
const { deliverWebhooks: deliverWebhooks2 } = await Promise.resolve().then(() => (init_webhooks(), exports_webhooks));
|
|
10525
|
+
const { WEBHOOK_DELIVERY_TIMEOUT_MS: WEBHOOK_DELIVERY_TIMEOUT_MS2 } = await Promise.resolve().then(() => exports_types);
|
|
10526
|
+
const steps = body.previousResults || [];
|
|
10527
|
+
const totalDuration = steps.reduce((sum, s) => sum + (s.duration || 0), 0);
|
|
10528
|
+
const payload = {
|
|
10529
|
+
triggerId,
|
|
10530
|
+
success: body.success,
|
|
10531
|
+
steps,
|
|
10532
|
+
totalSteps: steps.length,
|
|
10533
|
+
totalDuration,
|
|
10534
|
+
executedAt: body.executedAt
|
|
10535
|
+
};
|
|
10536
|
+
deliverWebhooks2(completeResponse.webhooks, payload, WEBHOOK_DELIVERY_TIMEOUT_MS2).catch(() => {});
|
|
10537
|
+
}
|
|
10538
|
+
return Response.json(completeResponse);
|
|
10539
|
+
} catch (error) {
|
|
10540
|
+
logger30.error("onComplete callback error:", error);
|
|
10541
|
+
return Response.json({ error: "Internal server error in onComplete callback" }, { status: 500 });
|
|
10542
|
+
}
|
|
10543
|
+
}
|
|
10350
10544
|
const updates = {
|
|
10351
10545
|
lastRunAt: body.executedAt,
|
|
10352
10546
|
runCount: (trigger.runCount || 0) + 1
|
|
@@ -10395,7 +10589,7 @@ function createMCPServer(config) {
|
|
|
10395
10589
|
})
|
|
10396
10590
|
});
|
|
10397
10591
|
} catch (error) {
|
|
10398
|
-
|
|
10592
|
+
logger30.error("[Trigger] Failed to update scheduler:", error);
|
|
10399
10593
|
}
|
|
10400
10594
|
}
|
|
10401
10595
|
return Response.json(updated);
|
|
@@ -10412,14 +10606,14 @@ function createMCPServer(config) {
|
|
|
10412
10606
|
body: JSON.stringify({ triggerId })
|
|
10413
10607
|
});
|
|
10414
10608
|
} catch (error) {
|
|
10415
|
-
|
|
10609
|
+
logger30.error("[Trigger] Failed to unregister from scheduler:", error);
|
|
10416
10610
|
}
|
|
10417
10611
|
return new Response(null, { status: 204 });
|
|
10418
10612
|
}
|
|
10419
10613
|
}
|
|
10420
10614
|
return Response.json({ error: "Invalid trigger route or method" }, { status: 404 });
|
|
10421
10615
|
} catch (error) {
|
|
10422
|
-
|
|
10616
|
+
logger30.error("[Trigger] Error:", error);
|
|
10423
10617
|
return Response.json({ error: error.message || "Failed to process trigger request" }, { status: error.statusCode || 500 });
|
|
10424
10618
|
}
|
|
10425
10619
|
}
|
|
@@ -10445,11 +10639,11 @@ function createMCPServer(config) {
|
|
|
10445
10639
|
const errorRedirectUrl = "/auth-error";
|
|
10446
10640
|
if (error) {
|
|
10447
10641
|
const errorMsg = errorDescription || error;
|
|
10448
|
-
|
|
10642
|
+
logger30.error("[OAuth Redirect] Error:", errorMsg);
|
|
10449
10643
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
|
|
10450
10644
|
}
|
|
10451
10645
|
if (!code || !state) {
|
|
10452
|
-
|
|
10646
|
+
logger30.error("[OAuth Redirect] Missing code or state parameter");
|
|
10453
10647
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
|
|
10454
10648
|
}
|
|
10455
10649
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -10525,7 +10719,7 @@ function createMCPServer(config) {
|
|
|
10525
10719
|
frontendUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state, tokenData }))}`;
|
|
10526
10720
|
return Response.redirect(frontendUrl);
|
|
10527
10721
|
} catch (error2) {
|
|
10528
|
-
|
|
10722
|
+
logger30.error("[OAuth Backend Callback] Error:", error2);
|
|
10529
10723
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
|
|
10530
10724
|
}
|
|
10531
10725
|
} else {
|
|
@@ -10744,7 +10938,7 @@ function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
|
10744
10938
|
}
|
|
10745
10939
|
};
|
|
10746
10940
|
}
|
|
10747
|
-
var SERVER_LOG_CONTEXT = "server",
|
|
10941
|
+
var SERVER_LOG_CONTEXT = "server", logger30, globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
10748
10942
|
if (!globalServerConfig) {
|
|
10749
10943
|
return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
|
|
10750
10944
|
}
|
|
@@ -10792,7 +10986,7 @@ var init_server = __esm(() => {
|
|
|
10792
10986
|
init_anthropic();
|
|
10793
10987
|
init_google();
|
|
10794
10988
|
init_ai();
|
|
10795
|
-
|
|
10989
|
+
logger30 = createLogger("MCPServer", SERVER_LOG_CONTEXT);
|
|
10796
10990
|
codeVerifierStorage = new Map;
|
|
10797
10991
|
});
|
|
10798
10992
|
|
|
@@ -11305,11 +11499,11 @@ class OAuthHandler {
|
|
|
11305
11499
|
try {
|
|
11306
11500
|
await this.config.removeProviderToken(request.provider, undefined, context);
|
|
11307
11501
|
} catch (error) {
|
|
11308
|
-
|
|
11502
|
+
logger31.error(`Failed to delete token for ${request.provider} from database via removeProviderToken:`, error);
|
|
11309
11503
|
}
|
|
11310
11504
|
}
|
|
11311
11505
|
} catch (error) {
|
|
11312
|
-
|
|
11506
|
+
logger31.error(`Failed to extract context for disconnect:`, error);
|
|
11313
11507
|
}
|
|
11314
11508
|
}
|
|
11315
11509
|
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
@@ -11369,10 +11563,10 @@ class OAuthHandler {
|
|
|
11369
11563
|
return jsonRpcResponse.result;
|
|
11370
11564
|
}
|
|
11371
11565
|
}
|
|
11372
|
-
var SERVER_LOG_CONTEXT2 = "server",
|
|
11566
|
+
var SERVER_LOG_CONTEXT2 = "server", logger31, MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
11373
11567
|
var init_base_handler = __esm(() => {
|
|
11374
11568
|
init_logger();
|
|
11375
|
-
|
|
11569
|
+
logger31 = createLogger("OAuthHandler", SERVER_LOG_CONTEXT2);
|
|
11376
11570
|
});
|
|
11377
11571
|
|
|
11378
11572
|
// nextjs.ts
|
|
@@ -11391,7 +11585,7 @@ function createNextOAuthHandler(config) {
|
|
|
11391
11585
|
}
|
|
11392
11586
|
return response;
|
|
11393
11587
|
} catch (error) {
|
|
11394
|
-
|
|
11588
|
+
logger32.error("[OAuth Authorize] Error:", error);
|
|
11395
11589
|
return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
|
|
11396
11590
|
}
|
|
11397
11591
|
},
|
|
@@ -11407,7 +11601,7 @@ function createNextOAuthHandler(config) {
|
|
|
11407
11601
|
}
|
|
11408
11602
|
return response;
|
|
11409
11603
|
} catch (error) {
|
|
11410
|
-
|
|
11604
|
+
logger32.error("[OAuth Callback] Error:", error);
|
|
11411
11605
|
return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
|
|
11412
11606
|
}
|
|
11413
11607
|
},
|
|
@@ -11429,7 +11623,7 @@ function createNextOAuthHandler(config) {
|
|
|
11429
11623
|
}
|
|
11430
11624
|
return response;
|
|
11431
11625
|
} catch (error) {
|
|
11432
|
-
|
|
11626
|
+
logger32.error("[OAuth Status] Error:", error);
|
|
11433
11627
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
11434
11628
|
}
|
|
11435
11629
|
},
|
|
@@ -11452,7 +11646,7 @@ function createNextOAuthHandler(config) {
|
|
|
11452
11646
|
}
|
|
11453
11647
|
return response;
|
|
11454
11648
|
} catch (error) {
|
|
11455
|
-
|
|
11649
|
+
logger32.error("[OAuth Disconnect] Error:", error);
|
|
11456
11650
|
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
11457
11651
|
}
|
|
11458
11652
|
},
|
|
@@ -11493,7 +11687,7 @@ function createNextOAuthHandler(config) {
|
|
|
11493
11687
|
const result = await handler.handleToolCall(body, authHeader, integrationsHeader);
|
|
11494
11688
|
return Response.json(result);
|
|
11495
11689
|
} catch (error) {
|
|
11496
|
-
|
|
11690
|
+
logger32.error("[MCP Tool Call] Error:", error);
|
|
11497
11691
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
11498
11692
|
}
|
|
11499
11693
|
},
|
|
@@ -11538,11 +11732,11 @@ function createNextOAuthHandler(config) {
|
|
|
11538
11732
|
const errorDescription = searchParams.get("error_description");
|
|
11539
11733
|
if (error) {
|
|
11540
11734
|
const errorMsg = errorDescription || error;
|
|
11541
|
-
|
|
11735
|
+
logger32.error("[OAuth Redirect] Error:", errorMsg);
|
|
11542
11736
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, req.url));
|
|
11543
11737
|
}
|
|
11544
11738
|
if (!code || !state) {
|
|
11545
|
-
|
|
11739
|
+
logger32.error("[OAuth Redirect] Missing code or state parameter");
|
|
11546
11740
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, req.url));
|
|
11547
11741
|
}
|
|
11548
11742
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -11581,11 +11775,11 @@ function createNextOAuthHandler(config) {
|
|
|
11581
11775
|
};
|
|
11582
11776
|
return handlers;
|
|
11583
11777
|
}
|
|
11584
|
-
var SERVER_LOG_CONTEXT3 = "server",
|
|
11778
|
+
var SERVER_LOG_CONTEXT3 = "server", logger32;
|
|
11585
11779
|
var init_nextjs = __esm(() => {
|
|
11586
11780
|
init_base_handler();
|
|
11587
11781
|
init_logger();
|
|
11588
|
-
|
|
11782
|
+
logger32 = createLogger("NextJSOAuth", SERVER_LOG_CONTEXT3);
|
|
11589
11783
|
});
|
|
11590
11784
|
|
|
11591
11785
|
// svelte-kit.ts
|