Skip to content

v26.5.0-alpha.9

Pre-release
Pre-release

Choose a tag to compare

@StarsailsClover StarsailsClover released this 12 Sep 07:56
· 2 commits to main since this release
v26.5-alpha.9
2bcca20

mdl v26.5.0-alpha.9 — declarative orchestration flows (mdl game flow)

Adds a flow DSL for ordered, fail-fast composition of the existing
primitives:

mdl game flow --file flow.json

{"name":"demo","steps":[
{"type":"wait-ready","timeoutSecs":120},
{"type":"wait-condition","timeoutSecs":60,"pollMs":500,
"if":{"query":{"type":"status"},"field":"inGame","op":"eq","value":true}},
{"type":"action","command":{"type":"chat","text":"go"}},
{"type":"schedule","op":"add","name":"hb","periodTicks":100,
"commands":[{"type":"ping"}]},
{"type":"macro","op":"play","name":"demo"},
{"type":"sleep","secs":2.5}]}

Design discipline: the DSL does NOT invent execution semantics. Every
step is submitted through the existing Despotes channel, so there is no
second game-control protocol. Parsing, strict validation (1-256 steps,
bounded timeouts, op whitelists) and the six-operator dot-path condition
evaluator are pure, unit-tested code; the executor reports
step-indexed failures (step [N] : ...).

wait-condition evaluates exists/eq/ne/gt/lt/contains against any
dot-path of an arbitrary query response.

Real bug found and fixed during verification: flow files written by
PowerShell Set-Content carry a UTF-8 BOM and the raw parse rejected
them. The reader now reuses the v26.3 BOM-tolerance path
(jsonio::strip_bom) with a regression test.

Tests: 28 lib + 193 bin, zero warnings.

Instability disclaimer: alpha pre-release - expect rough edges.