mirror of https://github.com/dapr/dapr-agents.git
23 lines
893 B
Python
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
|