Expand description
flow.ir async runtime + mlua binding.
Layer 3 of the 4-layer flow.ir stack:
flow-ir-lua— Pure Lua DSL (separate repo, ecosystem-neutral)flow-ir-core— Pure Rust schema + sync interpreter (no mlua, no async)mlua-flow-ir— this crate: re-export offlow-ir-core+AsyncDispatcher+eval_async+fanout_eval+ Luamodule()bindingmlua-swarm-engine— host concerns (Spawner / Worker / Loop / AuthzPolicy / cp_state persist)
All schema types (Node / Expr / JoinMode / EvalError / Dispatcher)
are re-exported verbatim from flow-ir-core so callers can keep a single
import path:
use mlua_flow_ir::{eval, eval_async, AsyncDispatcher, Dispatcher, EvalError, Expr, Node};Structs§
- Extern
Map HashMap-backedExternsimpl for host-side Rust closures.- Memory
Ctx - Default
CtxStorageimpl —Arc<Mutex<Value>>wrapper。 - NoExterns
- Empty registry — every
call_externraisesExternError(parity with canonical “requires opts.externs” error). Used by the externs-less compat wrappers (eval/eval_expr/eval_with_storage).
Enums§
- Eval
Error - Evaluation error.
- Expr
- flow.ir Expr op.
- Join
Mode - Fanout join semantics (Promise / futures combinators).
- Node
- flow.ir Node kind.
Traits§
- Async
Dispatcher - Async dispatcher trait — async 版
Dispatcher。 - CtxStorage
- Ctx backend trait —
eval(_with_storage)系が ctx state を touch する 唯一の経路。&selfwrite (interior mutability) で 走行中の Flow と 外部 task が同じ ctx を共有 できる (= dispatch().await suspend 中に外部 task がctx.writeで State 注入 → resume 後 Step が read で観測、 という dynamic injection 経路を成立させる)。 - Dispatcher
- Dispatcher callback: resolves a
Step.refagainst the provided input, returns the step’s raw output value. - Externs
- Extern registry: resolves a
call_extern.refagainst evaluated args and returns the value. Mirror of canonicalopts.externs(flow-ir-luainterpreter.lua): each entry MUST be a pure function — no side effects, no flow control, value-shape manipulation only.
Functions§
- eval
- Legacy Value-passing sync evaluator — backward compat wrapper around
eval_with_storage+MemoryCtx.Valueを所有権で受け取り、 内部でMemoryCtx::new(ctx)を使って storage 版に委譲、 終了後の snapshot を返す。 - eval_
async - Legacy Value-passing async evaluator — backward compat wrapper around
eval_async_with_storage+MemoryCtx. 既存 caller (= dynamic injection を要求しない用途) は引き続きこの API で OK。 - eval_
async_ externs eval_async+ externs registry forcall_externExpr resolution.- eval_
async_ with_ storage - Evaluate a
Nodeagainst a context value asynchronously, using the given async dispatcher forStepresolution. - eval_
async_ with_ storage_ externs eval_async_with_storage+ externs registry forcall_externExpr resolution.externsmust beSyncso the recursive future staysSend(host executors spawn it across threads).- eval_
expr - Evaluate an
Expragainst a context value, returning the resolved JSON value. Externs-less compat wrapper —call_externraisesExternError. - eval_
expr_ with_ externs eval_expr+ externs registry forcall_externExpr resolution.- eval_
externs eval+ externs registry forcall_externExpr resolution.- eval_
with_ storage - Storage-backed sync evaluator —
CtxStorage経由で ctx を touch する正本。 - eval_
with_ storage_ externs eval_with_storage+ externs registry forcall_externExpr resolution.- is_
truthy - JSON value の truthy 判定 (= flow.ir Branch cond / Loop cond で使う)。 Bool は値そのまま、 null/false 以外は truthy (Lua / JS と整合)。
- module
- Register the flow module table with Lua.
- read_
path - Read a path from a JSON value. Supports simple
$.a.b.cform. - write_
path - Write a value at the path location inside ctx, returning the updated ctx.
outmust be aPathExpr.