#![deny(unsafe_code)]
#![warn(missing_docs)]
mod adapter;
mod discover;
mod manager;
mod worker;
pub use adapter::{AdapterFactory, BoxRuntimeAdapter, RuntimeAdapter};
pub use discover::{discover_javascript, discover_python, DiscoveredBinary};
pub use manager::RuntimeManager;
pub use worker::WorkerProcess;
use parallax_core::{
ExecutionRequest, ExecutionResult, ExecutionState, RestoreResult, RuntimeCapabilities,
RuntimeKind, RuntimeMetadata, RuntimeStatus,
};
use parallax_ir::PirDocument;
use parallax_security::SandboxPolicy;
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct RuntimeHandle {
pub kind: RuntimeKind,
pub metadata: RuntimeMetadata,
pub capabilities: RuntimeCapabilities,
pub status: RuntimeStatus,
}
pub type SharedManager = Arc<RuntimeManager>;
#[derive(Clone, Debug)]
pub struct CaptureOutcome {
pub execution: ExecutionResult,
pub pir: PirDocument,
pub state: ExecutionState,
}
pub async fn execute_and_capture(
manager: &RuntimeManager,
request: ExecutionRequest,
capture_names: &[String],
policy: &SandboxPolicy,
) -> parallax_core::Result<CaptureOutcome> {
manager
.execute_and_capture(request, capture_names, policy)
.await
}
pub async fn restore_bindings(
manager: &RuntimeManager,
runtime: RuntimeKind,
pir: &PirDocument,
policy: &SandboxPolicy,
) -> parallax_core::Result<RestoreResult> {
manager.restore_bindings(runtime, pir, policy).await
}