From 385990ab904777c67b6d856002a2640aee5e28f2 Mon Sep 17 00:00:00 2001 From: zhi Date: Sat, 28 Feb 2026 12:41:46 +0000 Subject: [PATCH] fix: turn check runs independently of evaluateDecision Turn order should be enforced for ALL messages, not just non-human ones. Previously, human messages bypassed turn check because they go through human_list_sender path with shouldUseNoReply=false. Now turn check always runs when channel has turn state. --- plugin/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugin/index.ts b/plugin/index.ts index 2a0f2e8..2dd9411 100644 --- a/plugin/index.ts +++ b/plugin/index.ts @@ -607,8 +607,9 @@ export default { } } - // Turn-based check: if channel has turn order, only current speaker can respond - if (!rec.decision.shouldUseNoReply && derived.channelId) { + // Turn-based check: ALWAYS check turn order regardless of evaluateDecision result. + // This ensures only the current speaker can respond even for human messages. + if (derived.channelId) { ensureTurnOrder(api, derived.channelId); const accountId = resolveAccountId(api, ctx.agentId || ""); if (accountId) {