monoloop-contracts
Shared identities, ports, limits, errors, and canonical types for Monoloop.
Hosts and all three product components depend on this crate. It has no I/O and no Tokio runtime of its own.
License: AGPL-3.0-or-later. Commercial: https://frogfish.io
What this crate is / is not
| Is | Is not |
|---|---|
Shared vocabulary (SessionKey, TransactionSubmitRequest, canonical units, …) |
The Monoloop product façade (use monoloop) |
Push delivery ports (transaction_delivery, TransactionDelivery) |
Connector / Interpreter / Loop implementations |
Host-side sink/callback adapters (TransactionEventSink, CompletionCallback) |
Persistence, UI, or tools |
How an assembler uses it (Runtime v2)
This crate alone does not run a transaction. Prefer the façade:
- Depend on
monoloop(or wiremonoloop-loop+ connector + interpreter). - Build
CanonicalInput(e.g.user_text_input("…")). let (delivery, receiver) = transaction_delivery(limits)?;StartedRuntime::start(RuntimeBootstrap { … })— runtime owns its executor.handle.submit(TransactionSubmitRequest { …, delivery }).- Drain
receiver.events/ awaitreceiver.completionon the host side. - Optional:
adapt_event_sink/adapt_completion_callback(inmonoloop-loop) to bridge push receivers into host sinks outside the runtime.
use user_text_input;
let input = user_text_input?;
Full wiring: monoloop examples/fake_echo.rs.
Core submits use TransactionSubmitRequest + transaction_delivery only.
The former sink-shaped TransactionRequest / TransactionRuntime trait were
removed (DECISIONS D-060). Host traits TransactionEventSink /
CompletionCallback remain for out-of-kernel adapters.
Key modules
| Module area | Examples |
|---|---|
| Identity | ChannelId, SessionId, SessionKey, TransactionId, ExchangeId |
| Core submit (v2) | TransactionSubmitRequest, transaction_delivery, TransactionDelivery |
| Host adapters (outside core) | TransactionEventSink, CompletionCallback, FnEventSink, FnCompletionCallback |
| Canonical | CanonicalUnitEvent, ToolRequestState, CanonicalInput |
| Config | InvocationConfig, EffectiveConfig, OptionPolicy, ChannelCapabilities |
| Dialects | DialectDescriptor, DialectFamily |
| Outcomes | TransactionEvent, TransactionEventPayload, TransactionEndEvent, TransactionEndKind |
Normative: doc/TRANSACTION_RUNTIME_V2_SPEC.md, doc/REQUIREMENTS.md.