Expression sub-language for Condukt workflows.
Workflow document fields contain ${...} placeholders that reference
inputs, prior step outputs, and as bindings introduced by map
steps. Inside a placeholder, the language supports:
- identifiers:
inputs,steps, plus any binding in scope - member access:
inputs.name,steps.fetch.body.title - indexing:
xs[0],obj["key"] - comparison:
==,!=,<,<=,>,>= - boolean:
&&,||,! - literals: strings, integers, floats, booleans, null
- formatters:
${var:json},${var:csv}
When a string field is exactly one ${expr} placeholder, the
underlying value's type is preserved. Otherwise every placeholder is
coerced to a string and concatenated with the surrounding text.
Summary
Functions
Evaluates an expression AST against ctx.
Interpolates a single string. See module docs for the type-preservation rule.
Recursively interpolates ${...} placeholders inside any JSON
value: strings, lists, and maps. Non-string leaves are passed
through unchanged.
Parses an expression string (the contents of a ${...} placeholder)
into an AST.
Returns the sorted list of step ids referenced inside any ${...}
placeholder anywhere in value. Used by the executor to infer
implicit dependencies between steps.
Functions
Evaluates an expression AST against ctx.
Interpolates a single string. See module docs for the type-preservation rule.
Recursively interpolates ${...} placeholders inside any JSON
value: strings, lists, and maps. Non-string leaves are passed
through unchanged.
Parses an expression string (the contents of a ${...} placeholder)
into an AST.
Returns the sorted list of step ids referenced inside any ${...}
placeholder anywhere in value. Used by the executor to infer
implicit dependencies between steps.