Add v2 sandbox implementation with new API routes and sandbox library
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { SandboxProvider, SandboxProviderConfig } from './types';
|
||||
import { E2BProvider } from './providers/e2b-provider';
|
||||
import { VercelProvider } from './providers/vercel-provider';
|
||||
|
||||
export class SandboxFactory {
|
||||
static create(provider?: string, config?: SandboxProviderConfig): SandboxProvider {
|
||||
// Use environment variable if provider not specified
|
||||
const selectedProvider = provider || process.env.SANDBOX_PROVIDER || 'e2b';
|
||||
|
||||
console.log(`[SandboxFactory] Creating ${selectedProvider} provider`);
|
||||
|
||||
switch (selectedProvider.toLowerCase()) {
|
||||
case 'e2b':
|
||||
return new E2BProvider(config || {});
|
||||
|
||||
case 'vercel':
|
||||
return new VercelProvider(config || {});
|
||||
|
||||
default:
|
||||
throw new Error(`Unknown sandbox provider: ${selectedProvider}. Supported providers: e2b, vercel`);
|
||||
}
|
||||
}
|
||||
|
||||
static getAvailableProviders(): string[] {
|
||||
return ['e2b', 'vercel'];
|
||||
}
|
||||
|
||||
static isProviderAvailable(provider: string): boolean {
|
||||
switch (provider.toLowerCase()) {
|
||||
case 'e2b':
|
||||
return !!process.env.E2B_API_KEY;
|
||||
|
||||
case 'vercel':
|
||||
// Vercel can use OIDC (automatic) or PAT
|
||||
return !!process.env.VERCEL_OIDC_TOKEN ||
|
||||
(!!process.env.VERCEL_TOKEN && !!process.env.VERCEL_TEAM_ID && !!process.env.VERCEL_PROJECT_ID);
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user