skedyul 0.3.12 → 0.3.14
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/.build-stamp +1 -1
- package/dist/server/serverless.js +71 -0
- package/package.json +1 -1
package/dist/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1771711388656
|
|
@@ -422,6 +422,77 @@ function createServerlessInstance(config, tools, callTool, state, mcpServer, reg
|
|
|
422
422
|
}, headers);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
+
// Handle /provision endpoint for provision handlers
|
|
426
|
+
if (path === '/provision' && method === 'POST') {
|
|
427
|
+
console.log('[serverless] /provision endpoint called');
|
|
428
|
+
if (!config.hooks?.provision) {
|
|
429
|
+
console.log('[serverless] No provision handler configured');
|
|
430
|
+
return (0, utils_1.createResponse)(404, { error: 'Provision handler not configured' }, headers);
|
|
431
|
+
}
|
|
432
|
+
let provisionBody;
|
|
433
|
+
try {
|
|
434
|
+
provisionBody = event.body ? JSON.parse(event.body) : {};
|
|
435
|
+
console.log('[serverless] Provision body parsed:', {
|
|
436
|
+
hasEnv: !!provisionBody.env,
|
|
437
|
+
hasContext: !!provisionBody.context,
|
|
438
|
+
appId: provisionBody.context?.app?.id,
|
|
439
|
+
versionId: provisionBody.context?.app?.versionId,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
console.log('[serverless] Failed to parse provision body');
|
|
444
|
+
return (0, utils_1.createResponse)(400, { error: { code: -32700, message: 'Parse error' } }, headers);
|
|
445
|
+
}
|
|
446
|
+
if (!provisionBody.context?.app) {
|
|
447
|
+
console.log('[serverless] Missing app context in provision body');
|
|
448
|
+
return (0, utils_1.createResponse)(400, { error: { code: -32602, message: 'Missing context (app required)' } }, headers);
|
|
449
|
+
}
|
|
450
|
+
// SECURITY: Merge process.env (baked-in secrets) with request env (API token).
|
|
451
|
+
// This ensures secrets like MAILGUN_API_KEY come from the container,
|
|
452
|
+
// while runtime values like SKEDYUL_API_TOKEN come from the request.
|
|
453
|
+
const mergedEnv = {};
|
|
454
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
455
|
+
if (value !== undefined) {
|
|
456
|
+
mergedEnv[key] = value;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// Request env overrides process.env (e.g., for SKEDYUL_API_TOKEN)
|
|
460
|
+
Object.assign(mergedEnv, provisionBody.env ?? {});
|
|
461
|
+
const provisionContext = {
|
|
462
|
+
env: mergedEnv,
|
|
463
|
+
app: provisionBody.context.app,
|
|
464
|
+
invocation: provisionBody.invocation,
|
|
465
|
+
log: (0, logger_1.createContextLogger)(),
|
|
466
|
+
};
|
|
467
|
+
// Build request-scoped config for SDK access
|
|
468
|
+
const provisionRequestConfig = {
|
|
469
|
+
baseUrl: mergedEnv.SKEDYUL_API_URL ?? '',
|
|
470
|
+
apiToken: mergedEnv.SKEDYUL_API_TOKEN ?? '',
|
|
471
|
+
};
|
|
472
|
+
console.log('[serverless] Calling provision handler...');
|
|
473
|
+
try {
|
|
474
|
+
const provisionHook = config.hooks.provision;
|
|
475
|
+
const provisionHandler = typeof provisionHook === 'function'
|
|
476
|
+
? provisionHook
|
|
477
|
+
: provisionHook.handler;
|
|
478
|
+
const result = await (0, context_logger_1.runWithLogContext)({ invocation: provisionBody.invocation }, async () => {
|
|
479
|
+
return await (0, client_1.runWithConfig)(provisionRequestConfig, async () => {
|
|
480
|
+
return await provisionHandler(provisionContext);
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
console.log('[serverless] Provision handler completed successfully');
|
|
484
|
+
return (0, utils_1.createResponse)(200, result, headers);
|
|
485
|
+
}
|
|
486
|
+
catch (err) {
|
|
487
|
+
console.error('[serverless] Provision handler failed:', err instanceof Error ? err.message : String(err));
|
|
488
|
+
return (0, utils_1.createResponse)(500, {
|
|
489
|
+
error: {
|
|
490
|
+
code: -32603,
|
|
491
|
+
message: err instanceof Error ? err.message : String(err ?? ''),
|
|
492
|
+
},
|
|
493
|
+
}, headers);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
425
496
|
// Handle /oauth_callback endpoint for OAuth callbacks (called by platform route)
|
|
426
497
|
if (path === '/oauth_callback' && method === 'POST') {
|
|
427
498
|
if (!config.hooks?.oauth_callback) {
|