dapr-agents/dapr_agents/executors/base.py

23 lines
893 B
Python

from dapr_agents.types.executor import ExecutionRequest, CodeSnippet, ExecutionResult
from abc import ABC, abstractmethod
from pydantic import BaseModel
from typing import List, ClassVar
class CodeExecutorBase(BaseModel, ABC):
"""Abstract base class for executing code in different environments."""
SUPPORTED_LANGUAGES: ClassVar[set] = {"python", "sh", "bash"}
@abstractmethod
async def execute(self, request: ExecutionRequest) -> List[ExecutionResult]:
"""Executes the provided code snippets and returns results."""
pass
def validate_snippets(self, snippets: List[CodeSnippet]) -> bool:
"""Ensures all code snippets are valid before execution."""
for snippet in snippets:
if snippet.language not in self.SUPPORTED_LANGUAGES:
raise ValueError(f"Unsupported language: {snippet.language}")
return True