Spaces:
Running
Running
| # Use lazy imports to avoid loading all backends unconditionally | |
| def _lazy_import_provider(provider_name: str): | |
| """Lazy import provider class""" | |
| if provider_name == 'mcp': | |
| from .mcp.provider import MCPProvider | |
| return MCPProvider | |
| elif provider_name == 'shell': | |
| from .shell.provider import ShellProvider | |
| return ShellProvider | |
| elif provider_name == 'web': | |
| from .web.provider import WebProvider | |
| return WebProvider | |
| elif provider_name == 'gui': | |
| from .gui.provider import GUIProvider | |
| return GUIProvider | |
| else: | |
| raise ImportError(f"Unknown provider: {provider_name}") | |
| class _ProviderRegistry: | |
| """Lazy provider registry""" | |
| def __getitem__(self, key): | |
| return _lazy_import_provider(key) | |
| def __contains__(self, key): | |
| return key in ['mcp', 'shell', 'web', 'gui'] | |
| BACKEND_PROVIDERS = _ProviderRegistry() | |
| __all__ = [ | |
| 'BACKEND_PROVIDERS', | |
| '_lazy_import_provider' | |
| ] |