The room turn moderator — injected (like the transcript sink / run finalizer) so the engine stays
framework-agnostic. Given one turn's context, it returns the orderedAgentSessionIDs that should
speak next (empty = nobody; the room goes quiet / hands back to the human). The engine triggers them
serially via the floor. The agent-layer implementation is a fast LLM prompt run; see
@memberjunction/ai-agentsRealtimeTurnModerator. When no moderator is set the engine falls back to the
per-agent addressed matchers.
The room turn moderator — injected (like the transcript sink / run finalizer) so the engine stays framework-agnostic. Given one turn's context, it returns the ordered
AgentSessionIDs that should speak next (empty = nobody; the room goes quiet / hands back to the human). The engine triggers them serially via the floor. The agent-layer implementation is a fast LLM prompt run; see@memberjunction/ai-agentsRealtimeTurnModerator. When no moderator is set the engine falls back to the per-agent addressed matchers.