wait.human is the AttractorEx mechanism for pausing pipeline execution until a person, service, or test adapter provides an answer.
Core Modules
AttractorEx.Handlers.WaitForHumanAttractorEx.HumanGateAttractorEx.InterviewerAttractorEx.Interviewers.PayloadAttractorEx.Interviewers.*
Flow
When the engine reaches a wait.human node:
- Outgoing edges are converted into normalized choices.
- The runtime looks for an answer in context first.
- If no answer is present, an interviewer adapter is invoked.
- The answer is normalized into a single or multi-select payload.
- The handler returns an
AttractorEx.Outcomewith suggested next targets.
Supported Interviewers
The library ships with several adapters:
AutoApprovefor deterministic test or local automation flows.Consolefor terminal-driven interaction.Callbackfor embedding custom functions.Queuefor list- orAgent-backed scripted answers.Recordingfor wrapping another interviewer while capturing events.Serverfor HTTP-backed pending-question workflows.
Question Model
AttractorEx.Interviewers.Payload normalizes questions and answers into a shared contract with fields like:
typeoptionsdefaultmultiplerequiredmetadata.input_mode
That shared shape is what allows the HTTP server, console adapter, tests, and custom callbacks to behave consistently.
Routing Semantics
wait.human supports:
- direct choice keys
- labels
- node IDs
- structured answer payloads
- defaults on blank answers or timeouts
- multi-select answers
- skip and timeout signaling
If a response cannot be matched, the handler falls back to the first outgoing choice, which keeps the pipeline executable even under ambiguous input.