Skip to main content

Module engine

Module engine 

Source
Expand description

The engine: what turns a capability call into an execution anybody can watch.

It owns no behaviour of its own. Everything it runs is a capability of the registry, reached through crate::capability::Context::execute — the same executor MCP, the HTTP routes, the command line and the benchmarks call — so a browser, an agent and a terminal reach one implementation and there is no second copy of anything to drift.

  submit ── validate ── create ── queue ──► worker thread
                                              │
                         Context.progress ────┤ ctx.execute(id, input)
                                              │        │
                                              │        └─► the capability's own handler
                                              ▼
                                      ExecutionStore ──► subscribers ──► WebSocket

It is deliberately small: an in-memory store, a bounded number of worker threads, and a cooperative cancellation flag. There is no durable queue, no retry and no scheduler, because nothing here is a background job system — it is a way to watch a call that takes longer than a request should be held open for.

Structs§

ExecutionEngine
The execution engine of one process.

Enums§

SubmitError
Why an execution was not accepted. Refused before anything is created, so a client that is told no knows nothing started.

Functions§

runnable
Is this capability one an execution may run at all? The same question submit asks, answered without submitting, for a projection that lists what a client may start.