- Replace community Deno runtime with @vercel/sandbox SDK - Next.js API routes create ephemeral sandbox VMs per execution - Each tool execution: create VM → npm install → run → cleanup - node22 runtime in sandbox handles npm packages natively - Region pinned to iad1 (only region with Sandbox support) - Proper authentication support via EXECUTOR_API_KEY This provides true isolation - each tool runs in its own VM that's destroyed after execution. More secure than shared serverless.
41 lines
947 B
TypeScript
41 lines
947 B
TypeScript
/**
|
|
* Health Check Endpoint
|
|
*
|
|
* GET /api/health
|
|
* Returns the health status of the executor
|
|
*/
|
|
|
|
import { NextResponse } from 'next/server';
|
|
|
|
export const runtime = 'nodejs';
|
|
export const dynamic = 'force-dynamic';
|
|
|
|
interface HealthResponse {
|
|
status: 'ok' | 'degraded' | 'error';
|
|
version?: string;
|
|
info?: Record<string, unknown>;
|
|
}
|
|
|
|
export async function GET(): Promise<NextResponse<HealthResponse>> {
|
|
return NextResponse.json({
|
|
status: 'ok',
|
|
version: '1.0.0',
|
|
info: {
|
|
runtime: 'vercel-sandbox',
|
|
region: 'iad1',
|
|
timestamp: new Date().toISOString(),
|
|
},
|
|
});
|
|
}
|
|
|
|
// Handle OPTIONS for CORS preflight
|
|
export async function OPTIONS(): Promise<NextResponse> {
|
|
return new NextResponse(null, {
|
|
status: 200,
|
|
headers: {
|
|
'Access-Control-Allow-Origin': '*',
|
|
'Access-Control-Allow-Methods': 'GET, OPTIONS',
|
|
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
|
|
},
|
|
});
|
|
}
|