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