1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#![cfg_attr(docsrs, feature(doc_cfg))]
#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms)]
#![deny(unreachable_pub)]

//! homestar-runtime is a determistic Wasm runtime and effectful workflow/job
//! system intended to be embedded inside or run alongside IPFS or another
//! content-addressable store.
//!
//! You can find a more complete description [here].
//!
//! ## Related crates/packages:
//!
//! - [homestar-invocation]
//! - [homestar-wasm]
//! - [homestar-workflow]
//!
//! ## Getting Started
//!
//! For getting started with Homestar in general, please check out our
//! [README] and [Quickstart] guide.
//!
//! ## Feature flags
//!
//! - `default`: Enables the default set of features.
//! - `dev`: Enables a dev-friendly, lighter set of features for development.
//! - `ansi-logs`: Enables ANSI color codes in logs.
//! - `console`: Enables [tokio console] debugging.
//! - `ipfs`: Enables [IPFS]-related integration and settings.
//! - `monitoring`: Enables node monitoring-related features and dependencies.
//! - `profile`: Enables profiling-related features and dependencies.
//! - `test-utils`: Enables utilities for unit testing and benchmarking.
//! - `wasmtime-default`: Enables the default set of features for the embedded
//!                       [Wasmtime] runtime.
//! - `websocket-notify`: Enables websocket notifications.
//!
//! ## Examples
//!
//! Check out our [examples] directory to explore some Homestar
//! scenarios and see the system in action.
//!
//! [examples]: https://github.com/ipvm-wg/homestar/tree/main/examples
//! [here]: https://github.com/ipvm-wg/spec
//! [homestar-invocation]: https://docs.rs/homestar-invocation
//! [homestar-workflow]: https://docs.rs/homestar-workflow
//! [homestar-wasm]: https://docs.rs/homestar-wasm
//! [IPFS]: https://ipfs.tech
//! [Quickstart]: https://github.com/ipvm-wg/homestar/blob/main/README.md#quickstart
//! [README]: https://github.com/ipvm-wg/homestar/blob/main/README.md
//! [tokio console]: https://github.com/tokio-rs/console/tree/main/tokio-console
//! [Wasmtime]: https://github.com/bytecodealliance/wasmtime

pub mod channel;
pub mod cli;
pub mod daemon;
pub mod db;
mod event_handler;
mod logger;
pub mod network;
mod receipt;
pub mod runner;
mod scheduler;
mod settings;
mod tasks;
/// Test utilities.
#[cfg(any(test, feature = "test-utils"))]
#[cfg_attr(docsrs, doc(cfg(feature = "test-utils")))]
pub mod test_utils;
mod worker;
pub mod workflow;

pub use db::{utils::Health, Db};
pub(crate) mod libp2p;
pub use logger::*;
pub(crate) mod metrics;
#[cfg(feature = "websocket-notify")]
pub use event_handler::notification::{network::NetworkNotification, receipt::ReceiptNotification};
#[allow(unused_imports)]
pub(crate) use event_handler::EventHandler;
pub use network::webserver::PrometheusData;
pub use receipt::{Receipt, RECEIPT_TAG, VERSION_KEY};
pub use runner::{NodeInfo, Runner};
pub(crate) use scheduler::TaskScheduler;
pub use settings::Settings;
pub(crate) use worker::Worker;
pub use workflow::WORKFLOW_TAG;