When the turn manager determines it's an agent's turn (checkTurn.allowed), the rules engine's evaluateDecision() could still override the model to no-reply with reason 'rule_match_no_end_symbol'. This happened because: 1. The sender of the triggering message (another agent) was not in the humanList, so the rules fell through to the end-symbol check. 2. getLastChar() operates on the full prompt (including system content like Runtime info), so it never found the end symbol even when the actual message ended with one. Fix: return early from before_model_resolve after the turn check passes, skipping the rules-based no-reply override entirely. The turn manager is the authoritative source for multi-agent turn coordination. Tested: 3-agent counting chain ran successfully (3→11) with correct NO_REPLY handling when count exceeded threshold.
6.3 KiB
6.3 KiB