How one message completes an agent turn
Follow a message from ChannelPlugin through sessionKey, queues, the embedded agent, tool events, and ReplyPayload.
Read the article →Source reading · eight-part route
The hard part is not one model call. It is how message ingress, session ownership, tool execution, policy, and durable state constrain a run together. All eight chapters are now published, from the end-to-end turn through always-on recovery.

Follow a message from ChannelPlugin through sessionKey, queues, the embedded agent, tool events, and ReplyPayload.
Read the article →Read the first connect frame, hello-ok, role and scope policy, event fanout, gap refresh, and slow-consumer boundary.
Read the article →Separate bindings, dmScope, identityLinks, sessionKey/sessionId, and the four temporal semantics: steer, followup, collect, interrupt.
Read the article →Separate workspace bootstrap, system prompt, transcript, memory, and runtime view; then distinguish the durability of pruning and compaction.
Read the article →Follow core, channel, plugin, and node tools through skill guidance, plugin ownership, policy filtering, and typed hook checkpoints.
Read the article →Separate tool policy, sandboxing, exec approval, and elevated mode; follow how sender, tool, resource, and command consent intersect.
Read the article →Separate configured Agents, native subagents, and ACP harnesses; trace child identity, context, authority, completion, and thread binding.
Read the article →Separate heartbeat, automations, background tasks, and restart recovery; trace durable schedules, task ledgers, idempotent delivery, and bounded replay.
Read the article →