One conversation turn
Bell, journal, think, act, finish
A step is one model request plus the tools it calls. A turn contains zero or more steps.
Playback
01 / 12 · broadcast
Ring the bell
followup() → agent/inbox/insertedYou submit a new assignment and ring the bell.
Agent.followup() puts a UserMessage in inbox.next-turn and calls wakeDriver. inject() does not wake it; steer() wakes it but targets next-step.
Three ways to add a note
followup()Ring the bell and submit new work.
next-turn · wakes
The user presses Enter in chat
steer()Call through the door while work is underway.
next-step · wakes
Mid-turn guidance or continuing after Plan mode
inject()Slide a note under the door without ringing.
next-step · does not wake
Runtime context, skill bodies, and time
The official turn skeleton
turn/start
claim next-step + one queued message
assemble prompt + tool schemas
-> agent/pre-step reject | enter
reject or empty first enter → close a zero-step turn
step/start
append user/message
deriveMessages() projects history
agent/request → llm/stream → chunk* → assistant/message
tool/call* → pre-execute → execute → post-execute → tool/result*
step/end
another request owed, or next-step has input → next step
-> agent/turn-stopping serial, no next()
turn/end