Picks the agent and route for one message, or null when no turn starts.
The order is MJ's: the first tagged agent the host allows, a direct thread reply (ParentID) to
a runnable agent, a continuity candidate that a routing decision chose (DecisionRouted), and
then (under Always only) the last agent that answered, the conversation's pinned agent, the
host's default agent, and the conversation manager. A message that tags a person, replies to
another person's message, or receives a NoAgent routing decision with no allowed @Agent tag
starts no turn. A candidate the host doesn't allow is skipped.
A continuity or default candidate that isKnownAgent doesn't recognise falls back to the
conversation manager, as MJ always has, rather than to the next route. A tagged agent is taken
as tagged; a ThreadReply target must pass isRunnableAgent.
Picks the agent and route for one message, or null when no turn starts.
The order is MJ's: the first tagged agent the host allows, a direct thread reply (
ParentID) to a runnable agent, a continuity candidate that a routing decision chose (DecisionRouted), and then (underAlwaysonly) the last agent that answered, the conversation's pinned agent, the host's default agent, and the conversation manager. A message that tags a person, replies to another person's message, or receives aNoAgentrouting decision with no allowed@Agenttag starts no turn. A candidate the host doesn't allow is skipped.A continuity or default candidate that
isKnownAgentdoesn't recognise falls back to the conversation manager, as MJ always has, rather than to the next route. A tagged agent is taken as tagged; aThreadReplytarget must passisRunnableAgent.