integrate-sdk 0.8.60-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 +156 -29
- package/dist/adapters/index.js +153 -26
- package/dist/adapters/nextjs.js +153 -26
- package/dist/adapters/node.js +153 -26
- package/dist/adapters/svelte-kit.js +153 -26
- package/dist/adapters/tanstack-start.js +153 -26
- package/dist/index.js +153 -20
- package/dist/oauth.js +147 -20
- package/dist/server.js +140 -13
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.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
|
@@ -7924,6 +7924,7 @@ var init_nanoid = __esm(() => {
|
|
|
7924
7924
|
// ../triggers/utils.ts
|
|
7925
7925
|
var exports_utils = {};
|
|
7926
7926
|
__export(exports_utils, {
|
|
7927
|
+
validateStepLimit: () => validateStepLimit,
|
|
7927
7928
|
validateStatusTransition: () => validateStatusTransition,
|
|
7928
7929
|
generateTriggerId: () => generateTriggerId,
|
|
7929
7930
|
extractProviderFromToolName: () => extractProviderFromToolName,
|
|
@@ -7951,6 +7952,15 @@ function validateStatusTransition(currentStatus, targetStatus) {
|
|
|
7951
7952
|
}
|
|
7952
7953
|
return { valid: true };
|
|
7953
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
|
+
}
|
|
7954
7964
|
function calculateHasMore(offset, returnedCount, total) {
|
|
7955
7965
|
return offset + returnedCount < total;
|
|
7956
7966
|
}
|
|
@@ -9958,6 +9968,69 @@ var init_ai = __esm(() => {
|
|
|
9958
9968
|
init_trigger_tools();
|
|
9959
9969
|
});
|
|
9960
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
|
+
|
|
9961
10034
|
// ../server.ts
|
|
9962
10035
|
var exports_server = {};
|
|
9963
10036
|
__export(exports_server, {
|
|
@@ -10051,7 +10124,7 @@ function createMCPServer(config) {
|
|
|
10051
10124
|
if (integration.oauth) {
|
|
10052
10125
|
const { clientId, clientSecret, redirectUri: integrationRedirectUri, config: oauthConfig } = integration.oauth;
|
|
10053
10126
|
if (!clientId || !clientSecret) {
|
|
10054
|
-
|
|
10127
|
+
logger30.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
|
|
10055
10128
|
return integration;
|
|
10056
10129
|
}
|
|
10057
10130
|
const redirectUri = integrationRedirectUri || config.redirectUri || getDefaultRedirectUri();
|
|
@@ -10182,7 +10255,7 @@ function createMCPServer(config) {
|
|
|
10182
10255
|
}
|
|
10183
10256
|
return response2;
|
|
10184
10257
|
} catch (error) {
|
|
10185
|
-
|
|
10258
|
+
logger30.error("[MCP Tool Call] Error:", error);
|
|
10186
10259
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
10187
10260
|
}
|
|
10188
10261
|
}
|
|
@@ -10258,7 +10331,7 @@ function createMCPServer(config) {
|
|
|
10258
10331
|
})
|
|
10259
10332
|
});
|
|
10260
10333
|
} catch (scheduleError) {
|
|
10261
|
-
|
|
10334
|
+
logger30.error("[Trigger] Failed to register with scheduler:", scheduleError);
|
|
10262
10335
|
}
|
|
10263
10336
|
return Response.json(created, { status: 201 });
|
|
10264
10337
|
}
|
|
@@ -10293,7 +10366,7 @@ function createMCPServer(config) {
|
|
|
10293
10366
|
body: JSON.stringify({ triggerId })
|
|
10294
10367
|
});
|
|
10295
10368
|
} catch (error) {
|
|
10296
|
-
|
|
10369
|
+
logger30.error("[Trigger] Failed to pause in scheduler:", error);
|
|
10297
10370
|
}
|
|
10298
10371
|
return Response.json(updated);
|
|
10299
10372
|
} else if (subAction === "resume" && method === "POST") {
|
|
@@ -10321,7 +10394,7 @@ function createMCPServer(config) {
|
|
|
10321
10394
|
body: JSON.stringify({ triggerId })
|
|
10322
10395
|
});
|
|
10323
10396
|
} catch (error) {
|
|
10324
|
-
|
|
10397
|
+
logger30.error("[Trigger] Failed to resume in scheduler:", error);
|
|
10325
10398
|
}
|
|
10326
10399
|
return Response.json(updated);
|
|
10327
10400
|
} else if (subAction === "run" && method === "POST") {
|
|
@@ -10414,6 +10487,60 @@ function createMCPServer(config) {
|
|
|
10414
10487
|
if (!trigger) {
|
|
10415
10488
|
return Response.json({ error: "Trigger not found" }, { status: 404 });
|
|
10416
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
|
+
}
|
|
10417
10544
|
const updates = {
|
|
10418
10545
|
lastRunAt: body.executedAt,
|
|
10419
10546
|
runCount: (trigger.runCount || 0) + 1
|
|
@@ -10462,7 +10589,7 @@ function createMCPServer(config) {
|
|
|
10462
10589
|
})
|
|
10463
10590
|
});
|
|
10464
10591
|
} catch (error) {
|
|
10465
|
-
|
|
10592
|
+
logger30.error("[Trigger] Failed to update scheduler:", error);
|
|
10466
10593
|
}
|
|
10467
10594
|
}
|
|
10468
10595
|
return Response.json(updated);
|
|
@@ -10479,14 +10606,14 @@ function createMCPServer(config) {
|
|
|
10479
10606
|
body: JSON.stringify({ triggerId })
|
|
10480
10607
|
});
|
|
10481
10608
|
} catch (error) {
|
|
10482
|
-
|
|
10609
|
+
logger30.error("[Trigger] Failed to unregister from scheduler:", error);
|
|
10483
10610
|
}
|
|
10484
10611
|
return new Response(null, { status: 204 });
|
|
10485
10612
|
}
|
|
10486
10613
|
}
|
|
10487
10614
|
return Response.json({ error: "Invalid trigger route or method" }, { status: 404 });
|
|
10488
10615
|
} catch (error) {
|
|
10489
|
-
|
|
10616
|
+
logger30.error("[Trigger] Error:", error);
|
|
10490
10617
|
return Response.json({ error: error.message || "Failed to process trigger request" }, { status: error.statusCode || 500 });
|
|
10491
10618
|
}
|
|
10492
10619
|
}
|
|
@@ -10512,11 +10639,11 @@ function createMCPServer(config) {
|
|
|
10512
10639
|
const errorRedirectUrl = "/auth-error";
|
|
10513
10640
|
if (error) {
|
|
10514
10641
|
const errorMsg = errorDescription || error;
|
|
10515
|
-
|
|
10642
|
+
logger30.error("[OAuth Redirect] Error:", errorMsg);
|
|
10516
10643
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
|
|
10517
10644
|
}
|
|
10518
10645
|
if (!code || !state) {
|
|
10519
|
-
|
|
10646
|
+
logger30.error("[OAuth Redirect] Missing code or state parameter");
|
|
10520
10647
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
|
|
10521
10648
|
}
|
|
10522
10649
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -10592,7 +10719,7 @@ function createMCPServer(config) {
|
|
|
10592
10719
|
frontendUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state, tokenData }))}`;
|
|
10593
10720
|
return Response.redirect(frontendUrl);
|
|
10594
10721
|
} catch (error2) {
|
|
10595
|
-
|
|
10722
|
+
logger30.error("[OAuth Backend Callback] Error:", error2);
|
|
10596
10723
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
|
|
10597
10724
|
}
|
|
10598
10725
|
} else {
|
|
@@ -10811,7 +10938,7 @@ function toSvelteKitHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
|
10811
10938
|
}
|
|
10812
10939
|
};
|
|
10813
10940
|
}
|
|
10814
|
-
var SERVER_LOG_CONTEXT = "server",
|
|
10941
|
+
var SERVER_LOG_CONTEXT = "server", logger30, globalServerConfig = null, codeVerifierStorage, POST = async (req, context) => {
|
|
10815
10942
|
if (!globalServerConfig) {
|
|
10816
10943
|
return Response.json({ error: "OAuth not configured. Call createMCPServer() in your server initialization file first." }, { status: 500 });
|
|
10817
10944
|
}
|
|
@@ -10859,7 +10986,7 @@ var init_server = __esm(() => {
|
|
|
10859
10986
|
init_anthropic();
|
|
10860
10987
|
init_google();
|
|
10861
10988
|
init_ai();
|
|
10862
|
-
|
|
10989
|
+
logger30 = createLogger("MCPServer", SERVER_LOG_CONTEXT);
|
|
10863
10990
|
codeVerifierStorage = new Map;
|
|
10864
10991
|
});
|
|
10865
10992
|
|
|
@@ -11372,11 +11499,11 @@ class OAuthHandler {
|
|
|
11372
11499
|
try {
|
|
11373
11500
|
await this.config.removeProviderToken(request.provider, undefined, context);
|
|
11374
11501
|
} catch (error) {
|
|
11375
|
-
|
|
11502
|
+
logger31.error(`Failed to delete token for ${request.provider} from database via removeProviderToken:`, error);
|
|
11376
11503
|
}
|
|
11377
11504
|
}
|
|
11378
11505
|
} catch (error) {
|
|
11379
|
-
|
|
11506
|
+
logger31.error(`Failed to extract context for disconnect:`, error);
|
|
11380
11507
|
}
|
|
11381
11508
|
}
|
|
11382
11509
|
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
@@ -11436,10 +11563,10 @@ class OAuthHandler {
|
|
|
11436
11563
|
return jsonRpcResponse.result;
|
|
11437
11564
|
}
|
|
11438
11565
|
}
|
|
11439
|
-
var SERVER_LOG_CONTEXT2 = "server",
|
|
11566
|
+
var SERVER_LOG_CONTEXT2 = "server", logger31, MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
11440
11567
|
var init_base_handler = __esm(() => {
|
|
11441
11568
|
init_logger();
|
|
11442
|
-
|
|
11569
|
+
logger31 = createLogger("OAuthHandler", SERVER_LOG_CONTEXT2);
|
|
11443
11570
|
});
|
|
11444
11571
|
|
|
11445
11572
|
// nextjs.ts
|
|
@@ -11458,7 +11585,7 @@ function createNextOAuthHandler(config) {
|
|
|
11458
11585
|
}
|
|
11459
11586
|
return response;
|
|
11460
11587
|
} catch (error) {
|
|
11461
|
-
|
|
11588
|
+
logger32.error("[OAuth Authorize] Error:", error);
|
|
11462
11589
|
return Response.json({ error: error.message || "Failed to get authorization URL" }, { status: 500 });
|
|
11463
11590
|
}
|
|
11464
11591
|
},
|
|
@@ -11474,7 +11601,7 @@ function createNextOAuthHandler(config) {
|
|
|
11474
11601
|
}
|
|
11475
11602
|
return response;
|
|
11476
11603
|
} catch (error) {
|
|
11477
|
-
|
|
11604
|
+
logger32.error("[OAuth Callback] Error:", error);
|
|
11478
11605
|
return Response.json({ error: error.message || "Failed to exchange authorization code" }, { status: 500 });
|
|
11479
11606
|
}
|
|
11480
11607
|
},
|
|
@@ -11496,7 +11623,7 @@ function createNextOAuthHandler(config) {
|
|
|
11496
11623
|
}
|
|
11497
11624
|
return response;
|
|
11498
11625
|
} catch (error) {
|
|
11499
|
-
|
|
11626
|
+
logger32.error("[OAuth Status] Error:", error);
|
|
11500
11627
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
11501
11628
|
}
|
|
11502
11629
|
},
|
|
@@ -11519,7 +11646,7 @@ function createNextOAuthHandler(config) {
|
|
|
11519
11646
|
}
|
|
11520
11647
|
return response;
|
|
11521
11648
|
} catch (error) {
|
|
11522
|
-
|
|
11649
|
+
logger32.error("[OAuth Disconnect] Error:", error);
|
|
11523
11650
|
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
11524
11651
|
}
|
|
11525
11652
|
},
|
|
@@ -11560,7 +11687,7 @@ function createNextOAuthHandler(config) {
|
|
|
11560
11687
|
const result = await handler.handleToolCall(body, authHeader, integrationsHeader);
|
|
11561
11688
|
return Response.json(result);
|
|
11562
11689
|
} catch (error) {
|
|
11563
|
-
|
|
11690
|
+
logger32.error("[MCP Tool Call] Error:", error);
|
|
11564
11691
|
return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
|
|
11565
11692
|
}
|
|
11566
11693
|
},
|
|
@@ -11605,11 +11732,11 @@ function createNextOAuthHandler(config) {
|
|
|
11605
11732
|
const errorDescription = searchParams.get("error_description");
|
|
11606
11733
|
if (error) {
|
|
11607
11734
|
const errorMsg = errorDescription || error;
|
|
11608
|
-
|
|
11735
|
+
logger32.error("[OAuth Redirect] Error:", errorMsg);
|
|
11609
11736
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, req.url));
|
|
11610
11737
|
}
|
|
11611
11738
|
if (!code || !state) {
|
|
11612
|
-
|
|
11739
|
+
logger32.error("[OAuth Redirect] Missing code or state parameter");
|
|
11613
11740
|
return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, req.url));
|
|
11614
11741
|
}
|
|
11615
11742
|
let returnUrl = defaultRedirectUrl;
|
|
@@ -11648,18 +11775,18 @@ function createNextOAuthHandler(config) {
|
|
|
11648
11775
|
};
|
|
11649
11776
|
return handlers;
|
|
11650
11777
|
}
|
|
11651
|
-
var SERVER_LOG_CONTEXT3 = "server",
|
|
11778
|
+
var SERVER_LOG_CONTEXT3 = "server", logger32;
|
|
11652
11779
|
var init_nextjs = __esm(() => {
|
|
11653
11780
|
init_base_handler();
|
|
11654
11781
|
init_logger();
|
|
11655
|
-
|
|
11782
|
+
logger32 = createLogger("NextJSOAuth", SERVER_LOG_CONTEXT3);
|
|
11656
11783
|
});
|
|
11657
11784
|
|
|
11658
11785
|
// auto-routes.ts
|
|
11659
11786
|
init_base_handler();
|
|
11660
11787
|
init_logger();
|
|
11661
11788
|
var SERVER_LOG_CONTEXT4 = "server";
|
|
11662
|
-
var
|
|
11789
|
+
var logger33 = createLogger("AutoRoutes", SERVER_LOG_CONTEXT4);
|
|
11663
11790
|
var globalOAuthConfig = null;
|
|
11664
11791
|
function setGlobalOAuthConfig(config) {
|
|
11665
11792
|
globalOAuthConfig = config;
|
|
@@ -11707,7 +11834,7 @@ async function POST2(req, context) {
|
|
|
11707
11834
|
}
|
|
11708
11835
|
return createErrorResponse(`Unknown action: ${action}`, 404);
|
|
11709
11836
|
} catch (error) {
|
|
11710
|
-
|
|
11837
|
+
logger33.error(`[OAuth ${action}] Error:`, error);
|
|
11711
11838
|
return createErrorResponse(error.message, 500);
|
|
11712
11839
|
}
|
|
11713
11840
|
}
|
|
@@ -11735,7 +11862,7 @@ async function GET2(req, context) {
|
|
|
11735
11862
|
}
|
|
11736
11863
|
return createErrorResponse(`Unknown action: ${action}`, 404);
|
|
11737
11864
|
} catch (error) {
|
|
11738
|
-
|
|
11865
|
+
logger33.error(`[OAuth ${action}] Error:`, error);
|
|
11739
11866
|
return createErrorResponse(error.message, 500);
|
|
11740
11867
|
}
|
|
11741
11868
|
}
|