From 8f5e5e8e7c4a2d923ce9255708aac5ef6f895147 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Sat, 14 Feb 2026 09:41:42 -0500 Subject: [PATCH] Update comment in _maybe_mute_frame --- .../processors/aggregators/llm_response_universal.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pipecat/processors/aggregators/llm_response_universal.py b/src/pipecat/processors/aggregators/llm_response_universal.py index 8450842c8..0a6e05d6b 100644 --- a/src/pipecat/processors/aggregators/llm_response_universal.py +++ b/src/pipecat/processors/aggregators/llm_response_universal.py @@ -549,12 +549,10 @@ class LLMUserAggregator(LLMContextAggregator): await s.cleanup() async def _maybe_mute_frame(self, frame: Frame): - # Control frames must flow unconditionally — never feed them to mute - # strategies. Without this guard, strategies like - # MuteUntilFirstBotCompleteUserMuteStrategy fire on_user_mute_started - # and broadcast UserMuteStartedFrame before StartFrame is pushed - # downstream, causing downstream processors to receive frames before - # StartFrame and log errors. + # Lifecycle frames should never be muted and should not trigger mute + # state changes. Evaluating mute strategies on StartFrame would + # broadcast UserMuteStartedFrame before StartFrame reaches downstream + # processors. if isinstance(frame, (StartFrame, EndFrame, CancelFrame)): return False