Add steps expression support #15
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces the steps context, allowing graphs to reference outputs and conclusions from previously executed nodes using the same
${{ steps.X.outputs.Y }}and${{ steps.X.conclusion }}syntax borrowed from GitHub Actions expressions.I added a data struct called
HierarchicalMapthat chains lookups through parent execution contexts. This means when a workflow spawns child execution states (eg in concurrent for loop), each child can see step results from its ancestors while only storing its own local data. The step cache only tracks primitive outputs under 64KB and records whether each step concluded with success or failure based on which execution port it flows through.Also, GitHub Actions that dynamically create outputs not defined in their schema, a new
ForceSetoption allows writing to output ports that don't have formal definitions.The syntax also works in non github graphs, so the system will probably have to remain compatible unless there is a good reason to break it.