mod types;
pub mod local;
#[cfg(feature = "code-exec-docker")]
pub mod docker;
pub use types::{CodeExecutionInput, CodeExecutionResult, ExecFile};
use async_trait::async_trait;
use std::time::Duration;
use crate::core::InvocationContext;
use crate::error::Result;
#[async_trait]
pub trait CodeExecutor: Send + Sync + std::fmt::Debug + 'static {
fn stateful(&self) -> bool {
false
}
fn error_retry_attempts(&self) -> u32 {
2
}
fn timeout(&self) -> Option<Duration> {
Some(Duration::from_secs(30))
}
async fn execute_code(
&self,
ctx: &InvocationContext,
input: CodeExecutionInput,
) -> Result<CodeExecutionResult>;
}