Skip to main content

vsh/
lib.rs

1//! Native Rust facade for VSH.
2//!
3//! The execution runtime is introduced behind this crate as each security phase is
4//! completed. The facade already exports the canonical types used by both Rust and
5//! Python so adapters cannot invent parallel contracts.
6
7mod artifact;
8mod runtime;
9
10pub use artifact::ArtifactError;
11
12pub use runtime::{
13    ArtifactLimits, ExecutionBudget, Receipt, ReceiptDetail, RunMode, RunRequest, Runtime,
14    RuntimeConfig, RuntimeDecision, StageTimings, VshError,
15};
16
17pub use vsh_commit::{
18    CommitConfig, CommitError, CommitPlan, CommitPlanError, CommitReceipt, Committer,
19    FaultInjector, FaultPoint, HostError, JournalError, NoFaults, PlanDecodeError,
20    RecoveryConflict, RecoveryReport, RevalidationConflict, SnapshotLimits, VerificationFailure,
21};
22
23pub use vsh_monty::{
24    DEFAULT_VIRTUAL_ROOT, ExecutionError, ExecutionLimitExceeded, ExecutionLimits,
25    ExecutionOutcome, ExecutionStats, InProcessConfig, InProcessMonty, MontyFailurePhase,
26    MontyObject, MontyType, OsFunctionCall, ResultCompatibility, ResultCompatibilityError,
27    SubprocessConfig, SubprocessMonty, VirtualPathError, VirtualRoot, VirtualRootError,
28    WorkerFailure, WorkerFailureKind, validate_result_compatibility,
29};
30pub use vsh_policy::{
31    AccessKind, AccessSet, CallPolicy, DEFAULT_SECRET_PATTERNS, DeniedAccess, DenyManifest,
32    DenyReason, PatternError, PolicyConfigError, PolicyDecision, PolicyInput, PolicyProfile,
33    PolicyThresholds, ProtectedRule, RiskFlag, RiskManifest, RiskMetrics, TransactionIdentityInput,
34    TransactionPolicy, bind_transaction, read_set_digest, write_set_digest,
35};
36pub use vsh_store::{
37    ApprovalGrant, ApprovalGrantError, BlobStore, BlobStoreError, CommitReservation, DataDirectory,
38    DataDirectoryError, FileStoreConfig, FileTransactionStore, MemoryTransactionStore,
39    TransactionRecord, TransactionStore, TransactionStoreError,
40};
41pub use vsh_types::{
42    ApprovalBinding, ApprovalId, BlobId, ContentVersion, DiffDigest, DiffEntry, DiffKind,
43    DirectoryDigest, FileStamp, IntentDigest, NodeKind, NodeState, ParseDigestError,
44    PlatformFileId, PolicyDigest, PrincipalId, ProgramDigest, ReadSetDigest, RuntimeConfigDigest,
45    SnapshotId, TransactionBinding, TransactionId, TransactionState, TransitionError, VPath,
46    VPathError, WriteSetDigest,
47};
48pub use vsh_vfs::{
49    BaseSnapshot, CanonicalDiff, CanonicalDiffMetrics, CapturedContent, ContentLoadError,
50    ContentLoader, Effect, EffectEvent, EffectOrigin, ReadObservation, SnapshotBuilder,
51    SnapshotError, SnapshotMetrics, VfsError, VfsMetrics, VirtualFs, WritePrecondition,
52};
53
54/// The VSH semantic version shared by native and Python packages.
55pub const VERSION: &str = env!("CARGO_PKG_VERSION");
56
57/// Identify the implementation behind all public SDK surfaces.
58#[must_use]
59pub const fn engine_kind() -> &'static str {
60    "rust"
61}
62
63#[cfg(test)]
64mod tests {
65    use super::*;
66
67    #[test]
68    fn facade_exports_one_versioned_rust_engine() {
69        assert_eq!(VERSION, "0.3.1");
70        assert_eq!(engine_kind(), "rust");
71        assert_eq!(VPath::parse("src/lib.rs").unwrap().as_str(), "src/lib.rs");
72    }
73}