Build
Compile a Wasm component against a compatible SDK.
ZavoBot scripts are Rust components. The SDK separates immutable snapshots, checked command requests, lifecycle state, and declarative UI so the host—not a script—owns unsafe resources.
use zavobot_sdk::{Script, ScriptOutput, UiDocument, UiValidationError};
use zavobot_sdk::{ExecutionContext, RenderContext};
struct MyScript;
impl Script for MyScript {
type Error = UiValidationError;
fn on_snapshot(
&mut self,
_context: &ExecutionContext<'_>,
) -> Result<ScriptOutput, Self::Error> {
Ok(ScriptOutput::idle())
}
fn render_ui(
&self,
context: &RenderContext<'_>,
) -> Result<UiDocument, Self::Error> {
UiDocument::empty(context.now.get())
}
}Read one coherent observed generation instead of racing mutable client state.
Every action declares capability, deadline, intent, and meaningful postcondition.
Render bounded host-owned controls without arbitrary native window access.
Replay snapshots, host events, action acceptance, expiry, and duplicate requests.
The package binds code and intent together before the Store ever sees it.
Compile a Wasm component against a compatible SDK.
Bind identity, capabilities, SDK range, and immutable source revision.
Produce deterministic metadata, component digest, key ID, and Ed25519 signature.
Reject noncanonical, oversized, tampered, unsupported, or mismatched artifacts.