1pub mod audit;
7pub mod compose;
8pub mod config;
9pub mod dns;
10pub mod error;
11pub mod event;
12pub mod exec;
13pub mod log;
14pub mod network;
15pub mod operator;
16pub mod platform;
17pub mod pty;
18pub mod scale;
19pub mod security;
20pub mod snapshot;
21pub mod tee;
22pub mod traits;
23pub mod vmm;
24pub mod volume;
25
26pub use audit::{AuditAction, AuditConfig, AuditEvent, AuditOutcome};
28pub use compose::ComposeConfig;
29pub use config::{BoxConfig, ResourceConfig, ResourceLimits};
30pub use error::{BoxError, Result};
31pub use event::{BoxEvent, EventEmitter};
32pub use exec::{ExecChunk, ExecEvent, ExecExit, ExecMetrics, StreamType};
33pub use exec::{ExecOutput, ExecRequest};
34pub use exec::{FileOp, FileRequest, FileResponse};
35pub use network::{IsolationMode, NetworkConfig, NetworkEndpoint, NetworkMode, NetworkPolicy};
36pub use operator::{BoxAutoscaler, BoxAutoscalerSpec, BoxAutoscalerStatus, MetricType};
37pub use platform::Platform;
38pub use pty::PTY_VSOCK_PORT;
39pub use scale::{
40 InstanceDeregistration, InstanceEvent, InstanceHealth, InstanceInfo, InstanceRegistration,
41 InstanceState, ScaleConfig, ScaleRequest, ScaleResponse,
42};
43pub use security::{SeccompMode, SecurityConfig};
44pub use snapshot::{SnapshotConfig, SnapshotMetadata};
45pub use tee::ATTEST_VSOCK_PORT;
46pub use tee::{detect_tee, is_tee_available, TeeCapability, TeeType};
47pub use traits::{
48 AuditSink, CacheBackend, CacheEntry, CacheStats, CredentialProvider, EventBus, ImageRegistry,
49 ImageStoreBackend, MetricsCollector, NetworkStoreBackend, NoopMetrics, PulledImage,
50 SnapshotStoreBackend, StoredImage, VolumeStoreBackend,
51};
52pub use vmm::{
53 Entrypoint, FsMount, InstanceSpec, NetworkInstanceConfig, TeeInstanceConfig, VmHandler,
54 VmMetrics, VmmProvider, DEFAULT_SHUTDOWN_TIMEOUT_MS,
55};
56pub use volume::VolumeConfig;
57
58pub const VERSION: &str = env!("CARGO_PKG_VERSION");
60
61pub fn dirs_home() -> std::path::PathBuf {
68 if let Ok(home) = std::env::var("A3S_HOME") {
69 return std::path::PathBuf::from(home);
70 }
71 dirs::home_dir()
72 .map(|h| h.join(".a3s"))
73 .unwrap_or_else(|| std::path::PathBuf::from(".a3s"))
74}