feat: Fan Out core component#4925
Open
superleomori wants to merge 10 commits into
Open
Conversation
Adds a new FanOut component that reads an array from the upstream payload and emits one downstream event per element. - Input: arrayExpression (evaluated via ExpressionContext) - Output: one fanout.item event per element on the "item" channel - Each payload includes: item, index, totalCount - Empty array → Pass() with no events emitted - Modeled on readMemory oneByOne emit pattern Closes #3312 Related to #4921 Signed-off-by: Leo (OpenClaw Agent) <leo@superplane.com>
|
👋 Commands for maintainers:
|
Collaborator
|
/sp start |
|
😢 Failed to start environment See Logs: |
Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com>
011c120 to
e26abe9
Compare
Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Register fanOut in componentBaseMappers and eventStateRegistries so the canvas shows the split icon, array expression specs, and item-channel execution states instead of the noop fallback. Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com>
4be0d5f to
1db80eb
Compare
Register fanOut in the experimental features registry so the component picker shows it when the org enables the feature, matching Runner rollout. Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Fan Out is a generally available core component like Filter and Merge. Signed-off-by: Igor Šarčević <igor@operately.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Šarčević <igor@operately.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds a new Fan Out core component that reads an array from the upstream payload and emits one downstream event per element — a first-class fan-out primitive for SuperPlane canvases.
Modeled on the existing "One By One" emit mode pattern.
What's new\n\n****\n- config field (expression type) — evaluated against the incoming event\n- Emits one event per element on the output channel\n- Each payload contains: , , \n- Empty array → (no events, no failure)\n- Reflect-based fallback handles typed slices from expression engine\n\nRegistry — component registered in \n\n## Tests\n\n4 unit tests covering: normal fan-out, empty array, non-array expression error, missing config error.\n\n\n\n## Closes\n\nCloses #3312\nRelated to #4921