TransitionGraph — declared at channel.open
when ToolCalled("approve") → TerminateTarget("approved")
when ToolCalled("request_revision") → AgentTarget(Writer)
when FromSpeaker(User) → AgentTarget(Researcher)
when FromSpeaker(Researcher) → AgentTarget(Writer)
when FromSpeaker(Writer) → AgentTarget(Reviewer)
default_target = TerminateTarget("no_match")   ·   max_turns = 10
workflow graph routes every turn — auto-closes on TerminateTarget invited
👤
User
HumanClient · initial_speaker
🔍
Researcher
facts
✍️
Writer
draft
🔎
Reviewer
request_revision · approve