secure_exec_sidecar/
lib.rs1#![forbid(unsafe_code)]
2
3pub(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}