Router Steps
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
selector | Callable[[StepInput], ...] | Callable[[StepInput, list], ...] | None | Function to select steps dynamically. Can optionally accept step_choices as second parameter |
choices | WorkflowSteps | Required | Available steps for selection. Supports nested lists (becomes Steps container) |
name | Optional[str] | None | Name of the router step |
description | Optional[str] | None | Description of the router step |
human_review | Optional[HumanReview] | None | All HITL settings in a single config. See HumanReview Config. |
requires_confirmation | bool | False | Pause for user confirmation before executing selected route |
confirmation_message | Optional[str] | None | Message shown to user when requesting confirmation |
requires_user_input | bool | False | Pause for user to select route(s) instead of using selector. See Router HITL. |
user_input_message | Optional[str] | None | Message shown to user when requesting route selection |
allow_multiple_selections | bool | False | Allow user to select multiple routes |
requires_output_review | bool | False | Pause after the selected route completes to review its output. See Output Review. |
output_review_message | Optional[str] | None | Message shown to user during output review |
hitl_max_retries | int | 3 | Max re-executions when an output review is rejected with OnReject.retry |
hitl_timeout | Optional[int] | None | Seconds before the HITL pause auto-resolves. See Timeout. |
on_timeout | Union[OnTimeout, str] | OnTimeout.cancel | Action when the HITL timeout expires: approve, reject, cancel |
on_reject | OnReject | OnReject.skip | Action when rejected: skip, cancel, retry |
Selector Return Types
The selector function can return any of the following:
| Return Type | Description |
|---|---|
str | Step name as string - Router resolves it from choices |
Step | Step object directly |
List[Step] | List of steps for chaining execution |
Selector Function Signatures
Basic Signature
1def selector(step_input: StepInput) -> Union[str, Step, List[Step]]:2 ...Extended Signature (with step_choices)
1def selector(step_input: StepInput, step_choices: list) -> Union[str, Step, List[Step]]:2 ...The step_choices parameter provides access to the prepared Step objects from Router.choices, enabling dynamic selection based on available options.
Async Support
Both signatures support async functions:
1async def selector(step_input: StepInput, step_choices: list) -> Union[str, Step, List[Step]]:2 ...