Pipeline DSL
JSON contract
The only thing that crosses the harmont-eval boundary.
harmont-eval is a subprocess of harmont-api, not a library. The
JSON it writes to stdout is the only thing that crosses that
boundary, which is what makes the DSL safe to evolve: a malformed
pipeline can never crash the API.
Shape
{
"version": "1",
"steps": [
{"type": "command", "key": "test", "label": "Test", "command": ["npm test"]},
{"type": "wait"}
]
}Step types: command, wait, block, input, trigger, group.
Optional fields are omitted (not null); command is always an
array of strings.
Source of truth
cidsl/lisp/src/— the producer (json-objectfilters omitted fields).api/src/Harmont/Pipeline/Eval.hs— the consumer; shells out toharmont-evaland parses the result.- Any change to the contract must land in both at the same time, plus
the Python codegen in
cidsl/py/sci_dsl/codegen.py.