1#![deny(unsafe_code)]
4#![warn(missing_docs)]
5
6mod adapter;
7mod discover;
8mod manager;
9mod worker;
10
11pub use adapter::{AdapterFactory, BoxRuntimeAdapter, RuntimeAdapter};
12pub use discover::{discover_javascript, discover_python, DiscoveredBinary};
13pub use manager::RuntimeManager;
14pub use worker::WorkerProcess;
15
16use parallax_core::{
17 ExecutionRequest, ExecutionResult, ExecutionState, RestoreResult, RuntimeCapabilities,
18 RuntimeKind, RuntimeMetadata, RuntimeStatus,
19};
20use parallax_ir::PirDocument;
21use parallax_security::SandboxPolicy;
22use std::sync::Arc;
23
24#[derive(Clone, Debug)]
26pub struct RuntimeHandle {
27 pub kind: RuntimeKind,
29 pub metadata: RuntimeMetadata,
31 pub capabilities: RuntimeCapabilities,
33 pub status: RuntimeStatus,
35}
36
37pub type SharedManager = Arc<RuntimeManager>;
39
40#[derive(Clone, Debug)]
42pub struct CaptureOutcome {
43 pub execution: ExecutionResult,
45 pub pir: PirDocument,
47 pub state: ExecutionState,
49}
50
51pub async fn execute_and_capture(
53 manager: &RuntimeManager,
54 request: ExecutionRequest,
55 capture_names: &[String],
56 policy: &SandboxPolicy,
57) -> parallax_core::Result<CaptureOutcome> {
58 manager
59 .execute_and_capture(request, capture_names, policy)
60 .await
61}
62
63pub async fn restore_bindings(
65 manager: &RuntimeManager,
66 runtime: RuntimeKind,
67 pir: &PirDocument,
68 policy: &SandboxPolicy,
69) -> parallax_core::Result<RestoreResult> {
70 manager.restore_bindings(runtime, pir, policy).await
71}