parallax_runtime/
adapter.rs1use async_trait::async_trait;
4use parallax_core::{
5 ExecutionRequest, ExecutionResult, RestoreResult, RuntimeCapabilities, RuntimeKind,
6 RuntimeMetadata, RuntimeStatus,
7};
8use parallax_ir::PirDocument;
9use parallax_security::SandboxPolicy;
10use std::sync::Arc;
11
12#[async_trait]
14pub trait RuntimeAdapter: Send + Sync {
15 fn kind(&self) -> RuntimeKind;
17
18 fn metadata(&self) -> RuntimeMetadata;
20
21 fn capabilities(&self) -> RuntimeCapabilities;
23
24 async fn probe(&self) -> RuntimeStatus;
26
27 async fn execute(
29 &self,
30 request: ExecutionRequest,
31 policy: &SandboxPolicy,
32 ) -> parallax_core::Result<ExecutionResult>;
33
34 async fn restore(
36 &self,
37 pir: &PirDocument,
38 policy: &SandboxPolicy,
39 ) -> parallax_core::Result<RestoreResult>;
40}
41
42pub type BoxRuntimeAdapter = Arc<dyn RuntimeAdapter>;
44
45pub type AdapterFactory = Arc<dyn Fn() -> BoxRuntimeAdapter + Send + Sync>;