suna/backend/triggers/registry.py

51 lines
1.9 KiB
Python
Raw Normal View History

2025-07-14 19:49:18 +08:00
import warnings
warnings.warn(
"triggers.registry is deprecated. Use triggers.domain.services.ProviderRegistryService instead.",
DeprecationWarning,
stacklevel=2
)
2025-06-30 18:57:34 +08:00
from typing import Dict, List, Optional
from .core import TriggerProvider, TriggerType
2025-07-10 15:02:15 +08:00
from .providers import ScheduleTriggerProvider
2025-06-30 18:57:34 +08:00
class TriggerRegistry:
"""Registry for trigger providers."""
def __init__(self):
self._providers: Dict[TriggerType, TriggerProvider] = {}
self._initialize_default_providers()
def _initialize_default_providers(self):
"""Initialize default trigger providers."""
2025-07-10 15:02:15 +08:00
self.register_provider(ScheduleTriggerProvider())
2025-06-30 18:57:34 +08:00
def register_provider(self, provider: TriggerProvider):
"""Register a trigger provider."""
self._providers[provider.trigger_type] = provider
def get_provider(self, trigger_type: TriggerType) -> Optional[TriggerProvider]:
"""Get a trigger provider by type."""
return self._providers.get(trigger_type)
def get_all_providers(self) -> Dict[TriggerType, TriggerProvider]:
"""Get all registered providers."""
return self._providers.copy()
def get_supported_types(self) -> List[TriggerType]:
"""Get list of supported trigger types."""
return list(self._providers.keys())
def get_provider_schemas(self) -> Dict[str, Dict]:
"""Get configuration schemas for all providers."""
schemas = {}
for trigger_type, provider in self._providers.items():
trigger_type_str = trigger_type.value if hasattr(trigger_type, 'value') else str(trigger_type)
schemas[trigger_type_str] = provider.get_config_schema()
return schemas
def is_supported(self, trigger_type: TriggerType) -> bool:
"""Check if a trigger type is supported."""
return trigger_type in self._providers
trigger_registry = TriggerRegistry()