Expand description
Sync-first runtime layer for batpak-family operation kits.
This crate is intentionally small at birth. It establishes the runtime layer boundary over batpak core without importing operation dialect, network, protocol-profile, or rendering semantics.
§Quick start
Build a Core, register one operation, invoke it synchronously.
use syncbat::{Core, EffectClass, Handler, HandlerError, HandlerResult, OperationDescriptor};
/// Echoes the input bytes back unchanged.
struct EchoHandler;
impl Handler for EchoHandler {
fn handle(
&mut self,
input: &[u8],
_cx: &mut syncbat::Ctx<'_>,
) -> HandlerResult {
Ok(input.to_vec())
}
}
const ECHO: OperationDescriptor = OperationDescriptor::new(
"echo",
EffectClass::Inspect,
"echo.request",
"echo.ack",
"receipt.echo.v1",
);
let mut builder = Core::builder();
builder.register(ECHO.clone(), EchoHandler).expect("register");
let mut core = builder.build().expect("build");
let result = core.invoke("echo", b"hi".to_vec()).expect("invoke");
assert_eq!(result.output(), b"hi");§Operation names
Operation names follow a stable grammar checked once by
OperationName::new. Downstream code never re-parses; passing a
plain &str to Core::invoke is fine, but pre-validating into
OperationName documents intent and removes per-call grammar
checks.
use syncbat::OperationName;
let name = OperationName::new("bank.commit").expect("grammar");
assert_eq!(name.as_str(), "bank.commit");
assert!(OperationName::new("bad..name").is_err());Re-exports§
pub use builder::CoreBuilder;pub use core::Checkout;pub use core::CheckoutFrame;pub use core::CheckoutResult;pub use core::Core;pub use core::Ctx;pub use error::BuildError;pub use error::ReceiptSinkHandlerCause;pub use error::RuntimeError;pub use handler::Handler;pub use handler::HandlerError;pub use handler::HandlerResult;pub use module::Module;pub use operation::DescriptorValidationError;pub use operation::EffectClass;pub use operation::OperationDescriptor;pub use operation::OperationInput;pub use operation::OperationOutput;pub use operation::OperationRegisterItem;pub use operation::MAX_DESCRIPTOR_REF_BYTES;pub use operation::MAX_OPERATION_NAME_BYTES;pub use operation_name::OperationName;pub use operation_name::OperationNameError;pub use receipt::BatpakReceiptFields;pub use receipt::ReceiptEnvelope;pub use receipt::ReceiptExtensionDrawer;pub use receipt::ReceiptHash;pub use receipt::ReceiptHashPolicy;pub use receipt::ReceiptHasher;pub use receipt::ReceiptOutcome;pub use receipt::ReceiptSink;pub use receipt::ReceiptSinkError;pub use receipt::RecordedReceipt;pub use receipt::SYNCBAT_RECEIPT_EVENT_KIND;pub use register::CacheRegister;pub use register::Register;pub use register::RegisterValidationError;pub use register_store::rebuild_register_from_store;pub use register_store::RegisterOperationActionV1;pub use register_store::RegisterOperationRowV1;pub use register_store::StoreRegisterCatalog;pub use register_store::StoreRegisterCatalogError;pub use register_store::SYNCBAT_REGISTER_EVENT_KIND;pub use store_sink::StoreReceiptSink;pub use store_sink::StoreReceiptSinkError;
Modules§
- builder
- Builder for the synchronous runtime composition root.
- core
- Synchronous runtime composition root.
- error
- Error types for the syncbat runtime shell.
- handler
- Synchronous byte-oriented handler contracts.
- module
- Data-oriented module descriptors.
- operation
- Generic operation metadata for syncbat handlers.
- operation_
name - Single validating constructor for syncbat operation names.
- receipt
- Generic receipt envelope types for syncbat operation runs.
- register
- Durable-facing operation catalog and cache projection.
- register_
store - Batpak-backed durable register catalog rows.
- store_
sink - Batpak-backed receipt sink for syncbat receipt envelopes.
Enums§
- Syncbat
Receipt Namespace - Marker type for syncbat-owned receipt extensions.
Constants§
- SYNCBAT_
EXTENSION_ NAMESPACE - Receipt-extension namespace owned by the syncbat runtime layer.
Functions§
- receipt_
extension_ key - Construct a syncbat receipt-extension key.
- receipt_
extension_ value - Wrap already-encoded bytes as a syncbat receipt-extension value.
Type Aliases§
- Syncbat
Receipt Extension Key - Validated syncbat-owned receipt-extension key.
- Syncbat
Receipt Extension Value - Encoded syncbat-owned receipt-extension value.
Attribute Macros§
- operation
- Generate a syncbat operation descriptor and optional registration function.