-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
component-e2bE2B sandbox integrationE2B sandbox integrationenhancementNew feature or requestNew feature or requestphase-2-multi-providerPhase 2: Multi-provider sandbox architecture (v2.5)Phase 2: Multi-provider sandbox architecture (v2.5)priority-mediumMedium priority - next milestoneMedium priority - next milestone
Description
Overview
Create a registry system for managing multiple sandbox providers and a factory for creating provider instances.
Design
Provider Registry
// src/e2b/providers/registry.ts
export class ProviderRegistry {
private providers: Map<string, SandboxProvider> = new Map();
register(provider: SandboxProvider): void {
this.providers.set(provider.name, provider);
}
get(name: string): SandboxProvider | undefined {
return this.providers.get(name);
}
list(): string[] {
return Array.from(this.providers.keys());
}
getDefault(): SandboxProvider {
// Return based on config or first available
}
}Provider Factory
// src/e2b/providers/factory.ts
export function createProvider(
name: string,
config?: ProviderConfig
): SandboxProvider {
switch (name) {
case 'e2b':
return new E2BProvider(config);
case 'native':
return new NativeProvider(config);
case 'docker':
return new DockerProvider(config);
default:
throw new Error(\`Unknown provider: \${name}\`);
}
}Auto-Discovery
// Auto-discover available providers on startup
async function discoverProviders(): Promise<string[]> {
const available: string[] = [];
if (await E2BProvider.isAvailable()) available.push('e2b');
if (await NativeProvider.isAvailable()) available.push('native');
if (await DockerProvider.isAvailable()) available.push('docker');
return available;
}Configuration
// ~/.parallel-cc/config.json
{
"sandbox": {
"defaultProvider": "e2b",
"fallbackChain": ["native", "docker"],
"providers": {
"e2b": {
"template": "anthropic-claude-code"
},
"docker": {
"image": "claude-code:latest"
}
}
}
}Files to Create
src/e2b/providers/registry.tssrc/e2b/providers/factory.tssrc/e2b/providers/discovery.ts
Acceptance Criteria
- Registry can manage multiple providers
- Factory creates correct provider types
- Auto-discovery detects available providers
- Configuration file respected
- Fallback chain works correctly
Dependencies
- Depends on [v2.5] Define SandboxProvider interface and types #30 (SandboxProvider interface)
- Depends on [v2.5] Refactor E2B code into E2BProvider class #31 (E2BProvider)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
component-e2bE2B sandbox integrationE2B sandbox integrationenhancementNew feature or requestNew feature or requestphase-2-multi-providerPhase 2: Multi-provider sandbox architecture (v2.5)Phase 2: Multi-provider sandbox architecture (v2.5)priority-mediumMedium priority - next milestoneMedium priority - next milestone