Skip to main content

secure_exec_sidecar/
lib.rs

1#![forbid(unsafe_code)]
2
3//! Native sidecar scaffold that composes the kernel and execution crates.
4
5pub(crate) mod bootstrap;
6pub(crate) mod bridge;
7pub(crate) mod execution;
8pub mod extension;
9pub(crate) mod filesystem;
10pub mod generated_protocol;
11#[allow(dead_code)]
12pub(crate) mod json_rpc;
13pub mod limits;
14#[cfg(target_os = "macos")]
15pub(crate) mod macos_fs;
16pub(crate) mod metadata;
17pub(crate) mod plugins;
18pub mod protocol;
19pub mod service;
20pub(crate) mod state;
21pub mod stdio;
22pub(crate) mod tools;
23pub(crate) mod vm;
24pub mod wire;
25
26pub use extension::{
27    Extension, ExtensionContext, ExtensionFuture, ExtensionInterruptRequest,
28    ExtensionInterruptResponse, ExtensionResponse,
29};
30pub use service::{DispatchResult, NativeSidecar, NativeSidecarConfig, SidecarError};
31pub use state::SidecarRequestTransport;
32
33use wire::{DEFAULT_MAX_FRAME_BYTES, PROTOCOL_NAME, PROTOCOL_VERSION};
34
35pub trait NativeSidecarBridge: secure_exec_bridge::HostBridge {}
36
37impl<T> NativeSidecarBridge for T where T: secure_exec_bridge::HostBridge {}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq)]
40pub struct SidecarScaffold {
41    pub package_name: &'static str,
42    pub binary_name: &'static str,
43    pub kernel_package: &'static str,
44    pub execution_package: &'static str,
45    pub protocol_name: &'static str,
46    pub protocol_version: u16,
47    pub max_frame_bytes: usize,
48}
49
50pub fn scaffold() -> SidecarScaffold {
51    let kernel = secure_exec_kernel::scaffold();
52    let execution = secure_exec_execution::scaffold();
53
54    SidecarScaffold {
55        package_name: env!("CARGO_PKG_NAME"),
56        binary_name: env!("CARGO_PKG_NAME"),
57        kernel_package: kernel.package_name,
58        execution_package: execution.package_name,
59        protocol_name: PROTOCOL_NAME,
60        protocol_version: PROTOCOL_VERSION,
61        max_frame_bytes: DEFAULT_MAX_FRAME_BYTES,
62    }
63}