Skip to content

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/inserted

You 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

If the model sees it, it is already logged