pub enum Command {
Infer {
prompt: String,
max_tokens: u32,
images: Vec<u32>,
},
Open {
path: String,
},
Slice {
handle: u32,
offset: u64,
len: u64,
},
SliceBytes {
handle: u32,
offset: u64,
len: u64,
},
PageText {
handle: u32,
page: u32,
},
PageImage {
handle: u32,
page: u32,
},
Emit {
progress: Value,
},
Done {
result: Value,
},
Fail {
code: String,
message: String,
},
}Expand description
What a guest asks the host to do, returned from its init/step exports.
Variants§
Infer
Run a prompt against the job’s model.
Fields
max_tokens: u32Upper bound on tokens generated. A guest can also end generation
early by returning TokenAction::Stop from its on_token export.
images: Vec<u32>Images to accompany the prompt, named by handle.
Handles rather than bytes, for the same reason file contents are not handed over: an image can be tens of megabytes, and routing it through guest memory would put the 4 GiB wasm32 ceiling back in play for no benefit. The host already holds the bytes; it can pass them to the model directly.
Requires a model with vision capability. Empty for ordinary
text-only inference, which is why it is #[serde(default)] — a block
compiled before this field existed still deserializes.
Open
Open a file. Capability-checked against the job’s spec.
Yields a handle and a length rather than contents — see the crate docs on why bulk data does not cross this boundary.
Slice
Pull one bounded window of an open file into guest memory.
The guest picks len, so the guest sets its own memory ceiling.
Fields
handle: u32Handle from a previous Command::Open.
offset: u64Byte offset to read from. u64 so that files far larger than a guest
could hold remain fully addressable.
len: u64Maximum bytes to return. The host may return fewer; see
Event::Sliced.
SliceBytes
Pull one bounded window of an open file as raw bytes.
The binary counterpart to Command::Slice. Prefer Slice for text:
it needs no encoding, and it handles the character-boundary problem for
you. This exists for blocks that genuinely need bytes — inspecting an
image header, say — and pays base64’s cost to carry them.
Fields
handle: u32Handle from a previous Command::Open.
PageText
Extract one page of a document as text.
Fails when the document has no text layer; check
MediaKind::Document::has_text_layer first.
PageImage
Render one page of a document to an image.
Yields a new handle referring to the rendered image, which can then be
named in Command::Infer. That indirection is deliberate: the image
stays host-side like every other bulk value, and a rendered page is
usable exactly wherever a file-backed image is.
Emit
Report progress to whoever is watching the job’s event stream.
Done
Finish successfully with this payload.
Fail
Give up. The job ends with this code and message, and no result.
Fields
code: StringMachine-readable code; see error_codes.