Skip to main content

heyo_sdk/
lib.rs

1//! Rust SDK for the Heyo cloud sandbox API.
2//!
3//! Mirrors `sdk-ts/` (`@heyocomputer/sdk`). The public surface is centered
4//! on three handles:
5//!
6//! - [`Sandbox`] — VM lifecycle, with `.commands()` and `.files()` sub-clients
7//!   and an interactive WebSocket [`ShellSession`].
8//! - [`Database`] — cloud sqlite databases with exec, connection tokens, and
9//!   checkout/checkin for offline editing.
10//! - [`HeyoClient`] — the underlying HTTP transport. Built from
11//!   [`HeyoClientOptions`] (or constructed implicitly by the high-level
12//!   `create`/`connect` helpers).
13//!
14//! ```no_run
15//! use heyo_sdk::{Sandbox, SandboxCreateOptions, HeyoClientOptions};
16//!
17//! # async fn run() -> Result<(), heyo_sdk::HeyoError> {
18//! let sandbox = Sandbox::create(
19//!     SandboxCreateOptions { image: Some("ubuntu:24.04".into()), ..Default::default() },
20//!     HeyoClientOptions::default(),
21//! ).await?;
22//! let out = sandbox.commands().run("echo hi", Default::default()).await?;
23//! assert_eq!(out.stdout.trim(), "hi");
24//! sandbox.kill().await?;
25//! # Ok(()) }
26//! ```
27
28mod archive;
29mod client;
30mod commands;
31mod daemons;
32mod databases;
33mod errors;
34mod files;
35mod networks;
36mod p2p;
37mod proxy;
38mod sandbox;
39mod shell;
40mod types;
41
42pub use archive::{archive_dir, ArchiveDirOptions, ArchiveResult};
43pub use client::{HeyoClient, HeyoClientOptions, RequestOptions, DEFAULT_LOCAL_BASE_URL};
44pub use commands::Commands;
45pub use daemons::{DaemonInfo, DaemonStatus, Daemons};
46pub use databases::{
47    BatchResult, CheckinOptions, CheckinResult, CheckoutResult, ConnectionScope,
48    ConnectionToken, ConnectionTokenInfo, ConnectionTokenOptions, Database,
49    DatabaseCreateOptions, DatabaseInfo, ExecOptions, ExecResult, SqlStatement,
50    SqlTransactionMode, SqlValue,
51};
52pub use errors::HeyoError;
53pub use files::{FileContent, FileOptions, Files};
54pub use networks::{
55    Network, NetworkCreateOptions, NetworkInfo, NetworkMember, NetworkMemberKind,
56    NetworkMemberRegistration, NetworkService, NetworkUpdateOptions, ServiceRoute,
57};
58pub use p2p::P2pTunnel;
59pub use sandbox::Sandbox;
60pub use shell::{ShellEvent, ShellOptions, ShellReconnectOptions, ShellSession};
61pub use types::{
62    BoundUrl, CommandResult, CommandRunOptions, PublicImage, SandboxCreateOptions,
63    SandboxDriver, SandboxInfo, SandboxRegion, SandboxSize, SandboxStatus,
64};