Skip to main content

a3s_box_core/
lib.rs

1//! A3S Box Core - Foundational Types and Abstractions
2//!
3//! This module provides the foundational types, traits, and abstractions
4//! used across the A3S Box MicroVM runtime.
5
6pub 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
26// Re-export commonly used types
27pub 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
58/// A3S Box version
59pub const VERSION: &str = env!("CARGO_PKG_VERSION");
60
61/// Get the A3S home directory.
62///
63/// Resolution order:
64/// 1. `A3S_HOME` environment variable (if set)
65/// 2. `~/.a3s` (via `dirs::home_dir()`)
66/// 3. Fallback to `.a3s` in the current directory
67pub 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}